<?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>207522</bug_id>
          
          <creation_ts>2020-02-10 16:56:44 -0800</creation_ts>
          <short_desc>Inline Cache delete by id/val</short_desc>
          <delta_ts>2020-02-25 17:39:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>guijemont</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1617202</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-10 16:56:44 -0800</bug_when>
    <thetext>Make inline caching work for deletes in the baseline jit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617221</commentid>
    <comment_count>1</comment_count>
      <attachid>390324</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-10 17:23:45 -0800</bug_when>
    <thetext>Created attachment 390324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617573</commentid>
    <comment_count>2</comment_count>
      <attachid>390410</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-11 13:05:43 -0800</bug_when>
    <thetext>Created attachment 390410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617792</commentid>
    <comment_count>3</comment_count>
      <attachid>390473</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-11 17:45:51 -0800</bug_when>
    <thetext>Created attachment 390473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617810</commentid>
    <comment_count>4</comment_count>
      <attachid>390477</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-11 18:47:13 -0800</bug_when>
    <thetext>Created attachment 390477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617869</commentid>
    <comment_count>5</comment_count>
      <attachid>390477</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-02-11 21:52:29 -0800</bug_when>
    <thetext>Comment on attachment 390477
Patch

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

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1962
&gt; +                valueRegs,

What’s in valueRegs?
Why isn’t this just a store of the empty JSValue (zero)?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:2175
&gt; +                repatchDelBy(globalObject, codeBlock, baseValue, baseValue.structureOrNull(), propertyName, *stubInfo, DelByKind::Normal);

Don’t we need something like PropertySlot/PutPropertySlot that tells us it’s ok to cache this? Custom implementations of delete might intercept this access

&gt; Source/JavaScriptCore/jit/Repatch.cpp:757
&gt; +        if (oldStructure-&gt;isDictionary())

Do we want to flatten and try again like other ICs? (If we haven’t flattened before)

&gt; Source/JavaScriptCore/jit/Repatch.cpp:760
&gt; +        if (!oldStructure-&gt;isObject())

What does delete do on strings/symbols/bigints?

&gt; Source/JavaScriptCore/runtime/GenericArgumentsInlines.h:-143
&gt; -    RELEASE_AND_RETURN(scope, Base::put(thisObject, globalObject, ident, value, slot));

Why is this change required?

&gt; Source/JavaScriptCore/runtime/StructureInlines.h:231
&gt; +inline bool Structure::mayHaveIndexingHeader(bool&amp; mustCheckCell) const

What does mustCheckCell mean here? What must be checked?

&gt; JSTests/ChangeLog:8
&gt; +        * microbenchmarks/delete-property-inline-cache-polymorphic.js: Added.

Nit:

All your tests are still not using WebKit style for spacing. “x&lt;y”, “x=y” instead of “x &lt; y”, “x = y”

It would be nice to apply this to future patches too without me commenting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618330</commentid>
    <comment_count>6</comment_count>
      <attachid>390597</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-12 17:23:10 -0800</bug_when>
    <thetext>Created attachment 390597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618331</commentid>
    <comment_count>7</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-12 17:23:41 -0800</bug_when>
    <thetext>Checking for test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618540</commentid>
    <comment_count>8</comment_count>
      <attachid>390659</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-13 09:47:34 -0800</bug_when>
    <thetext>Created attachment 390659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618593</commentid>
    <comment_count>9</comment_count>
      <attachid>390670</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-13 10:56:28 -0800</bug_when>
    <thetext>Created attachment 390670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618597</commentid>
    <comment_count>10</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-13 11:05:25 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; Comment on attachment 390477 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390477&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1962
&gt; &gt; +                valueRegs,
&gt; 
&gt; What’s in valueRegs?
&gt; Why isn’t this just a store of the empty JSValue (zero)?
It is. We load it above. It seems to me that there is no option for storeValue that takes a constant value, so it has to get loaded first.

&gt; 
&gt; &gt; Source/JavaScriptCore/jit/Repatch.cpp:760
&gt; &gt; +        if (!oldStructure-&gt;isObject())
&gt; 
&gt; What does delete do on strings/symbols/bigints?

Seems like it calls the overridden implementation to me: https://tc39.es/ecma262/#sec-delete-operator

bool StringObject::deleteProperty(JSCell* cell, JSGlobalObject* globalObject, PropertyName propertyName, DeletePropertySlot&amp; slot)
{
    VM&amp; vm = globalObject-&gt;vm();
    StringObject* thisObject = jsCast&lt;StringObject*&gt;(cell);
    if (propertyName == vm.propertyNames-&gt;length)
        return false;
    Optional&lt;uint32_t&gt; index = parseIndex(propertyName);
    if (index &amp;&amp; thisObject-&gt;internalValue()-&gt;canGetIndex(index.value()))
        return false;
    return JSObject::deleteProperty(thisObject, globalObject, propertyName, slot);
}

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/GenericArgumentsInlines.h:-143
&gt; &gt; -    RELEASE_AND_RETURN(scope, Base::put(thisObject, globalObject, ident, value, slot));
&gt; 
&gt; Why is this change required?

My test uncovered this bug. We were missing an exception check.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StructureInlines.h:231
&gt; &gt; +inline bool Structure::mayHaveIndexingHeader(bool&amp; mustCheckCell) const
&gt; 
&gt; What does mustCheckCell mean here? What must be checked?
&gt; 

The cell itself must be used, not just the structure. In this case, it depends on some typed array indexing mode.

inline bool Structure::hasIndexingHeader(const JSCell* cell) const
{
    if (hasIndexedProperties(indexingType()))
        return true;
    
    if (!isTypedView(typedArrayTypeForType(m_blob.type())))
        return false;

    return jsCast&lt;const JSArrayBufferView*&gt;(cell)-&gt;mode() == WastefulTypedArray;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618716</commentid>
    <comment_count>11</comment_count>
      <attachid>390690</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-13 14:51:24 -0800</bug_when>
    <thetext>Created attachment 390690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619302</commentid>
    <comment_count>12</comment_count>
      <attachid>390837</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-14 17:05:36 -0800</bug_when>
    <thetext>Created attachment 390837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619303</commentid>
    <comment_count>13</comment_count>
      <attachid>390837</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-14 17:06:18 -0800</bug_when>
    <thetext>Comment on attachment 390837
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5176
&gt; +                CallSiteIndex callSiteIndex =

Not sure if this is correct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619319</commentid>
    <comment_count>14</comment_count>
      <attachid>390841</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-14 17:27:00 -0800</bug_when>
    <thetext>Created attachment 390841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619320</commentid>
    <comment_count>15</comment_count>
      <attachid>390842</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-14 17:41:08 -0800</bug_when>
    <thetext>Created attachment 390842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619718</commentid>
    <comment_count>16</comment_count>
      <attachid>390934</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-17 10:32:17 -0800</bug_when>
    <thetext>Created attachment 390934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619851</commentid>
    <comment_count>17</comment_count>
      <attachid>390968</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-17 13:37:35 -0800</bug_when>
    <thetext>Created attachment 390968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620257</commentid>
    <comment_count>18</comment_count>
      <attachid>391075</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-18 11:53:24 -0800</bug_when>
    <thetext>Created attachment 391075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620284</commentid>
    <comment_count>19</comment_count>
      <attachid>391080</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-18 13:04:31 -0800</bug_when>
    <thetext>Created attachment 391080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620383</commentid>
    <comment_count>20</comment_count>
      <attachid>391080</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-02-18 15:28:51 -0800</bug_when>
    <thetext>Comment on attachment 391080
Patch

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

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:151
&gt;      // This create method should be used for transitions.

Can you delete this comment?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1164
&gt; +    if (!m_state.forNode(node-&gt;child1()).isType(SpecCell))
&gt; +        slowCases.append(m_jit.branchIfNotCell(valueRegs));

We usually do this with a UseKind on the edge. That way nodes after the DelBy* can see that this node already did the speculation and not do it themselves. I also think you want to check if it&apos;s an Object since you don&apos;t have to do the check in the fast path.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1202
&gt; +    if (!m_state.forNode(node-&gt;child1()).isType(SpecCell))
&gt; +        slowCases.append(m_jit.branchIfNotCell(baseRegs));
&gt; +    if (!m_state.forNode(node-&gt;child2()).isType(SpecCell))
&gt; +        slowCases.append(m_jit.branchIfNotCell(keyRegs));

Ditto on UseKinds.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5151
&gt; +        auto base = lowJSValue(m_node-&gt;child1());

Ditto on UseKinds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621460</commentid>
    <comment_count>21</comment_count>
      <attachid>391349</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-20 15:52:45 -0800</bug_when>
    <thetext>Created attachment 391349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621461</commentid>
    <comment_count>22</comment_count>
      <attachid>391350</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-20 15:54:12 -0800</bug_when>
    <thetext>Created attachment 391350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621504</commentid>
    <comment_count>23</comment_count>
      <attachid>391360</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-20 17:33:31 -0800</bug_when>
    <thetext>Created attachment 391360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621511</commentid>
    <comment_count>24</comment_count>
      <attachid>391360</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-02-20 17:44:40 -0800</bug_when>
    <thetext>Comment on attachment 391360
Patch

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

&gt; JSTests/stress/delete-property-inline-cache.js:537
&gt; +//for (let i = 0; i &lt; 1000; ++i) {
&gt; +//    testCacheableDeleteById()
&gt; +//    testCacheableDeleteByVal()
&gt; +//    testCacheableEmptyDeleteById()
&gt; +//    testCacheableDeleteByIdMiss()
&gt; +//    testDeleteIndex()
&gt; +//    testPolymorphicDelByVal(i)
&gt; +//    testBigintDeleteByVal()
&gt; +//    testSymbolDeleteByVal()
&gt; +//    testStrict()
&gt; +//    testOverride()
&gt; +//    testNonObject()
&gt; +//    testNonObjectStrict()
&gt; +//}

why is this commented out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621610</commentid>
    <comment_count>25</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2020-02-21 03:46:22 -0800</bug_when>
    <thetext>Regarding the armv7 crash. I ran stress/delete-by-id.js with --dumpDisassembly=true under gdb.
I get a crash when trying to execute address 0x7196e388, which only contains 0s.
We get there from this code:

Generated JIT code for Access stub for test1#BOPmDU:[0x705b4340-&gt;0x705b40d0-&gt;0x705d0b90, DFGFunctionCall, 13 (NeverInline) (DidTryToEnterInLoop)] bc#7 with return point CodePtr(executable = 0x718fe325, dataLocation = 0x718fe324): 
Delete:(Generated, ident = &apos;cocoa&apos;, offset = 0, structure = 0x705fac60:[0x705fac60, Object, {cocoa:0, cappuccino:1}, NonArray, Proto:0x705ec000] -&gt; 0x705facb0:[0x705facb0, Object, {cappuccino:1}, NonArray, Proto:0x705ec000, Leaf]):
    Code at [0x718fe561, 0x718fe5c1):
          0x718fe560: ldr r6, [r0]
          0x718fe562: movw ip, #0xac60
          0x718fe566: movt ip, #0x705f
          0x718fe56a: cmp.w r6, ip
          0x718fe56e: ittt ne
          0x718fe570: nopne 
          0x718fe572: nopne.w 
          0x718fe576: bne.w #0x718fe432
          0x718fe57a: bl #0x7196e388
                         ^^^^^^^^^^^
                      That&apos;s probably not the address we want to branch to.

Hope this helps tracking the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621784</commentid>
    <comment_count>26</comment_count>
      <attachid>391427</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-21 14:35:31 -0800</bug_when>
    <thetext>Created attachment 391427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621812</commentid>
    <comment_count>27</comment_count>
      <attachid>391427</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-02-21 16:43:44 -0800</bug_when>
    <thetext>Comment on attachment 391427
Patch

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

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:131
&gt; +    RELEASE_ASSERT(oldStructure == newStructure-&gt;previousID());

Not related to your patch but why does Structure::previousID return the Structure*? Seems poorly named...

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4309
&gt; +    base.use();
&gt; +    key.use();

I don&apos;t think you need this if you don&apos;t have UseChildrenCalledExplicitly below.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:748
&gt; +        if (!baseValue.isCell() || !oldStructure || !oldStructure-&gt;isObject() || !oldStructure-&gt;propertyAccessesAreCacheable())

Nit: I think this would be clearer as:

ASSERT(oldStructure);
if (!baseValue.isObject() || !oldStructure-&gt;propertyAccessesAreCachebale())

&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:764
&gt; +                    DeletePropertySlot slot;
&gt; +                    object-&gt;methodTable(vm)-&gt;deleteProperty(object, m_globalObject, prop, slot);

Nit: maybe we should have a version of deleteProperty that doesn&apos;t require a DeletePropertySlot similar to put and get.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:2040
&gt; +        return thisObject-&gt;methodTable(vm)-&gt;deleteProperty(thisObject, globalObject, Identifier::from(vm, i), slot);

ditto.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:3636
&gt; +            object-&gt;methodTable(vm)-&gt;deleteProperty(object, globalObject, propertyName, slot);

ditto.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:3653
&gt; +        object-&gt;methodTable(vm)-&gt;deleteProperty(object, globalObject, propertyName, slot);

ditto.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:3678
&gt; +        object-&gt;methodTable(vm)-&gt;deleteProperty(object, globalObject, propertyName, slot);

ditto.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:3732
&gt; +    object-&gt;methodTable(vm)-&gt;deleteProperty(object, globalObject, propertyName, slot);

ditto.

&gt; Source/JavaScriptCore/runtime/Structure.cpp:-554
&gt; -    ASSERT(!isCompilationThread());

Why get rid of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621822</commentid>
    <comment_count>28</comment_count>
      <attachid>391427</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-02-21 17:31:09 -0800</bug_when>
    <thetext>Comment on attachment 391427
Patch

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

r=me with some comments and a question:

What happens if you have something like:

let obj = {};
obj.foo = 1
obj.bar = 2;
delete obj.foo;
obj.baz = 3;
delete obj.bar;
delete obj.baz;


Is obj&apos;s structure now the same as when it was first created?

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:193
&gt; +        fastPath, slowPath, fastPath.locationOf&lt;JITStubRoutinePtrTag&gt;(m_start));

I think you can just replace m_start with `m_slowPathJump.m_jump.label()`? That way you don&apos;t need m_start at all.

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:224
&gt; +        fastPath, slowPath, fastPath.locationOf&lt;JITStubRoutinePtrTag&gt;(m_start));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621823</commentid>
    <comment_count>29</comment_count>
      <attachid>391427</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-02-21 17:31:25 -0800</bug_when>
    <thetext>Comment on attachment 391427
Patch

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

r=me with some comments and a question:

What happens if you have something like:

let obj = {};
obj.foo = 1
obj.bar = 2;
delete obj.foo;
obj.baz = 3;
delete obj.bar;
delete obj.baz;


Is obj&apos;s structure now the same as when it was first created?

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:193
&gt; +        fastPath, slowPath, fastPath.locationOf&lt;JITStubRoutinePtrTag&gt;(m_start));

I think you can just replace m_start with `m_slowPathJump.m_jump.label()`? That way you don&apos;t need m_start at all.

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:224
&gt; +        fastPath, slowPath, fastPath.locationOf&lt;JITStubRoutinePtrTag&gt;(m_start));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621832</commentid>
    <comment_count>30</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-21 18:17:29 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #28)
&gt; Comment on attachment 391427 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=391427&amp;action=review
&gt; 
&gt; r=me with some comments and a question:
&gt; 
&gt; What happens if you have something like:
&gt; 
&gt; let obj = {};
&gt; obj.foo = 1
&gt; obj.bar = 2;
&gt; delete obj.foo;
&gt; obj.baz = 3;
&gt; delete obj.bar;
&gt; delete obj.baz;
&gt; 
&gt; 
&gt; Is obj&apos;s structure now the same as when it was first created?
&gt; 

No. Deleting creates a new structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622126</commentid>
    <comment_count>31</comment_count>
      <attachid>391427</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-02-24 06:14:15 -0800</bug_when>
    <thetext>Comment on attachment 391427
Patch

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

Nice work! I left some comments about 32-bits build failure.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4283
&gt; +    JSValueOperand value(this, node-&gt;child1());

Since we are fixing edges of `node-&gt;child1` during fixup, this will cause assertion failures. We have a some options to solve this:

1. Do not fixup to `CellUse` on 32-bits.
2. Speculate children here, but always fallback to slow path add a FIXME to add fast path to 32-bits later.
3. Implement fast path for 32-bits (The best option IMO).

I understand that option 3 can not be viable given it is very hard to test things without real build. So we could go with both &quot;1&quot; or &quot;2&quot;. Option 1 sounds more aligned with what we have in some cases of `DFGFixupPhase`, since speculation without fast path sounds wrong to me. If we decide to do so, do you mind open a bug and adding a FIXME to implement fast path for 32-bits?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4292
&gt; +    callOperation(operationDeleteById, resultGPR, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node-&gt;origin.semantic)), valueRegs, identifierUID(node-&gt;identifierNumber()));

This operation doesn&apos;t exist anymore. I think it should call `operationDeleteByIdGeneric`.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4312
&gt; +    callOperation(operationDeleteByVal, resultGPR, TrustedImmPtr::weakPointer(m_graph, m_graph.globalObjectFor(node-&gt;origin.semantic)), baseRegs, keyRegs);

This operation doesn&apos;t exist anymore. I think it should call `operationDeleteByValGeneric` instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622279</commentid>
    <comment_count>32</comment_count>
      <attachid>391568</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-24 12:51:11 -0800</bug_when>
    <thetext>Created attachment 391568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622389</commentid>
    <comment_count>33</comment_count>
      <attachid>391594</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-24 16:17:14 -0800</bug_when>
    <thetext>Created attachment 391594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622723</commentid>
    <comment_count>34</comment_count>
      <attachid>391427</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-25 13:28:02 -0800</bug_when>
    <thetext>Comment on attachment 391427
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:193
&gt;&gt;&gt; +        fastPath, slowPath, fastPath.locationOf&lt;JITStubRoutinePtrTag&gt;(m_start));
&gt;&gt; 
&gt;&gt; I think you can just replace m_start with `m_slowPathJump.m_jump.label()`? That way you don&apos;t need m_start at all.
&gt; 
&gt; I think you can just replace m_start with `m_slowPathJump.m_jump.label()`? That way you don&apos;t need m_start at all.

I tried this, and it doesn&apos;t work. It causes an infinite loop. Any idea why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622724</commentid>
    <comment_count>35</comment_count>
      <attachid>391680</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-25 13:30:19 -0800</bug_when>
    <thetext>Created attachment 391680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622754</commentid>
    <comment_count>36</comment_count>
      <attachid>391684</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-25 14:16:58 -0800</bug_when>
    <thetext>Created attachment 391684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622764</commentid>
    <comment_count>37</comment_count>
      <attachid>391690</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-25 14:43:52 -0800</bug_when>
    <thetext>Created attachment 391690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622840</commentid>
    <comment_count>38</comment_count>
      <attachid>391704</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-02-25 17:02:22 -0800</bug_when>
    <thetext>Created attachment 391704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622852</commentid>
    <comment_count>39</comment_count>
      <attachid>391704</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-25 17:38:52 -0800</bug_when>
    <thetext>Comment on attachment 391704
Patch

Clearing flags on attachment: 391704

Committed r257399: &lt;https://trac.webkit.org/changeset/257399&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622853</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-25 17:38:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622856</commentid>
    <comment_count>41</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-25 17:39:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/59788843&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390324</attachid>
            <date>2020-02-10 17:23:45 -0800</date>
            <delta_ts>2020-02-11 13:05:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200210172345.patch</filename>
            <type>text/plain</type>
            <size>68738</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MDFhYTg5ZjgyNWM2MTViY2UyYmRiY2VkMTMyNjliNGM5ZTc5YTc4Li45NjJhNWQ2YTVmZjFiYTJi
Y2U1MDE2Nzg5YTQ3MDIzYTI1YzQ3YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9ubHku
IFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVzdGlu
Zy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBjb2Rl
IGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2FjaGVk
IGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3MgaXMg
YSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0gRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlzdHMs
IGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25kaXRp
b25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQgbXVz
dCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBUaGlz
IGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0cyB3aXRoIERGRyBkaXNh
YmxlZDoKKworICAgICAgICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZSAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAg
ICAgICAgIGRlZmluaXRlbHkgMS4xODUweCBmYXN0ZXIKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5
LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYyAgIGRlZmluaXRlbHkgMS4wNzA2eCBzbG93ZXIKKyAg
ICAgICAgZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluICAgICAgKG5ldXRyYWwp
CisKKyAgICAgICAgV2l0aCBERkcgZW5hYmxlZCwgZXZlcnl0aGluZyBpcyBuZXV0cmFsIGV4Y2Vw
dCBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLCB3aGljaCBpcyBzdGls
bCA2JSBzbG93ZXIuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Y3JlYXRlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0
ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRj
aCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0
eUNoZWNrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBS
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnByb3Bh
Z2F0ZVRyYW5zaXRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJh
dGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OnN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6
Om5ld1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBqaXQvSUNT
dGF0cy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgp
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0
b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZURl
bEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbEJ5KToKKyAgICAgICAgKiBqaXQvUmVwYXRj
aC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlSW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBjb25zdCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5nSGVhZGVyIGNvbnN0KToKKwogMjAyMC0wMi0x
MCAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyNTYwOTEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNzIyZDUyZmE2MTIzZGIyMGM4OTAxMzFj
NWQyZGJlODBlNzYzNzkuLjljZmFlN2RlYmViNWU1MTM3NDgxOTM4MDc4ZjY2MWRkOWNiZWQ3NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDItMTAgIEp1c3RpbiBNaWNoYXVkICA8anVzdGlu
X21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQv
dmFsIGluIGJhc2VsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkKToK
KyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjpidWlsZExpc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Y2xlYXIpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6cmVtb3ZlSWYpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1
bTo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6ZW5kKTogRGVsZXRl
ZC4KKwogMjAyMC0wMi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlIG9uIHdhdGNoT1Mgc2ltdWxhdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXgg
MmFmNDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjliYTk3NS4uYmNhOTE0NzdkYTM3NGZj
OGYwMmEzMTYxZjczMzZmNGYyODE0OTg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNj
ZXNzVHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2FzZSBJ
bk1pc3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVN
aXNzOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3Ry
aW5nTGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlx
dWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKQEAg
LTEyMyw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nl
c3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0K
IAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgK
KyAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09
IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsK
KyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBu
ZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUg
YmVsb3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdTdHJ1
Y3R1cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisgICAg
ICAgIGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUs
IHsgfSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTI2
Miw2ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRj
aCgpIGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZl
IGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRp
Zmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBE
ZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVw
bGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYgKzMz
MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBjb25z
dAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNp
dGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToK
KyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6
CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNl
OjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2Fz
ZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNl
IERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBS
ZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcsNiAr
NDc0LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRl
cjoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpA
QCAtNDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVj
dG9yPEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBDdXN0
b21BY2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6Cisg
ICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6CiAg
ICAgY2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuUmVw
bGFjZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoKICAg
ICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25D
b25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAg
ICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5w
cmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5
UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0g
VHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIsIHBv
aW50ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0dXJl
KQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1
bXAobV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vzc0Nh
c2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogCiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxl
dGU6CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVyZS0+
cHJldmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobV9z
dHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgsNyBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2Fs
bChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0
KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAgICAgdmFsdWVS
ZWdzLApAQCAtMTg5Niw2ICsxOTMzLDY3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhc2Ug
RGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1
YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJh
c2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgICAgICBh
bGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworCisg
ICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVk
U3RhdGUgPQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQ
dXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5v
RXh0cmFTcGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAg
IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4aW5n
SGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0
aGlzIGNhc2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4K
KyAgICAgICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFtYXlOZWVkVG9DaGVja0NlbGwpOwor
ICAgICAgICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGllcywg
c2luY2Ugb3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAgICAgICAgYm9vbCBzaG91bGROdWtl
U3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4
aW5nSGVhZGVyOworCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KDApLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgICAgICBpZiAoc2hvdWxkTnVrZVN0
cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5KSB7CisgICAgICAgICAgICBqaXQubnVrZVN0cnVjdHVy
ZUFuZFN0b3JlQnV0dGVyZmx5KHZtLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBiYXNlR1BSKTsK
KyAgICAgICAgfSBlbHNlIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkpIHsKKyAgICAgICAg
ICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGJhc2VH
UFIsCisgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSArCisgICAgICAgICAgICAgICAgICAgIG9mZnNldEluSW5saW5lU3RvcmFnZShtX29mZnNldCkg
KiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAg
ICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5CdXR0ZXJmbHkobV9vZmZzZXQpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCkpOworCisgICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KG5ld1N0cnVjdHVyZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3Jl
MzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRz
KSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJl
Z2lzdGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6IHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIo
KSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNhc2UgRGVsZXRlTWlzczogeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCkpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlMZW5ndGg6IHsKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmgKaW5kZXggNzlkMzEwMTU1ZTkzYTU0NTNkMjg2MWM0MzIyN2JhM2JhYzE5ZjI3
Ny4uYzZjODE4NDQ2MzQxZDBhNDNjNjdhZWM5MzE4MzMzNzQ3ODdkMTgzNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC04NSw2ICs4NSw5IEBAIHB1
YmxpYzoKICAgICBlbnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgTG9hZCwKICAg
ICAgICAgVHJhbnNpdGlvbiwKKyAgICAgICAgRGVsZXRlLAorICAgICAgICBEZWxldGVOb25Db25m
aWd1cmFibGUsCisgICAgICAgIERlbGV0ZU1pc3MsCiAgICAgICAgIFJlcGxhY2UsCiAgICAgICAg
IE1pc3MsCiAgICAgICAgIEdldEdldHRlciwKQEAgLTE0Niw4ICsxNDksMTEgQEAgcHVibGljOgog
ICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOwogCiAgICAgLy8gVGhpcyBjcmVhdGUgbWV0
aG9kIHNob3VsZCBiZSB1c2VkIGZvciB0cmFuc2l0aW9ucy4KLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4pOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
cmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKQEAgLTE1Nyw3ICsxNjMsNyBAQCBwdWJs
aWM6CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBp
ZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlv
biB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5w
cmV2aW91c0lEKCk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CkBA
IC0xNjUsNyArMTcxLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUo
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uKTsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpOwog
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAx
MzI0MDljMGE0NTEwYmRmYThlY2UzM2I3NDM0NzE2MDJkN2IwZTc5Li5iMTY2YzMwYzE4YTUyM2E3
NjI1ZjM5YWY2Yjc4OTUwNjdhYTVmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc5NSw2ICs3OTUsMTUgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5
cGUgdHlwZSkKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlRyYW5zaXRpb246CiAgICAgICAgIG91dC5w
cmludCgiVHJhbnNpdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNl
OjpEZWxldGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICAgICAgb3V0
LnByaW50KCJEZWxldGVOb25Db25maWd1cmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVNaXNz
Iik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlJlcGxhY2U6CiAgICAg
ICAgIG91dC5wcmludCgiUmVwbGFjZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRlNDQ0YzQzZjVhZGRmMjMxN2Y0
MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1NmMxNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJl
cGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKLSAgICBtYWNy
byhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCisgICAgbWFj
cm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2Vu
ZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKaW5kZXggNjg3MTFjZTVkZDczMDVkOTZjMWYwMTZmYjIyN2M2YmI1ZmFhMzhkYi4uNDgzZTlj
NDIxNDQ1NDZlZGI0ZDg0MTcxYjE4NzVkMTk4ZTM2MmFkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5k
ZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7
CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAg
ICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9
IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1
dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQorICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFzX2luZGV4
ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9zY29w
ZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRjaEJ1ZmZlcik7CiAgICAg
ZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFs
aXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVz
KG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1NS4uNjcxNjY2MWRmNGZh
Y2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9p
ZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9k
ZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNv
bnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0
cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBW
ZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAg
ICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1dEJ5SWRzOwogICAgICAgICBW
ZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVRE
ZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxH
ZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVy
YXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZv
PiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9u
SW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYgKzkzOCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9N
QVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAg
ICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWdu
ZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxC
eUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRl
eCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4
IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJ
TlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2ZWVkNDU3M2EzOWNiNTZi
Y2NhNjVkNWEuLmVjOWNjM2FhMGNiNjliNmFlYjgyMzdiMDNiZWJiNmUxNzU1YmRhOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY2IEBAIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0
QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERl
bEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHVi
SW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICBtX3N0dWJJbmZvLT5i
YXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0
eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9
IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJ
bmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRh
Z0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BS
ID0gcHJvcGVydHkudGFnR1BSKCk7CisjZW5kaWYKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAgIG1fc3Rh
cnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1w
KCk7CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisKK3ZvaWQgSklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBz
bG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5h
bGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKK0pJVERlbEJ5SWRHZW5lcmF0b3I6
OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQorICAg
IDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6
OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50
SWRlbnRpZmllciA9IHRydWU7CisKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXls
b2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRHUFJS
ZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFn
R1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisjZW5kaWYK
K30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xvd1Bh
dGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsK
K30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVy
JiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3RhcnQu
aXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0
aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOwor
fQorCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaAppbmRleCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li4zNTU1
ZmVjNWRkM2EyMDRhMmE4YWMzZmNlY2MzNjI1ZmI2MjI2YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNDIsNiAr
MTQyLDU2IEBAIHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitjbGFzcyBK
SVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7Cisg
ICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKKyAg
ICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQ
YXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5t
X2p1bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYg
ZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisg
ICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6Cisg
ICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBh
dGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCitjbGFzcyBKSVREZWxCeUlkR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0g
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklURGVsQnlJZEdlbmVyYXRv
cigpIHsgfQorCisgICAgSklURGVsQnlJZEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJu
IG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAg
ICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRo
TGlua0J1ZmZlcik7CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
KTsKKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKIGNsYXNz
IEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoK
ICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGUzNjI2NzMyNWM3NGFlMjJmODYxOGVhOWUyYWQwMDJl
NDhkYzYzMzQuLmYyZjA5NGViNWRlMGEzMTVmOWE0MDZkZjBkMzc5Yzc5MDU5ZjkwZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjE1Nyw4ICsy
MTU3LDMxIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRl
OwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNv
ZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICBy
ZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgYmFzZVZhbHVl
LnN0cnVjdHVyZU9yTnVsbCgpLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpO
b3JtYWwpOworICAgICAgICB9CisgICAgfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAg
ICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBi
YXNlVmFsdWUsIHVpZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjE5OCwxMiArMjIyMSwzOCBAQCBzdGF0aWMg
Ym9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVk0mCiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsICBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkS2V5KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKwor
ICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0Nh
Y2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkgfHwgIXBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmco
dm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAg
ICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgYmFz
ZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlL
aW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHJlc3VsdCA9
IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgYmFzZVZhbHVlLCBzdWJz
Y3JpcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZt
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtl
eSkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpKSk7CiB9CiAKIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2MjEwYzVh
MDczNDE5NjgzZDYwZWE4YzQ4Y2Q0M2VlZmY4MmEzMDBjLi5iNGE3MWFkYmNkMTkwZWQ1MzUzMjRm
ZDQ0MjlmZjlhYzY0MjE0OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtMjUxLDkgKzI1MSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJv
cGVydHkpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbElu
Zm8qKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZv
KikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZf
SU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJyZW50
U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9iamVj
dCkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAppbmRleCBhYmY1MmY3MTNlOGFhMGFmYjVlODA1YzdjZjNmMWQzODgzNzFj
MmY2Li44MDU3MDZlNDgyMmE5MjlhMDNmYmI1YTVhNDc3ZjA3MjBlMWNiNGEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzg3LDkg
KzM4NywzNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2Rl
Lm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAg
IGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDEsIGJhc2UpOworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOworICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9j
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuaW1wbCgpOworCisgICAg
SklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1ttX2RlbEJ5SWRJbmRleCsrXTsK
KworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCByZWdUMCwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7
CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1p
emUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4u
c3R1YkluZm8oKSwgcmVnVDAsIHVpZCk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkgKzQyNCwzOSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDEsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1Qw
KTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFN0cmluZyhyZWdUMCkpOworICAgIEpJVERlbEJ5VmFs
R2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
IG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOworICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworCisgICAgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlW
YWxzW21fZGVsQnlWYWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSk7CisgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBy
ZWdUMSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFi
NWM0ZjRjOGJkYWVlZjE0Yy4uMjRmYzc2ZTRiYmJmM2EyNGZjMjM2OWM1MTk4NDk5NGQ0ODhiOTBk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2st
PmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYywgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5
KS5pbXBsKCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQy
KGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVy
aWMsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTE4MjA0MTU1NGJkYzc2YzE5MWNi
MTM4NWQxM2E5YzgxZmZkNDVlYi4uYjI2YTkxNTdjNmZjY2Q0ZmI0OTBlZjdmNzc1NmI2YzQzNGU4
MTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02NDEsNyArNjQx
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOworICAg
ICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKHZtLCBj
b2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgc2xvdC5pc0Nh
Y2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3Rv
bSgpKSB7CkBAIC03MzQsNiArNzM0LDg2IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRL
aW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbEJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
cmVzdWx0OworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKKyAgICAgICAg
aWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhb2xkU3Ry
dWN0dXJlKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYg
KGlzQ29weU9uV3JpdGUob2xkU3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpCisgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZS0+cHJv
cGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CisKKyAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIW9sZFN0cnVjdHVy
ZS0+aXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvbGRTdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzKTsKKwor
ICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gaXNWYWxpZE9mZnNldChvZmZzZXQpOworICAgICAg
ICBib29sIGlzQ29uZmlndXJhYmxlID0gaGFzUHJvcGVydHkgJiYgIShhdHRyaWJ1dGVzICYgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0g
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKworICAgICAgICBp
ZiAoaGFzUHJvcGVydHkgJiYgaXNDb25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG5ld09mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVD
b25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCk7CisgICAg
ICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNTRVJUKG5ld09m
ZnNldCA9PSBvZmZzZXQpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+cHJldmlv
dXNJRCgpID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJl
LT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKG5l
d1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNl
dChuZXdPZmZzZXQpKTsKKyAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVE
ZWxldGUodm0sIGNvZGVCbG9jaywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBu
ZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgfSBlbHNlIGlm
ICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgaWYgKGhhc1Byb3Bl
cnR5ICYmICFpc0NvbmZpZ3VyYWJsZSkKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3Vy
YWJsZSwgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBpbnZhbGlkT2Zmc2V0LCBv
bGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3ND
YXNlOjpEZWxldGVNaXNzLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFs
aWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBjb2RlQmxvY2ssIHBy
b3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5nZW5l
cmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29k
ZSgpKTsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAs
IG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIHByb3BlcnR5TmFtZSkpOworICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9CisgICAg
fQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZv
LCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5v
dygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNo
RGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2lu
ZCBraW5kKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKKworICAgIGlmICh0cnlDYWNoZURlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNl
VmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2
ZVVwT25DYWNoZSkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhH
ZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIHBy
b3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAg
ICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMp
OworICAgIH0KK30KKwogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3Vu
ZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDZmMGYyNjQxMWVjZGVhMTkyYjcw
NjIxMGU4YTk5NDRiYjRmOWZlMzkuLmYzNTAxMjBkOTllNDQ3MGUxOWY3OGU0ZmQ2MGZhMTgwYzI5
Yjg0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00MSw5ICs0MSwxNSBA
QCBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CiAgICAgRGlyZWN0CiB9OwogCitlbnVtIGNsYXNzIERl
bEJ5S2luZCB7CisgICAgTm9ybWFsLAorICAgIE5vcm1hbEJ5VmFsCit9OworCiB2b2lkIHJlcGF0
Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNl
LCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoR2V0Qnko
SlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2
b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwg
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0
cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIm
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImLCBi
b29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwog
dm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFs
dWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2Fz
Rm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29k
ZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
YWJsZUlkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGZmYjNlYjlkMDA1Y2Y2ZmQwOGZmZDJi
Yjg4YjlkNTg3YmFlZDBmZjYuLjEwN2I1ZDYwNzIwMzcwNTFmNmE3YzFlOWNiMGMxNWYyNjU4OTc5
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVhYmxlSWRlbnRpZmllcklubGluZXMuaApAQCAtNDIsNiArNDIsNyBAQCBpbmxpbmUgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogCiBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmll
cihKU0NlbGwqIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKGlzQ2FjaGVhYmxlSWRlbnRpZmll
ckNlbGwoaWRlbnRpZmllcikpOwogICAgIHNldENlbGxCaXRzKGlkZW50aWZpZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYWNkMjlkZWQ4
MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFkZi4uYTBlMmRmM2MyMjcxYWVlYjkwMTU5YWVm
MDE2MTA0MjU3OTZlOTE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcApAQCAtMjAwOCw3ICsyMDA4LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAg
ICAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbih2bSwgcHJvcGVydHlOYW1lLCBbXSAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
JiwgUHJvcGVydHlPZmZzZXQsIFByb3BlcnR5T2Zmc2V0KSB7IH0pOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRjaHBv
aW50RmlyZSk7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+bV9idXR0ZXJmbHkgJiYgIXN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hl
YWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSk7CiAgICAgICAgICAg
ICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgdGhpc09i
amVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0g
aW52YWxpZE9mZnNldDsKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tYXhPZmZz
ZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCmluZGV4IDE5Nzc1OWVhNzljYjg3ZTIxNDAzYTgzY2Y4MzcwNWRkMmNlMTU0
NzcuLjEyN2FiMTEzODEwNGI0NDU0NjUzMDU3YzFhNTFmODA0MjA0OTdkMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtNTQ0LDggKzU0NCw3IEBA
IFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewotICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJy
ZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQp
OwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7CiAK
QEAgLTU1MywxNiArNTUyLDEzIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAgICAgICAgIHZt
LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7CiB9CiAKLVN0cnVj
dHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUqKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogICAg
IEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NF
UlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0g
ICAgc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7Ci0KICAgICBj
b25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7CisgICAgb2Zmc2V0ID0gaW52YWxpZE9m
ZnNldDsKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUt
Pm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMsIGlz
QWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+
dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkp
OwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQo
KTsKQEAgLTU3MiwxMSArNTY4LDI4IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Cisg
ICAgc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1
dGVzKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsK
K30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOworICAgIHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5
TmFtZS51aWQoKSwgYXR0cmlidXRlcyk7CisKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgb2Zmc2V0KTsKK30KKwogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3Bl
cnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KSk7CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHMg
PSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9IHNfbWF4VHJhbnNpdGlvbkxlbmd0
aDsgcyA9IHMtPnByZXZpb3VzSUQoKSkKQEAgLTEyMDcsNyArMTIyMCw3IEBAIFJlZjxTdHJ1Y3R1
cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUsIGJvb2wm
IHNhd1BvbHlQcm90CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiB7Ci0gICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygp
LT5jbGFzc05hbWUsICIsIHsiKTsKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpb
IiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihpZCgpKSksICIsICIsIGNsYXNz
SW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWE7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGIz
ZGIzODU2ZTM4MTFkMGVmMWExNjUzZmQ3YWMxYjhhZmQyMjJiZWUuLmZhYzQ4NmVhZDczMDZjNGU3
NTM4ODc1YTI2MDI3YmViMmY2MTMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCkBAIC0xOTEsNyArMTkxLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
cm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5
VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVy
ZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVu
dGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwg
SlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRl
Q2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9D
YWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwpAQCAtNDc3LDYgKzQ3
OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihj
b25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29s
JiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCkBAIC03MTMsNiAr
NzE1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxs
cHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwo
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9m
ZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFz
IGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFu
ZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRv
IGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdmNzE0YzA1YjE1M2UwODEzOWU0
OTFjZDhjZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUyMzIyYTQ2MDE3NWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBA
IC0yMjQsMTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVh
ZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3
KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcq
PihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wg
U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29u
c3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAo
IWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJldHVy
biB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5
cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxl
eGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5o
IGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4
MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcw
ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAg
cHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAg
ICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVu
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAg
ICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAg
IAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0
ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4
LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3Qt
Y291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlz
dCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAg
IFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBp
dGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAgICAgbGlzdC5h
cHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsx
MDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5jbGVhcigpOwor
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVt
b3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUg
SGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1
ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxl
IExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAx
N2I0MTJlYzVlZDI3YmNlNTlmODdkMDUwYjlmZWE0MDc1N2JmNDkxLi5jNGJiN2Q4MGY1ZTI2ZDUz
MjE4ZTJkZTJmM2UwOGRmZDNhMmNhMTg1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAyLTEwICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUg
Q2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQp
OgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAo
bm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRl
c3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2Vy
dC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNE
ZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6Cisg
ICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6
IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAg
IChhc3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRf
ZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToK
KyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNz
ZXJ0X25lcS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURl
bGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpz
OgorICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNz
ZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5v
SW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAg
ICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9u
ZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVC
eVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENh
Y2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChu
b0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4Lm1ha2VG
b281KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0
RGVsZXRlSW5kZXgpOgorICAgICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJ
bmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9s
eW1vcnBoaWNEZWxCeVZhbCk6CisKIDIwMjAtMDItMDYgIFN1a29sc2FrIFNha3NodXdvbmcgIDxz
dWtvbHNha0BnbWFpbC5jb20+IGFuZCBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KIAogICAgICAgICBKYXZhU2NyaXB0IHN0cmluZyBjb3JydXB0aW9uIHVzaW5nIFJlZ0V4
cCB3aXRoIHVuaWNvZGUgY2hhcmFjdGVyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzIGIvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhp
Yy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZDE0MDZmNjc5OTgzOGMxMzZmYWU2ZTkwNGRmNDlhMDJlNWJhMDcw
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpAQCAtMCwwICsxLDUzIEBACitmdW5jdGlv
biBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEo
YSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2Vy
dGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRf
bmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJh
c3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30KK25vSW5saW5lKGFzc2Vy
dCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCisKK2Z1bmN0aW9u
IHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNigpIHsK
KyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1siYmF6IitpXSA9IDEKKyAgICAgICAg
Zm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6IitpXQorICAgICAgICByZXR1cm4g
Zm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQorCisgICAgYXJyID0gbmV3IEFycmF5
KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0g
bWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQor
ICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFz
c2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNz
ZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3Nl
cnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkK
KworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKQorCitmb3IgKGxl
dCBpPTA7IGk8MTAwMDsgKytpKSB7CisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxp
bmUtY2FjaGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5s
aW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzMTY2MTJkMmE0Yzg0ZmE3MTY2NGJmMmY5MWFiZTcw
NWEzMGI4MmEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsMTYxIEBACitmdW5jdGlvbiBh
c3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEoYSwg
YikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlv
biBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfbmVx
KGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3Nl
cnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30KK25vSW5saW5lKGFzc2VydCkK
K25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCisKK2Z1bmN0aW9uIHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28oKSB7CisgICAg
ICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0g
MgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAg
IG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vKCkKKyAgICB9
CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBh
cnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2Vx
KE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQor
ICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5
VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28yKCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRl
IGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtl
Rm9vMikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1
MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3Ig
KGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAg
ICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlz
KGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAg
ICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29b
ImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFi
bGVEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgp
IHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAg
ICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0
dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBB
cnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltq
XSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgewor
ICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0Lmtl
eXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
ICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAg
IGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAg
YXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28p
KQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRl
c3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAgICAgICAgbGV0IGZv
byA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0
ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUp
CisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAg
ICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9
KTsKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAg
YXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGZv
by5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1h
a2VGb280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBq
PDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQorICAgIH0KKworICAgIGZv
ciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisg
ICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0Lmtl
eXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
ICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZv
b1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkTWlzcykKKworZm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKKyAgICB0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkK
KyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVs
ZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwpp
bmRleCAyMmNjYTlmZDIxZGIwNzI2YmE2YjFkMmI2NWQ5ZGE1YjgzYThhODM4Li41ZjU0ZWUyMTZi
YmZmYWJjMDA3YWQ1MzkwN2ZkYTZiYmY0MTdmN2VjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVh
YmxlLXN0cnVjdHVyZS5qcwpAQCAtMjQsNSArMjQsNSBAQCBmdW5jdGlvbiBkb1Rlc3QoKSB7CiB9
CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDAwMDA7ICsraSkgZG9U
ZXN0KCkKK2ZvciAobGV0IGk9MDsgaTwxMDAwMDAwOyArK2kpIGRvVGVzdCgpCiAKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNm
MDhkYzBkYjIwZjM3NmI1ODhmNTlkNjNmNTEyZDY2MGM3Y2YzNjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAg
KzEsMjM1IEBACitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRp
b24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitm
dW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQor
CitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsK
K30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2Vy
dF9uZXEpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0
aW9uIG1ha2VGb28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0g
MQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICBy
ZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgewor
ICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0g
MikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBh
c3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFz
c2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKworZnVuY3Rpb24g
dGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28yKCkgewor
ICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJh
ciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJuIGZvbworICAg
IH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKwor
ICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28y
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBjb25z
dCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAg
YXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJh
ZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1
ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30K
K25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdENhY2hl
YWJsZUVtcHR5RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMygpIHsKKyAgICAg
ICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAy
CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgZGVsZXRl
IGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9v
MykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsg
KytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAg
ICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCgh
KCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAg
IGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1si
YnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0
aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9v
NCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAg
IGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAg
ICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEo
ZGVsZXRlIGZvby5iYXosIHRydWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZv
bywgJ2Zvb2JhcicsIHsKKyAgICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJh
YmxlOiBmYWxzZQorICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9v
YmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkK
KyAgICAgICAgYXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisg
ICAgfQorICAgIG5vSW5saW5lKG1ha2VGb280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQor
CisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZv
bzQoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNv
bnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAg
ICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCgh
KCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28u
YmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1si
YnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30K
K25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKworZnVuY3Rpb24gdGVzdERl
bGV0ZUluZGV4KCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb281KCkgeworICAgICAgICBsZXQgZm9v
ID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAg
Zm9vWzBdID0gMjMKKyAgICAgICAgZm9vWzFdID0gMjUKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0
ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvb1sxXSwgdHJ1ZSkK
KyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBu
b0lubGluZShtYWtlRm9vNSkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAo
bGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb281KCkKKyAgICB9
CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBh
cnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGlu
IGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEp
CisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9
PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgi
YmFyIiBpbiBmb28pKQorICAgICAgICBhc3NlcnRfZXEoZm9vWzBdLCAyMykKKyAgICAgICAgYXNz
ZXJ0X2VxKGZvb1sxXSwgdW5kZWZpbmVkKQorICAgICAgICBmb29bMV0gPSAxCisgICAgICAgIGFz
c2VydF9lcShmb29bMV0sIDEpCisgICAgfQorfQorbm9JbmxpbmUodGVzdERlbGV0ZUluZGV4KQor
CitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24gbWFr
ZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0gPSAx
CisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAgICAg
ICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFyciA9
IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsr
aikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJh
ciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQor
ICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisg
ICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAg
ICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6Iitp
IGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCkK
KworZm9yIChsZXQgaT0wOyBpPDEwMDA7ICsraSkgeworICAgIHRlc3RDYWNoZWFibGVEZWxldGVC
eUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQorICAgIHRlc3RDYWNoZWFibGVF
bXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpCisgICAg
dGVzdERlbGV0ZUluZGV4KCkKKyAgICB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390410</attachid>
            <date>2020-02-11 13:05:43 -0800</date>
            <delta_ts>2020-02-11 17:45:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200211130542.patch</filename>
            <type>text/plain</type>
            <size>72228</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MDFhYTg5ZjgyNWM2MTViY2UyYmRiY2VkMTMyNjliNGM5ZTc5YTc4Li45NjJhNWQ2YTVmZjFiYTJi
Y2U1MDE2Nzg5YTQ3MDIzYTI1YzQ3YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9ubHku
IFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVzdGlu
Zy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBjb2Rl
IGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2FjaGVk
IGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3MgaXMg
YSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0gRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlzdHMs
IGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25kaXRp
b25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQgbXVz
dCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBUaGlz
IGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0cyB3aXRoIERGRyBkaXNh
YmxlZDoKKworICAgICAgICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZSAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAg
ICAgICAgIGRlZmluaXRlbHkgMS4xODUweCBmYXN0ZXIKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5
LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYyAgIGRlZmluaXRlbHkgMS4wNzA2eCBzbG93ZXIKKyAg
ICAgICAgZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluICAgICAgKG5ldXRyYWwp
CisKKyAgICAgICAgV2l0aCBERkcgZW5hYmxlZCwgZXZlcnl0aGluZyBpcyBuZXV0cmFsIGV4Y2Vw
dCBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLCB3aGljaCBpcyBzdGls
bCA2JSBzbG93ZXIuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Y3JlYXRlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0
ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRj
aCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0
eUNoZWNrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBS
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnByb3Bh
Z2F0ZVRyYW5zaXRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJh
dGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OnN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6
Om5ld1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBqaXQvSUNT
dGF0cy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgp
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0
b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZURl
bEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbEJ5KToKKyAgICAgICAgKiBqaXQvUmVwYXRj
aC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlSW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBjb25zdCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5nSGVhZGVyIGNvbnN0KToKKwogMjAyMC0wMi0x
MCAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyNTYwOTEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNzIyZDUyZmE2MTIzZGIyMGM4OTAxMzFj
NWQyZGJlODBlNzYzNzkuLjljZmFlN2RlYmViNWU1MTM3NDgxOTM4MDc4ZjY2MWRkOWNiZWQ3NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDItMTAgIEp1c3RpbiBNaWNoYXVkICA8anVzdGlu
X21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQv
dmFsIGluIGJhc2VsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkKToK
KyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjpidWlsZExpc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Y2xlYXIpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6cmVtb3ZlSWYpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1
bTo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6ZW5kKTogRGVsZXRl
ZC4KKwogMjAyMC0wMi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlIG9uIHdhdGNoT1Mgc2ltdWxhdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXgg
MmFmNDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjliYTk3NS4uYmNhOTE0NzdkYTM3NGZj
OGYwMmEzMTYxZjczMzZmNGYyODE0OTg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNj
ZXNzVHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2FzZSBJ
bk1pc3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVN
aXNzOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3Ry
aW5nTGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlx
dWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKQEAg
LTEyMyw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nl
c3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0K
IAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgK
KyAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09
IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsK
KyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBu
ZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUg
YmVsb3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdTdHJ1
Y3R1cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisgICAg
ICAgIGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUs
IHsgfSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTI2
Miw2ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRj
aCgpIGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZl
IGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRp
Zmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBE
ZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVw
bGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYgKzMz
MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBjb25z
dAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNp
dGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToK
KyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6
CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNl
OjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2Fz
ZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNl
IERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBS
ZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcsNiAr
NDc0LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRl
cjoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpA
QCAtNDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVj
dG9yPEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBDdXN0
b21BY2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6Cisg
ICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6CiAg
ICAgY2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuUmVw
bGFjZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoKICAg
ICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25D
b25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAg
ICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5w
cmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5
UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0g
VHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIsIHBv
aW50ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0dXJl
KQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1
bXAobV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vzc0Nh
c2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogCiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxl
dGU6CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVyZS0+
cHJldmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobV9z
dHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgsNyBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2Fs
bChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0
KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAgICAgdmFsdWVS
ZWdzLApAQCAtMTg5Niw2ICsxOTMzLDY3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhc2Ug
RGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1
YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJh
c2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgICAgICBh
bGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworCisg
ICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVk
U3RhdGUgPQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQ
dXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5v
RXh0cmFTcGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAg
IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4aW5n
SGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0
aGlzIGNhc2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4K
KyAgICAgICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFtYXlOZWVkVG9DaGVja0NlbGwpOwor
ICAgICAgICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGllcywg
c2luY2Ugb3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAgICAgICAgYm9vbCBzaG91bGROdWtl
U3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4
aW5nSGVhZGVyOworCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KDApLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgICAgICBpZiAoc2hvdWxkTnVrZVN0
cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5KSB7CisgICAgICAgICAgICBqaXQubnVrZVN0cnVjdHVy
ZUFuZFN0b3JlQnV0dGVyZmx5KHZtLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBiYXNlR1BSKTsK
KyAgICAgICAgfSBlbHNlIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkpIHsKKyAgICAgICAg
ICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGJhc2VH
UFIsCisgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSArCisgICAgICAgICAgICAgICAgICAgIG9mZnNldEluSW5saW5lU3RvcmFnZShtX29mZnNldCkg
KiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAg
ICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5CdXR0ZXJmbHkobV9vZmZzZXQpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCkpOworCisgICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KG5ld1N0cnVjdHVyZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3Jl
MzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRz
KSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJl
Z2lzdGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6IHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIo
KSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNhc2UgRGVsZXRlTWlzczogeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCkpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlMZW5ndGg6IHsKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmgKaW5kZXggNzlkMzEwMTU1ZTkzYTU0NTNkMjg2MWM0MzIyN2JhM2JhYzE5ZjI3
Ny4uYzZjODE4NDQ2MzQxZDBhNDNjNjdhZWM5MzE4MzMzNzQ3ODdkMTgzNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC04NSw2ICs4NSw5IEBAIHB1
YmxpYzoKICAgICBlbnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgTG9hZCwKICAg
ICAgICAgVHJhbnNpdGlvbiwKKyAgICAgICAgRGVsZXRlLAorICAgICAgICBEZWxldGVOb25Db25m
aWd1cmFibGUsCisgICAgICAgIERlbGV0ZU1pc3MsCiAgICAgICAgIFJlcGxhY2UsCiAgICAgICAg
IE1pc3MsCiAgICAgICAgIEdldEdldHRlciwKQEAgLTE0Niw4ICsxNDksMTEgQEAgcHVibGljOgog
ICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOwogCiAgICAgLy8gVGhpcyBjcmVhdGUgbWV0
aG9kIHNob3VsZCBiZSB1c2VkIGZvciB0cmFuc2l0aW9ucy4KLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4pOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
cmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKQEAgLTE1Nyw3ICsxNjMsNyBAQCBwdWJs
aWM6CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBp
ZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlv
biB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5w
cmV2aW91c0lEKCk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CkBA
IC0xNjUsNyArMTcxLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUo
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uKTsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpOwog
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAx
MzI0MDljMGE0NTEwYmRmYThlY2UzM2I3NDM0NzE2MDJkN2IwZTc5Li5iMTY2YzMwYzE4YTUyM2E3
NjI1ZjM5YWY2Yjc4OTUwNjdhYTVmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc5NSw2ICs3OTUsMTUgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5
cGUgdHlwZSkKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlRyYW5zaXRpb246CiAgICAgICAgIG91dC5w
cmludCgiVHJhbnNpdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNl
OjpEZWxldGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICAgICAgb3V0
LnByaW50KCJEZWxldGVOb25Db25maWd1cmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVNaXNz
Iik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlJlcGxhY2U6CiAgICAg
ICAgIG91dC5wcmludCgiUmVwbGFjZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA2
MTc4NzM3ZjlmOGE5Y2QwYjZkZGFkNTdmMWNmMTJlZmU0ZmNhNzA1Li45NmExYmFlY2JlNGNiYmI3
NmRiZGVkYTgwNTY1YTJjNTk4NjU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Niw2ICsyNzYsMTIgQEAg
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRo
aXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6Cisg
ICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgorICAgICAg
ICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwor
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZGRjZTg1
ZWMwMjU1NTc2YzllMzQ1MWY2NDczNmQxMmMzODk0MjgwMy4uYjU3NWJkZDIxNjE5YzJkZmU0ZjE4
MmZhZWQ5MGYyNjhlOWUyNjE5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU1LDcgKzU1LDkgQEAgZW51bSBjbGFzcyBB
Y2Nlc3NUeXBlIDogaW50OF90IHsKICAgICBHZXRCeVZhbCwKICAgICBQdXQsCiAgICAgSW4sCi0g
ICAgSW5zdGFuY2VPZgorICAgIEluc3RhbmNlT2YsCisgICAgRGVsZXRlQnlJRCwKKyAgICBEZWxl
dGVCeVZhbAogfTsKIAogZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0lDU3RhdHMuaAppbmRleCA1ZDMwOTI4ZjRhODViNGFkZTQ0NGM0M2Y1YWRkZjIz
MTdmNDI2NWI3Li45MDQwZGYzODIwNzY0ZWRmOGQ1MTYxMWY4NjBmYzRkNDI2NTZjMTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNzAsNyArNzAsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBtYWNybyhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5
SWRSZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCi0gICAg
bWFjcm8oSW5CeUlkU2VsZlBhdGNoKQorICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkgXAorICAg
IG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhKdW1wKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0
aEdlbmVyaWMpCiAKIGNsYXNzIElDRXZlbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IDY4NzExY2U1ZGQ3MzA1ZDk2YzFmMDE2ZmIyMjdjNmJiNWZhYTM4ZGIuLjQ4
M2U5YzQyMTQ0NTQ2ZWRiNGQ4NDE3MWIxODc1ZDE5OGUzNjJhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTUwMCw2ICs1MDAsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggPSAwOwogICAgIG1fcHV0QnlJ
ZEluZGV4ID0gMDsKICAgICBtX2luQnlJZEluZGV4ID0gMDsKKyAgICBtX2RlbEJ5VmFsSW5kZXgg
PSAwOworICAgIG1fZGVsQnlJZEluZGV4ID0gMDsKICAgICBtX2luc3RhbmNlT2ZJbmRleCA9IDA7
CiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggPSAwOwogICAgIG1fY2FsbExpbmtJbmZvSW5k
ZXggPSAwOwpAQCAtNTgwLDYgKzU4Miw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkK
KyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3N1YikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2hhc19p
bmRleGVkX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21f
c2NvcGUpCkBAIC04NzUsNiArODc5LDggQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkK
ICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHNXaXRoVGhpcywgcGF0Y2hCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0QnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRzLCBwYXRjaEJ1ZmZlcik7CisgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9kZWxCeVZhbHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2luQnlJZHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNh
Y2hlcyhtX2luc3RhbmNlT2ZzLCBwYXRjaEJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CmluZGV4IDdiNDQwNzQ5NjMzMzZmY2I4OTQxZWJkMDViNTk3MzEyOWE5ZTg2NTUuLjY3MTY2NjFk
ZjRmYWNlYTVlZmVkNWY1MTA4MWYwNTliNmQyNTNkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aApAQCAtNTAwLDcgKzUwMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRf
b3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Vu
ZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKQEAgLTkxMyw2ICs5MTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlz
OwogICAgICAgICBWZWN0b3I8SklUUHV0QnlJZEdlbmVyYXRvcj4gbV9wdXRCeUlkczsKICAgICAg
ICAgVmVjdG9yPEpJVEluQnlJZEdlbmVyYXRvcj4gbV9pbkJ5SWRzOworICAgICAgICBWZWN0b3I8
SklURGVsQnlJZEdlbmVyYXRvcj4gbV9kZWxCeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVERlbEJ5
VmFsR2VuZXJhdG9yPiBtX2RlbEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CiAgICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9u
SW5mbz4gbV9ieVZhbENvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPENhbGxDb21waWxh
dGlvbkluZm8+IG1fY2FsbENvbXBpbGF0aW9uSW5mbzsKQEAgLTkzNCw2ICs5MzgsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCB7IFVJ
TlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4IHsgVUlOVF9NQVggfTsK
ICAgICAgICAgdW5zaWduZWQgbV9pbkJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVu
c2lnbmVkIG1fZGVsQnlWYWxJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1f
ZGVsQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9m
SW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25J
bmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZvSW5kZXgg
eyBVSU5UX01BWCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA5MjBiNzIwM2UzY2Y0YmYwNmVlZDQ1NzNhMzlj
YjU2YmNjYTY1ZDVhLi5iNjJmZjc3Zjk5YTE5MTQxNjYwM2IwY2Y5YThmNDkxZDQyN2NmZTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcApAQCAtMTYyLDYgKzE2Miw2NiBAQCBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiB9CiAKK0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpK
SVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQoreworICAg
IG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAgIEFTU0VSVChi
YXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKKyAgICBtX3N0dWJJbmZv
LT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9w
ZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQ
UiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0
dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1
ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFn
R1BSID0gcHJvcGVydHkudGFnR1BSKCk7CisjZW5kaWYKK30KKwordm9pZCBKSVREZWxCeVZhbEdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAgIG1f
c3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVK
dW1wKCk7CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisKK3ZvaWQgSklURGVsQnlWYWxH
ZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVy
JiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpm
aW5hbGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9m
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKK0pJVERlbEJ5SWRHZW5lcmF0
b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQor
ICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0g
cmVzdWx0LnBheWxvYWRHUFIoKSk7CisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5
bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRh
Z0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwor
ICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlm
Cit9CisKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYgaml0KQoreworICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQ
YXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7
Cit9CisKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoCisgICAgTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQoreworICAgIEFTU0VSVChtX3N0YXJ0
LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0UGF0aCwgc2xvd1Bh
dGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsK
K30KKwogSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCiAgICAgVW5pcXVlZFN0cmlu
Z0ltcGwqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKaW5kZXggYmZiOTAyMTZiMjljMjdmZmQwZWQ4ZDdmMGY1ODdlMDhmZTZlNzMxNi4uMzU1
NWZlYzVkZDNhMjA0YTJhOGFjM2ZjZWNjMzYyNWZiNjIyNmE4NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTQyLDYg
KzE0Miw1NiBAQCBwcml2YXRlOgogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwogfTsKIAorY2xhc3Mg
SklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Igewor
ICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBK
SVREZWxCeVZhbEdlbmVyYXRvcigpIHsgfQorCisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCisg
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KTsKKworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAu
bV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExpbmtCdWZmZXIm
IGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKwor
ICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgor
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQ
YXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKworY2xhc3MgSklURGVsQnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQpOworCisg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVy
biBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAg
ICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0
aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVy
Jik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCiBjbGFz
cyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6
CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBlMzYyNjczMjVjNzRhZTIyZjg2MThlYTllMmFkMDAy
ZTQ4ZGM2MzM0Li5mMmYwOTRlYjVkZTBhMzE1ZjlhNDA2ZGYwZDM3OWM3OTA1OWY5MGQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIxNTcsOCAr
MjE1NywzMSBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIHJldHVybiBjb3VsZERlbGV0
ZTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgdWlkKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKCFwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAg
cmVwYXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIGJhc2VWYWx1
ZS5zdHJ1Y3R1cmVPck51bGwoKSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6
Tm9ybWFsKTsKKyAgICAgICAgfQorICAgIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisg
ICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwg
YmFzZVZhbHVlLCB1aWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIxOTgsMTIgKzIyMjEsMzggQEAgc3RhdGlj
IGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIFZNJgogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCAgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEtleSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisK
KyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXND
YWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50
aWZpZXIgcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1l
LT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5n
KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAg
ICAgICAgcmVwYXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIGJh
c2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5
S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCByZXN1bHQg
PSBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2
bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRL
ZXkpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5VmFs
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpKSkpOwogfQogCiBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtl
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjIxMGM1
YTA3MzQxOTY4M2Q2MGVhOGM0OGNkNDNlZWZmODJhMzAwYy4uYjRhNzFhZGJjZDE5MGVkNTM1MzI0
ZmQ0NDI5ZmY5YWM2NDIxNDk3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTI1MSw5ICsyNTEsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFBy
b3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJ
bmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5m
byopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVu
dFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmpl
Y3QpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYWJmNTJmNzEzZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4Mzcx
YzJmNi4uODA1NzA2ZTQ4MjJhOTI5YTAzZmJiNWE1YTQ3N2YwNzIwZTFjYjRhMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5
ICszODcsMzUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAg
ICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QxLCBiYXNlKTsKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKKyAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1f
Y29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmltcGwoKTsKKworICAg
IEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgrK107
CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVs
ZXRlQnlJZEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgcmVnVDAsIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkp
OworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2Vu
LnN0dWJJbmZvKCksIHJlZ1QwLCB1aWQpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTM5OCw5ICs0MjQsMzkgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QxLCBiYXNlKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdU
MCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RTdHJpbmcocmVnVDApKTsKKyAgICBKSVREZWxCeVZh
bEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5
VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwg
cmVnVDEpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDVjYzdkZjljNTQxODljN2NiM2Q0MDkx
YjVjNGY0YzhiZGFlZWYxNGMuLjI0ZmM3NmU0YmJiZjNhMjRmYzIzNjljNTE5ODQ5OTRkNDg4Yjkw
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVj
b2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIG1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0
eSkuaW1wbCgpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2Fk
MihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QzLCByZWdUMikpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5l
cmljLCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkxODIwNDE1NTRiZGM3NmMxOTFj
YjEzODVkMTNhOWM4MWZmZDQ1ZWIuLjc2YWQ0ODM4NjViMWRmMTU4MjhkMmJhMjk2MWIzMDc0MzYy
NmY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNjQxLDcgKzY0
MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6
Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAg
ICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwg
Y29kZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXND
YWNoZWFibGVTZXR0ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0
b20oKSkgewpAQCAtNzM0LDYgKzczNCw4NiBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0
S2luZCkpOwogfQogCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxCeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBi
YXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IHJlc3VsdDsKKworICAgIHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApOworCisgICAgICAg
IGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEdp
dmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkgfHwgIW9sZFN0
cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIGlm
IChpc0NvcHlPbldyaXRlKG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmUtPnBy
b3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOworCisgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlczsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2xkU3RydWN0
dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLmltcGwoKSwgYXR0cmlidXRlcyk7CisK
KyAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGlzVmFsaWRPZmZzZXQob2Zmc2V0KTsKKyAgICAg
ICAgYm9vbCBpc0NvbmZpZ3VyYWJsZSA9IGhhc1Byb3BlcnR5ICYmICEoYXR0cmlidXRlcyAmIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlICYmIHZtLmRlbGV0ZVByb3BlcnR5TW9kZSgpICE9
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CisKKyAgICAgICAg
aWYgKGhhc1Byb3BlcnR5ICYmIGlzQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBQcm9wZXJ0
eU9mZnNldCBuZXdPZmZzZXQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
Q29uY3VycmVudGx5KG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQpOworICAg
ICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5
Q2FjaGVMYXRlcjsKKyAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkgfHwgbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdP
ZmZzZXQgPT0gb2Zmc2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChu
ZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZz
ZXQobmV3T2Zmc2V0KSk7CisgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKHZtLCBjb2RlQmxvY2ssIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwg
bmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChoYXNQcm9w
ZXJ0eSAmJiAhaXNDb25maWd1cmFibGUpCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vz
c0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1
cmFibGUsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNldCwg
b2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNz
Q2FzZTo6RGVsZXRlTWlzcywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBpbnZh
bGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgIH0KKworICAg
ICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgY29kZUJsb2NrLCBw
cm9wZXJ0eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1bHQuZ2Vu
ZXJhdGVkU29tZUNvZGUoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7CisgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1w
LCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKHZtLCBzdHViSW5m
bywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBO
b3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7Cit9CisKK3ZvaWQgcmVwYXRj
aERlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtp
bmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQpID09IEdp
dmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRo
R2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBw
cm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisg
ICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LAogICAgIGJvb2wgd2FzRm91
bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQpAQCAtMTM5MSw2ICsxNDcxLDE1IEBAIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7CisgICAgaWYgKGtpbmQgPT0gRGVs
QnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0
aW1pemUpOworICAgIGVsc2UKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXRQ
YXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRl
eCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBlOGE5OTQ0YmI0ZjlmZTM5Li4yNjJlOGY3NzNmMmZk
NjNlMWQ0ODg2YmE2ZjQ1Yjg1YjkwYjdjZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51bSBjbGFzcyBHZXRCeUtpbmQgewogICAgIERpcmVj
dAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtpbmQgeworICAgIE5vcm1hbCwKKyAgICBOb3JtYWxC
eVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1
YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwordm9pZCBy
ZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwog
dm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3Qq
LCBjb25zdCBJZGVudGlmaWVyJiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90Jiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0
dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFt
ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5s
aW5rRm9yKFZNJiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2
b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQp
Owogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3Zv
aWQgcmVzZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7
CiB2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFn
PiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaAppbmRleCBmZmIzZWI5ZDAwNWNmNmZkMDhmZmQyYmI4OGI5ZDU4N2JhZWQw
ZmY2Li4xMDdiNWQ2MDcyMDM3MDUxZjZhN2MxZTljYjBjMTVmMjY1ODk3OTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZp
ZXJJbmxpbmVzLmgKQEAgLTQyLDYgKzQyLDcgQEAgaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6
OkNhY2hlYWJsZUlkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIAogaW5s
aW5lIENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoSlNDZWxsKiBpZGVu
dGlmaWVyKQogeworICAgIEFTU0VSVChpc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKGlkZW50aWZp
ZXIpKTsKICAgICBzZXRDZWxsQml0cyhpZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5k
ZXggNzliYzc3MzAxNjY4MmRkYmE2Nzg4ZjZmZmRkMzNkNmYyMTQ4MGZlZC4uZGIwNzIzYTBhYmUy
MjEwYTg4YjAxM2VmMDNiOWEwYmQyNGVkNDQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBAIC0xMzksOCAr
MTM5LDEwIEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvCiAgICAgICAgIHRoaXNPYmplY3QtPnNl
dEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpw
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpKTsKKworICAg
IGF1dG8gcmVzdWx0ID0gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQs
IHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmlu
ZGV4IGFjZDI5ZGVkODEzNTFmYjI4NGIyMTU5YWQ0N2E2MzFjMzQ5NGYxZGYuLmEwZTJkZjNjMjI3
MWFlZWI5MDE1OWFlZjAxNjEwNDI1Nzk2ZTkxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIwMDgsNyArMjAwOCw4IEBAIGJvb2wgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVyCiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10gKGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRl
ZmVycmVkV2F0Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0
dGVyZmx5ICYmICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+
aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIGlmICghc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91
dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09i
amVjdCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJmbHkp
OwogICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJm
bHkodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCksIG51bGxwdHIpOwogICAgICAgICAgICAg
ICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+bWF4T2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAxOTc3NTllYTc5Y2I4N2UyMTQwM2E4M2Nm
ODM3MDVkZDJjZTE1NDc3Li4xMjdhYjExMzgxMDRiNDQ1NDY1MzA1N2MxYTUxZjgwNDIwNDk3ZDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTU0
NCw4ICs1NDQsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0
aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERl
ZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKLSAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBv
ZmZzZXQsIGRlZmVycmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAobmV3U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3
U3RydWN0dXJlOwogCkBAIC01NTMsMTYgKzU1MiwxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
bwogICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQp
OwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKikKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAKLSAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwotICAgIHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMpOwotCiAgICAgY29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IGZhbHNlOworICAgIG9mZnNl
dCA9IGludmFsaWRPZmZzZXQ7CiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9u
ID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBh
dHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkgewogICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGlu
Z1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxp
bmVDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFu
c2l0aW9uT2Zmc2V0KCk7CkBAIC01NzIsMTEgKzU2OCwyOCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwg
U3RydQogICAgIHJldHVybiBudWxscHRyOwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0
KQoreworICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOworICAgIHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51
aWQoKSwgYXR0cmlidXRlcyk7CisgICAgcmV0dXJuIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZy
b21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIG9mZnNldCk7Cit9CisKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQp
Cit7CisgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICBzdHJ1Y3R1cmUtPmdldENvbmN1cnJl
bnRseShwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMpOworCisgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAgcmV0dXJuIHJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpy
ZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewogICAgIEFT
U0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQo
c3RydWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCkpOworICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9w
ZXJ0eU5hbWUsIG9mZnNldCkpOwogCiAgICAgaW50IHRyYW5zaXRpb25Db3VudCA9IDA7CiAgICAg
Zm9yIChhdXRvKiBzID0gc3RydWN0dXJlOyBzICYmIHRyYW5zaXRpb25Db3VudCA8PSBzX21heFRy
YW5zaXRpb25MZW5ndGg7IHMgPSBzLT5wcmV2aW91c0lEKCkpCkBAIC0xMjA3LDcgKzEyMjAsNyBA
QCBSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVl
IHZhbHVlLCBib29sJiBzYXdQb2x5UHJvdAogCiB2b2lkIFN0cnVjdHVyZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsi
LCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCB7Iik7CisgICAgb3V0LnByaW50KFJhd1BvaW50
ZXIodGhpcyksICI6WyIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaWQoKSkp
LCAiLCAiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCB7Iik7CiAgICAgCiAgICAgQ29tbWFQ
cmludGVyIGNvbW1hOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAppbmRleCBiM2RiMzg1NmUzODExZDBlZjFhMTY1M2ZkN2FjMWI4YWZkMjIyYmVlLi5mYWM0
ODZlYWQ3MzA2YzRlNzUzODg3NWEyNjAyN2JlYjJmNjEzMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMTkxLDcgKzE5MSw4IEBAIHB1YmxpYzoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1v
dmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
ID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwotICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZShWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0
Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYs
IFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1
cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUq
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsK
QEAgLTQ3Nyw2ICs0NzgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzSW5k
ZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7CisgICAgYm9vbCBtYXlIYXZlSW5kZXhp
bmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBtYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
IApAQCAtNzEzLDYgKzcxNSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dEZpcmUqID0gbnVsbHB0cik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgUHJvcGVydHlPZmZzZXQmKTsKIAogICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cnVj
dHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0eSB0YWJsZSwgdGhhdCBwcm9wZXJ0eSB0YWJs
ZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3RydWN0dXJlcyB0aGF0IHdlIHZpc2l0ZWQgYmVm
b3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0dXJucyBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggMGNkOThkNTJhY2M3ZjcxNGMw
NWIxNTNlMDgxMzllNDkxY2Q4Y2Y4Yy4uZmUyODU4NzQwOTRkYWMzMDcwNzVkMmM3NjFlMjMyMmE0
NjAxNzVmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaApAQCAtMjI0LDEwICsyMjQsMjMgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjpo
YXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqIGNlbGwpIGNvbnN0CiAgICAgCiAgICAgaWYg
KCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTQXJy
YXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7CiB9CiAK
K2lubGluZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RD
aGVja0NlbGwpIGNvbnN0Cit7CisgICAgbXVzdENoZWNrQ2VsbCA9IGZhbHNlOworICAgIGlmICho
YXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5
cGUoKSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtdXN0Q2hlY2tDZWxsID0gdHJ1
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQogewog
ICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSAmJiBnbG9iYWxP
YmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggY2I4ZDNiYjAz
MDUyODkxMDhhOGQ4ODFmMDAyMzE0Njg0MzJmYWNmMC4uNDU4NWIxMDBhYzdkYTk0ODIxNGFkOGM4
ZmZiYjIxOTRhYWM3MGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkK
ICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgaWYgKCFjb3Vu
dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3Vu
dGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CkBAIC01
OCw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYg
a2V5KSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAg
ICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAoaXRl
ciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjYsOCArNjgsNiBA
QCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5z
aXplKCk7IH0KICAgICAKLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJlZ2lu
KCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIGNv
bnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAg
IGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAg
CkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVk
IGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCiAgICAgVmVjdG9yPEtleUFuZENv
dW50PiBidWlsZExpc3QoKSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xv
Y2spOwogICAgICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGxpc3Q7CiAgICAgICAgIGZvciAoY29u
c3RfaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikKICAgICAg
ICAgICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpKTsK
QEAgLTEwNiwxNyArMTA3LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAg
fQogICAgIAotICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0KKyAgICB2b2lkIGNs
ZWFyKCkKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9t
YXAuY2xlYXIoKTsKKyAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
ICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAg
ICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fbWFwLnJlbW92ZUlmKFsmZnVuY3Rv
cl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBw
YWlyKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5r
ZXksIHBhaXIudmFsdWUpKTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAKIHByaXZhdGU6
CisgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPiBt
X21hcDsKIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMTdiNDEyZWM1ZWQyN2JjZTU5Zjg3ZDA1MGI5ZmVhNDA3NTdiZjQ5MS4uYzRi
YjdkODBmNWUyNmQ1MzIxOGUyZGUyZjNlMDhkZmQzYTJjYTE4NSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAy
MC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFzZWxpbmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanM6IEFkZGVkLgorICAg
ICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVx
KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUu
YXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAgIChu
b0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVz
dFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGlj
RGVsQnlWYWwpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5s
aW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRf
ZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9J
bmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2Vx
Lm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFs
Lm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRl
c3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5
RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVC
eUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
TWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgor
ICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxl
LXN0cnVjdHVyZS5qczoKKyAgICAgICAgKiBzdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1j
YWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToK
KyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5l
LmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLm1h
a2VGb28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lu
bGluZS5hc3NlcnRfbmVxLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtl
Rm9vMik6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0
ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0
ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3Mp
OgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxl
dGVJbmRleC5tYWtlRm9vNSk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZE1pc3MudGVzdERlbGV0ZUluZGV4KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJ
bmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAgIChub0lubGlu
ZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9J
bmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorCiAyMDIwLTAyLTA2ICBTdWtvbHNhayBT
YWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPiBhbmQgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgSmF2YVNjcmlwdCBzdHJpbmcgY29ycnVwdGlv
biB1c2luZyBSZWdFeHAgd2l0aCB1bmljb2RlIGNoYXJhY3RlcgpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhp
Yy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2Fj
aGUtcG9seW1vcnBoaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQxNDA2ZjY3OTk4MzhjMTM2ZmFlNmU5MDRk
ZjQ5YTAyZTViYTA3MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAsMCArMSw1
MyBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9Citu
b0lubGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVx
KQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24g
bWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0g
PSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAg
ICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAg
ICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAx
CisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6
IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZh
bCkKKworZm9yIChsZXQgaT0wOyBpPDEwMDA7ICsraSkgeworICAgIHRlc3RQb2x5bW9ycGhpY0Rl
bEJ5VmFsKGkpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHktaW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzE2NjEyZDJhNGM4NGZhNzE2
NjRiZjJmOTFhYmU3MDVhMzBiODJhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDE2MSBA
QAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24g
YXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9Citub0lu
bGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQor
CitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAg
ICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZv
bworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUw
KQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFr
ZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAg
ICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0
KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZv
by5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9v
WyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQor
fQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMigpIHsKKyAgICAgICAg
bGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisg
ICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMigpCisgICAg
fQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0g
YXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9l
cShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkK
KyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09
IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVFbXB0
eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzMoKSB7CisgICAgICAgIGxldCBm
b28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAg
ICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzMpCisKKyAg
ICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSBtYWtlRm9vMygpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBq
PDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFn
ID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0g
PSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICB9Cit9
Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFy
ID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFz
c2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBm
b28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29i
YXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFs
c2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFs
c2UpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAg
IGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAg
ICBub0lubGluZShtYWtlRm9vNCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZv
ciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkKKyAg
ICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28g
PSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0
X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAx
KQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2ZvciAobGV0IGk9MDsgaTwxMDAwMDsg
KytpKSB7CisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVE
ZWxldGVCeVZhbCgpCisgICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanMKaW5kZXggMjJjY2E5ZmQyMWRiMDcyNmJhNmIxZDJiNjVkOWRhNWI4M2E4YTgz
OC4uNWY1NGVlMjE2YmJmZmFiYzAwN2FkNTM5MDdmZGE2YmJmNDE3ZjdlYyAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMKQEAgLTI0LDUgKzI0LDUgQEAgZnVuY3Rpb24g
ZG9UZXN0KCkgewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAw
MDAwOyArK2kpIGRvVGVzdCgpCitmb3IgKGxldCBpPTA7IGk8MTAwMDAwMDsgKytpKSBkb1Rlc3Qo
KQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNh
Y2hlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZjA4ZGMwZGIyMGYzNzZiNTg4ZjU5ZDYzZjUxMmQ2NjBjN2NmMzYyCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNo
ZS5qcwpAQCAtMCwwICsxLDIzNSBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAg
IGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWls
ZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09
ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09
IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAi
ICE9PSAiICsgYik7Cit9Citub0lubGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitu
b0lubGluZShhc3NlcnRfbmVxKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgp
IHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5i
YXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vKQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsK
KyAgICAgICAgYXJyW2pdID0gbWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBq
PDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9
IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0g
MworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQp
CisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBt
YWtlRm9vMigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsK
KyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09
IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAg
YXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0
aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZv
bzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisg
ICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9J
bmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxl
dCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMygpCisgICAgfQor
CisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJy
W2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBm
b28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQor
ICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJh
ciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVC
eUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAg
ICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAorICAgICAg
ICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZv
b2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAg
cmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNCkKKworICAgIGFyciA9IG5l
dyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IG1ha2VGb280KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9
PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAg
ICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAg
IGFzc2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2Z1
bmN0aW9uIHRlc3REZWxldGVJbmRleCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNSgpIHsKKyAg
ICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIg
PSAyCisgICAgICAgIGZvb1swXSA9IDIzCisgICAgICAgIGZvb1sxXSA9IDI1CisgICAgICAgIGFz
c2VydF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBm
b29bMV0sIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28K
KyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzUpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTAp
CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtl
Rm9vNSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbyku
bGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3Nl
cnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQo
Zm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChm
b29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAg
ICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1swXSwgMjMp
CisgICAgICAgIGFzc2VydF9lcShmb29bMV0sIHVuZGVmaW5lZCkKKyAgICAgICAgZm9vWzFdID0g
MQorICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCAxKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RE
ZWxldGVJbmRleCkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkgeworICAg
IGZ1bmN0aW9uIG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9v
WyJiYXoiK2ldID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJi
YXoiK2ldCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzYp
CisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsr
aikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAgfQorCisgICAgZm9yIChsZXQg
aj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAgICAgICBm
b28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1
ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwpCisKK2ZvciAobGV0IGk9MDsgaTwxMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJ
ZE1pc3MoKQorICAgIHRlc3REZWxldGVJbmRleCgpCisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlW
YWwoaSkKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390473</attachid>
            <date>2020-02-11 17:45:51 -0800</date>
            <delta_ts>2020-02-11 18:47:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200211174550.patch</filename>
            <type>text/plain</type>
            <size>72670</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzI2YjJhZGYwNWQxYWY1ODlmMmExOGEwMmJmMjQ0ZGM0ZDE1MTM1Li42MTkzOGY3YzdhMmZjOWJj
MjY5N2JkMzU3ZWZhYWQzYjM2MTM1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9ubHku
IFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVzdGlu
Zy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBjb2Rl
IGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2FjaGVk
IGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3MgaXMg
YSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0gRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlzdHMs
IGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25kaXRp
b25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQgbXVz
dCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBUaGlz
IGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0cyB3aXRoIERGRyBkaXNh
YmxlZDoKKworICAgICAgICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZSAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAg
ICAgICAgZGVmaW5pdGVseSAxLjE2NTB4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLXBvbHltb3JwaGljICAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluICAgICAgKG5ldXRyYWwpCisKKyAgICAgICAgV2l0aCBE
RkcgZW5hYmxlZCwgZXZlcnl0aGluZyBpcyBuZXV0cmFsL3NsaWdodGx5IG5lZ2F0aXZlIGV4Y2Vw
dCBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLCB3aGljaCBpcyA2JSBzbG93ZXIuIFRoaXMg
cGF0Y2ggZG9lcyBub3QKKyAgICAgICAgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgREZHIGNvZGUsIGJ1
dCBsaWtlbHkgYWZmZWN0cyB0aGUgdGllciB1cCB0aW1pbmdzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpy
ZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChK
U0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklU
RGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxC
eSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlYWJs
ZUlkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNhY2hlYWJsZUlkZW50aWZpZXI6
OkNhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVO
ZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5kZXhpbmdI
ZWFkZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hl
YWRlciBjb25zdCk6CisKIDIwMjAtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFBsYWNhdGUgZXhjZXB0aW9uIGNoZWNrIHZhbGlkYXRvciBpbiBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTEwZjM3OGY2OTRkZGFjMmRhNjc0MzEyYzQw
ODg1MGI5OWMwZDRhMS4uMmQxOTY1NjIxOWVhOTMzMzA3M2E5MDhiYjUwOTAzYWFjYmZlMDhkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5f
bWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92
YWwgaW4gYmFzZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3Ry
dW06OmJ1aWxkTGlzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVt
OjpiZWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVk
LgorCiAyMDIwLTAyLTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IG9uIHdhdGNoT1Mgc2ltdWxh
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggMmFmNDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjliYTk3NS4uOTk2ZmJiZmVlOTk3
MTMyM2Y1M2ZmNzdlNjlkN2IzMjZlYTcwNmM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMsOCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2Fz
ZSBJbk1pc3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxl
dGVNaXNzOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2Ug
U3RyaW5nTGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAg
ICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1
bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsK
QEAgLTEyMyw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdT
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsK
IH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0
ZSgKKyAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJl
ID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
IHsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5v
dCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNv
ZGUgYmVsb3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdT
dHJ1Y3R1cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisg
ICAgICAgIGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1
cmUsIHsgfSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAg
LTI2Miw2ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVN
YXRjaCgpIGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBo
YXZlIGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRl
bnRpZmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2Fz
ZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2Ug
UmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYg
KzMzMCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBj
b25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJh
bnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJs
ZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1p
c3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3ND
YXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAg
Y2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBj
YXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2Fz
ZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcs
NiArNDc0LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0s
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNl
dHRlcjoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVs
ZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlz
czoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVy
OgpAQCAtNDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwg
VmVjdG9yPEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBD
dXN0b21BY2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6
CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6
CiAgICAgY2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2Fu
UmVwbGFjZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoK
ICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVO
b25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToK
ICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91
dC5wcmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9w
b2x5UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUg
PT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIs
IHBvaW50ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0
dXJlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRl
ckR1bXAobV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vz
c0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAog
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBE
ZWxldGU6CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQo
bV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgsNyBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9y
Q2FsbChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zm
c2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAgICAgdmFs
dWVSZWdzLApAQCAtMTg5Niw2ICsxOTMzLDY3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNh
c2UgRGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Io
c3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LmJhc2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgICAg
ICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAg
QVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOwor
CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2Vy
dmVkU3RhdGUgPQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJz
QnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6
Ok5vRXh0cmFTcGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAg
ICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4
aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNo
ZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2Vs
bC4KKyAgICAgICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFtYXlOZWVkVG9DaGVja0NlbGwp
OworICAgICAgICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGll
cywgc2luY2Ugb3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAgICAgICAgYm9vbCBzaG91bGRO
dWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0lu
ZGV4aW5nSGVhZGVyOworCisgICAgICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1ZSgpLCB2YWx1ZVJl
Z3MpOworCisgICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkp
IHsKKyAgICAgICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0ZXJmbHkodm0sIHZh
bHVlUmVncy5wYXlsb2FkR1BSKCksIGJhc2VHUFIpOworICAgICAgICB9IGVsc2UgaWYgKGlzSW5s
aW5lT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAg
ICAgICAgICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRk
cmVzcygKKyAgICAgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAgICAgICAgICAgICAgICAgICAg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsKKyAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdzLAor
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJ
bkJ1dHRlcmZseShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KG5l
d1N0cnVjdHVyZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRzKSwKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
KTsKKworICAgICAgICBqaXQubW92ZVZhbHVlKGpzQm9vbGVhbih0cnVlKSwgdmFsdWVSZWdzKTsK
KworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhqaXQs
IHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6IHsKKyAgICAgICAg
aml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4oZmFsc2UpLCB2YWx1ZVJlZ3MpOworICAgICAgICBzdGF0
ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU1p
c3M6IHsKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4odHJ1ZSksIHZhbHVlUmVncyk7
CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBBcnJheUxlbmd0aDogewogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2Ny
YXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApp
bmRleCA3OWQzMTAxNTVlOTNhNTQ1M2QyODYxYzQzMjI3YmEzYmFjMTlmMjc3Li5jNmM4MTg0NDYz
NDFkMGE0M2M2N2FlYzkzMTgzMzM3NDc4N2QxODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgogICAgIGVu
dW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBMb2FkLAogICAgICAgICBUcmFuc2l0
aW9uLAorICAgICAgICBEZWxldGUsCisgICAgICAgIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwKKyAg
ICAgICAgRGVsZXRlTWlzcywKICAgICAgICAgUmVwbGFjZSwKICAgICAgICAgTWlzcywKICAgICAg
ICAgR2V0R2V0dGVyLApAQCAtMTQ2LDggKzE0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cnVj
dHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+ID0gbnVsbHB0cik7CiAKICAgICAvLyBUaGlzIGNyZWF0ZSBtZXRob2Qgc2hvdWxkIGJl
IHVzZWQgZm9yIHRyYW5zaXRpb25zLgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7
CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShW
TSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUp
OwogICAgIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVj
dHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIApAQCAtMTU3LDcgKzE2Myw3IEBAIHB1YmxpYzoKIAogICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0g
VHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9
PSBEZWxldGUpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKTsK
ICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAgLTE2NSw3ICsxNzEs
NyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24pOworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSk7CiAgICAgICAgIHJldHVy
biBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDEzMjQwOWMwYTQ1MTBi
ZGZhOGVjZTMzYjc0MzQ3MTYwMmQ3YjBlNzkuLmIxNjZjMzBjMThhNTIzYTc2MjVmMzlhZjZiNzg5
NTA2N2FhNWYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNzk1LDYgKzc5NSwxNSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlKQogICAg
IGNhc2UgQWNjZXNzQ2FzZTo6VHJhbnNpdGlvbjoKICAgICAgICAgb3V0LnByaW50KCJUcmFuc2l0
aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZToKKyAg
ICAgICAgb3V0LnByaW50KCJEZWxldGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNj
ZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0
ZU5vbkNvbmZpZ3VyYWJsZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNl
OjpEZWxldGVNaXNzOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU1pc3MiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQWNjZXNzQ2FzZTo6UmVwbGFjZToKICAgICAgICAgb3V0LnByaW50
KCJSZXBsYWNlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDYxNzg3MzdmOWY4YTlj
ZDBiNmRkYWQ1N2YxY2YxMmVmZTRmY2E3MDUuLjk2YTFiYWVjYmU0Y2JiYjc2ZGJkZWRhODA1NjVh
MmM1OTg2NTUyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjc2LDYgKzI3NiwxMiBAQCB2b2lkIFN0cnVjdHVy
ZVN0dWJJbmZvOjpyZXNldChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBjYXNlIEFjY2Vzc1R5
cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKKyAgICAgICAgcmVzZXRE
ZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWw6CisgICAgICAgIHJlc2V0RGVsQnko
Y29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAKICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCBkZGNlODVlYzAyNTU1NzZjOWUz
NDUxZjY0NzM2ZDEyYzM4OTQyODAzLi5iNTc1YmRkMjE2MTljMmRmZTRmMTgyZmFlZDkwZjI2OGU5
ZTI2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaApAQCAtNTUsNyArNTUsOSBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBp
bnQ4X3QgewogICAgIEdldEJ5VmFsLAogICAgIFB1dCwKICAgICBJbiwKLSAgICBJbnN0YW5jZU9m
CisgICAgSW5zdGFuY2VPZiwKKyAgICBEZWxldGVCeUlELAorICAgIERlbGV0ZUJ5VmFsCiB9Owog
CiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNT
dGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRlNDQ0YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkw
NDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1h
Y3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRo
SnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRT
ZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCisgICAgbWFjcm8oRGVsQnlS
ZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKIAog
Y2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
Njg3MTFjZTVkZDczMDVkOTZjMWYwMTZmYjIyN2M2YmI1ZmFhMzhkYi4uNDgzZTljNDIxNDQ1NDZl
ZGI0ZDg0MTcxYjE4NzVkMTk4ZTM2MmFkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAg
ICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwog
ICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9k
ZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01
ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwp
CisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVy
dHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3
NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXpl
SW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJ
bmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFu
Y2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3
NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1
ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDAsNyAr
NTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93
aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
YnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiop
OwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZl
Y3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklU
SW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2Vu
ZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+
IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9p
bnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9j
YWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYgKzkzOCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAg
ICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNp
Z25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxC
eVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRf
TUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9N
QVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEu
LmI2MmZmNzdmOTlhMTkxNDE2NjAzYjBjZjlhOGY0OTFkNDI3Y2ZlNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBA
IC0xNjIsNiArMTYyLDY2IEBAIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVy
YXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25T
dHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1
bHQpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+
aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CisgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQ
UigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBi
YXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJv
cGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBh
eWxvYWRHUFIoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1YkluZm8tPmJhc2VU
YWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVz
dWx0LnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0
eS50YWdHUFIoKTsKKyNlbmRpZgorfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5s
YWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBt
X2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Zmlu
YWxpemUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQor
eworICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAg
ICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJ
ZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQpCisgICAgOiBCYXNlKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJ
RCwgdXNlZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZp
ZXIgPSB0cnVlOworICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9h
ZEdQUigpKTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9z
dHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAg
bV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7CisgICAgbV9zdHViSW5m
by0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisjZW5kaWYKK30KKwordm9pZCBK
SVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQp
Cit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0
LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBK
SVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwg
TGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Cisg
ICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCiBKSVRJbkJ5
SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBi
ZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li4zNTU1ZmVjNWRkM2EyMDRh
MmE4YWMzZmNlY2MzNjI1ZmI2MjI2YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNDIsNiArMTQyLDU2IEBAIHBy
aXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitjbGFzcyBKSVREZWxCeVZhbEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFz
ZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1Bh
dGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1
bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAg
fQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5r
QnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAg
bV9zbG93UGF0aEp1bXA7Cit9OworCitjbGFzcyBKSVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklURGVsQnlJZEdlbmVyYXRvcigpIHsgfQorCisg
ICAgSklURGVsQnlJZEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
c2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhK
dW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7
CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0
ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKIGNsYXNzIEpJVEluQnlJZEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5
SWRHZW5lcmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCmluZGV4IGUzNjI2NzMyNWM3NGFlMjJmODYxOGVhOWUyYWQwMDJlNDhkYzYzMzQuLmYy
ZjA5NGViNWRlMGEzMTVmOWE0MDZkZjBkMzc5Yzc5MDU5ZjkwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjE1Nyw4ICsyMTU3LDMxIEBAIHN0
YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIFZNJiB2CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
ICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgYmFz
ZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsQnko
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgYmFzZVZhbHVlLnN0cnVjdHVyZU9y
TnVsbCgpLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAg
ICAgICB9CisgICAgfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBib29sIHJlc3Vs
dCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBiYXNlVmFsdWUsIHVp
ZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMjE5OCwxMiArMjIyMSwzOCBAQCBzdGF0aWMgYm9vbCBkZWxldGVC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Vk0mCiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkS2V5KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKworICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50
aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBp
ZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkgfHwgIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewor
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
OworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9j
aywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICByZXBhdGNo
RGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgYmFzZVZhbHVlLnN0cnVj
dHVyZU9yTnVsbCgpLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxC
eVZhbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5VmFs
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpKSk7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2MjEwYzVhMDczNDE5NjgzZDYw
ZWE4YzQ4Y2Q0M2VlZmY4MmEzMDBjLi5iNGE3MWFkYmNkMTkwZWQ1MzUzMjRmZDQ0MjlmZjlhYzY0
MjE0OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAt
MjUxLDkgKzI1MSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVS
TkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNS
ZXN1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRh
cmdldCkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1
ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBF
bmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9iamVjdCkgV1RGX0lOVEVS
TkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAppbmRleCBhYmY1MmY3MTNlOGFhMGFmYjVlODA1YzdjZjNmMWQzODgzNzFjMmY2Li44MDU3MDZl
NDgyMmE5MjlhMDNmYmI1YTVhNDc3ZjA3MjBlMWNiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzg3LDkgKzM4NywzNSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERl
bEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIGludCBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2Up
OworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1f
ZGVsQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9jb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuaW1wbCgpOworCisgICAgSklURGVsQnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1ttX2RlbEJ5SWRJbmRleCsrXTsKKworICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1
bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIGRzdCwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHVpZCk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkgKzQyNCwzOSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdp
c3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2Up
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QwKTsKKyAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdFN0cmluZyhyZWdUMCkpOworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdl
bigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlWYWxz
LmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OworCisgICAgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlW
YWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVs
ZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHJlZ1QwLCByZWdUMSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRjOGJkYWVl
ZjE0Yy4uMjRmYzc2ZTRiYmJmM2EyNGZjMjM2OWM1MTk4NDk5NGQ0ODhiOTBkOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIo
cHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlk
R2VuZXJpYywgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1Qx
LCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIGRzdCwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTE4MjA0MTU1NGJkYzc2YzE5MWNiMTM4NWQxM2E5Yzgx
ZmZkNDVlYi4uNzZhZDQ4Mzg2NWIxZGYxNTgyOGQyYmEyOTYxYjMwNzQzNjI2ZjllYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNv
ZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOworICAgICAgICAgICAgICAg
IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIGlk
ZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRl
cigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpKSB7CkBAIC03
MzQsNiArNzM0LDg2IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAK
K3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbEJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OworCisg
ICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKKyAgICAgICAgaWYgKGZvcmNlSUNG
YWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsK
KworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhb2xkU3RydWN0dXJlKQorICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKGlzQ29weU9uV3Jp
dGUob2xkU3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nl
c0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAg
ICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZS0+aXNPYmplY3Qo
KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvbGRTdHJ1Y3R1cmUtPmdldENvbmN1
cnJlbnRseShwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzKTsKKworICAgICAgICBib29s
IGhhc1Byb3BlcnR5ID0gaXNWYWxpZE9mZnNldChvZmZzZXQpOworICAgICAgICBib29sIGlzQ29u
ZmlndXJhYmxlID0gaGFzUHJvcGVydHkgJiYgIShhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKworICAgICAgICBpZiAoaGFzUHJvcGVy
dHkgJiYgaXNDb25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG5ld09m
ZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHko
b2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCk7CisgICAgICAgICAgICBpZiAo
IW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwor
ICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFi
bGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNTRVJUKG5ld09mZnNldCA9PSBvZmZz
ZXQpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpID09IG9s
ZFN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1Byb3BlcnR5
RGVsZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+
aXNPYmplY3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQp
KTsKKyAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNv
ZGVCbG9jaywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBuZXdPZmZzZXQsIG9s
ZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5ICYmICFpc0Nv
bmZpZ3VyYWJsZSkKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
KHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwgQ2FjaGVh
YmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUs
IHsgfSwgbnVsbHB0cik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3Q2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVN
aXNzLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9s
ZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9
IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwg
V1RGTW92ZShuZXdDYXNlKSk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29k
ZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIHByb3BlcnR5TmFtZSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZmly
ZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ss
IHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVw
T25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFz
ZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQorewor
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlm
ICh0cnlDYWNoZURlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIG9sZFN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkg
eworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNl
VmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIHByb3BlcnR5TmFtZSkp
OworICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgIH0KK30K
Kwogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkBAIC0xMzkxLDYg
KzE0NzEsMTUgQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1
bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKK3ZvaWQg
cmVzZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1h
bCkKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAg
ZWxzZQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Cisg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCiBzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAo
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDZmMGYyNjQxMWVj
ZGVhMTkyYjcwNjIxMGU4YTk5NDRiYjRmOWZlMzkuLjI2MmU4Zjc3M2YyZmQ2M2UxZDQ4ODZiYTZm
NDViODViOTBiN2NmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00MSw5
ICs0MSwxNSBAQCBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CiAgICAgRGlyZWN0CiB9OwogCitlbnVt
IGNsYXNzIERlbEJ5S2luZCB7CisgICAgTm9ybWFsLAorICAgIE5vcm1hbEJ5VmFsCit9OworCiB2
b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNW
YWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBh
dGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5
S2luZCk7CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwg
SlNWYWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5
U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxCeShK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hJ
bkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIGNvbnN0IElkZW50
aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJ
bmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+KTsKQEAgLTUzLDYgKzU5LDcgQEAgdm9pZCB1bmxpbmtGb3IoVk0mLCBD
YWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50KTsKIHZvaWQgcmVzZXRHZXRC
eShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0
UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldERlbEJ5
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJ
bkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbnN0YW5j
ZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChD
b2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5o
CmluZGV4IGZmYjNlYjlkMDA1Y2Y2ZmQwOGZmZDJiYjg4YjlkNTg3YmFlZDBmZjYuLjEwN2I1ZDYw
NzIwMzcwNTFmNmE3YzFlOWNiMGMxNWYyNjU4OTc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaApA
QCAtNDIsNiArNDIsNyBAQCBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRl
bnRpZmllcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogCiBpbmxpbmUgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihKU0NlbGwqIGlkZW50aWZpZXIpCiB7Cisg
ICAgQVNTRVJUKGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoaWRlbnRpZmllcikpOwogICAgIHNl
dENlbGxCaXRzKGlkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMxYmI0
MzBmNmQ1OGIxZDViMTE1ZGE1MTNjNWJjYzBiZjUzLi4wNTk4MmY0ZjUzMjkwZTE5YjUzYmY4Y2Iy
Y2E2MTQwNjIzMmUyY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAgYm9v
bCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm8KICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5
KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1bHQg
PSBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYWNkMjlkZWQ4
MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFkZi4uYTBlMmRmM2MyMjcxYWVlYjkwMTU5YWVm
MDE2MTA0MjU3OTZlOTE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcApAQCAtMjAwOCw3ICsyMDA4LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAg
ICAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbih2bSwgcHJvcGVydHlOYW1lLCBbXSAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
JiwgUHJvcGVydHlPZmZzZXQsIFByb3BlcnR5T2Zmc2V0KSB7IH0pOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRjaHBv
aW50RmlyZSk7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+bV9idXR0ZXJmbHkgJiYgIXN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hl
YWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSk7CiAgICAgICAgICAg
ICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgdGhpc09i
amVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0g
aW52YWxpZE9mZnNldDsKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tYXhPZmZz
ZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCmluZGV4IDE5Nzc1OWVhNzljYjg3ZTIxNDAzYTgzY2Y4MzcwNWRkMmNlMTU0
NzcuLjEyN2FiMTEzODEwNGI0NDU0NjUzMDU3YzFhNTFmODA0MjA0OTdkMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtNTQ0LDggKzU0NCw3IEBA
IFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewotICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJy
ZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQp
OwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7CiAK
QEAgLTU1MywxNiArNTUyLDEzIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAgICAgICAgIHZt
LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7CiB9CiAKLVN0cnVj
dHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUqKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogICAg
IEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NF
UlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0g
ICAgc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7Ci0KICAgICBj
b25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7CisgICAgb2Zmc2V0ID0gaW52YWxpZE9m
ZnNldDsKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUt
Pm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMsIGlz
QWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+
dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkp
OwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQo
KTsKQEAgLTU3MiwxMSArNTY4LDI4IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Cisg
ICAgc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1
dGVzKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsK
K30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOworICAgIHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5
TmFtZS51aWQoKSwgYXR0cmlidXRlcyk7CisKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgb2Zmc2V0KTsKK30KKwogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3Bl
cnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KSk7CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHMg
PSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9IHNfbWF4VHJhbnNpdGlvbkxlbmd0
aDsgcyA9IHMtPnByZXZpb3VzSUQoKSkKQEAgLTEyMDcsNyArMTIyMCw3IEBAIFJlZjxTdHJ1Y3R1
cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUsIGJvb2wm
IHNhd1BvbHlQcm90CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiB7Ci0gICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygp
LT5jbGFzc05hbWUsICIsIHsiKTsKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpb
IiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihpZCgpKSksICIsICIsIGNsYXNz
SW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWE7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGIz
ZGIzODU2ZTM4MTFkMGVmMWExNjUzZmQ3YWMxYjhhZmQyMjJiZWUuLmZhYzQ4NmVhZDczMDZjNGU3
NTM4ODc1YTI2MDI3YmViMmY2MTMzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCkBAIC0xOTEsNyArMTkxLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
cm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5
VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVy
ZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVu
dGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwg
SlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRl
Q2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9D
YWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwpAQCAtNDc3LDYgKzQ3
OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihj
b25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29s
JiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCkBAIC03MTMsNiAr
NzE1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxs
cHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwo
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9m
ZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFz
IGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFu
ZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRv
IGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdmNzE0YzA1YjE1M2UwODEzOWU0
OTFjZDhjZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUyMzIyYTQ2MDE3NWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBA
IC0yMjQsMTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVh
ZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3
KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcq
PihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wg
U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29u
c3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAo
IWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJldHVy
biB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5
cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxl
eGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5o
IGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4
MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcw
ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAg
cHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAg
ICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVu
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAg
ICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAg
IAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0
ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4
LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3Qt
Y291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlz
dCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAg
IFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBp
dGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAgICAgbGlzdC5h
cHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsx
MDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5jbGVhcigpOwor
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVt
b3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUg
SGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1
ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxl
IExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBm
OWUxMWJkNDc5YmExNTA0NzQ4ZjU4M2JhNmZhMzEyNWUzNzg0NTMxLi5jYTdhNTE5Yjk0Y2FiNjhj
YmUwN2UyM2IyOGE4ODBkZjlhMTEzZjMwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAyLTEwICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUg
Q2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQp
OgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAo
bm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRl
c3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2Vy
dC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNE
ZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6Cisg
ICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6
IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAg
IChhc3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRf
ZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToK
KyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNz
ZXJ0X25lcS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURl
bGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpz
OgorICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNz
ZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5v
SW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAg
ICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9u
ZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVC
eVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENh
Y2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChu
b0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4Lm1ha2VG
b281KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0
RGVsZXRlSW5kZXgpOgorICAgICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJ
bmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9s
eW1vcnBoaWNEZWxCeVZhbCk6CisKIDIwMjAtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFBsYWNhdGUgZXhjZXB0aW9uIGNoZWNrIHZhbGlkYXRvciBpbiBH
ZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoKS4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5q
cwppbmRleCA0OWEzMWI3ZjI0N2MxYmQwYWNhODJjYjIyZGYyMGU4ZjFiZjYxYmRkLi5hOWVjOTk2
M2ViN2Y2Yzc4Y2VlYjRjNjcyZjgyMDk2MWNhOTE1NjkyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBl
LWNoYWluLmpzCkBAIC0zNiw3ICszNiw3IEBAIGZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7
CiAKIGRlbGV0ZSBDLnByb3RvdHlwZS56CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwOyArK2kp
IHsKK2ZvciAobGV0IGk9MDsgaTwyMDAwMDAwOyArK2kpIHsKICAgICBnZXRaKHt6OiBpfSkKICAg
ICBkb1Rlc3QodW5kZWZpbmVkKQogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGY3ODlmY2I5ODBhZGFmZmQyMzgxYmNjYzI4OGQxZWEyZjA0MmQ2Nwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0
eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAsMCArMSw1MyBAQAorZnVuY3Rpb24g
YXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEs
IGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRp
b24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25l
cShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNz
ZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9Citub0lubGluZShhc3NlcnQp
Citub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorCitmdW5jdGlvbiB0
ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzYoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0gPSAxCisgICAgICAgIGZv
by5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAgICAgICAgcmV0dXJuIGZv
bworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFyciA9IG5ldyBBcnJheSg1
MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1h
a2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAg
ICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAg
ICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3Nl
cnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2Vy
dChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0
KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisK
KyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCkKKworZm9yIChsZXQg
aT0wOyBpPDMwMDAwOyArK2kpIHsKKyAgICB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKQorfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGlu
ZS1jYWNoZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxp
bmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhjNmRjNTZjZTIwYjczMzY4YWYzOGYyNDI1N2EwYmQ5
NmJjMDRmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSwxNjEgQEAKK2Z1bmN0aW9uIGFz
c2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBi
KSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9u
IGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEo
YSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2Vy
dGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorbm9JbmxpbmUoYXNzZXJ0KQor
bm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKKworZnVuY3Rpb24gdGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAg
ICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAy
CisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAo
bGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28oKQorICAgIH0K
KworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEo
T2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZv
bykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisg
ICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAz
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlW
YWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQor
ICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUg
Zm9vWyJiYXoiXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b28yKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAg
ICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1si
YnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJs
ZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkg
eworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1
cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFy
cmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pd
ID0gbWFrZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5
cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAg
ICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAg
YXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVz
dENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAgICBsZXQgZm9v
ID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAg
YXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRl
IGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkK
KworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAg
ICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0p
OworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBh
c3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZm9v
LmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFr
ZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8
NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisgICAgZm9y
IChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5
cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWRNaXNzKQorCitmb3IgKGxldCBpPTA7IGk8MjUwMDA7ICsraSkgeworICAgIHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQor
ICAgIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkTWlzcygpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCmlu
ZGV4IDc3OTVkYzU4MTU3OGU0YzM5ODFjMjJhYzg3NmM0NTU0MTNlNjRkM2MuLjIwZjJjMzljMjQ1
ZmMzOTkzMjA2MWFlYmIxMjhhZWI4OGQ2ZjdjZjQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFi
bGUtc3RydWN0dXJlLmpzCkBAIC0yNCw1ICsyNCw1IEBAIGZ1bmN0aW9uIGRvVGVzdCgpIHsKIH0K
IG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwMDsgKytpKSBkb1Rl
c3QoKQorZm9yIChsZXQgaT0wOyBpPDUwMDAwMDA7ICsraSkgZG9UZXN0KCkKIApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Yw
OGRjMGRiMjBmMzc2YjU4OGY1OWQ2M2Y1MTJkNjYwYzdjZjM2MgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCAr
MSwyMzUgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlv
bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOwor
fQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0
X25lcSkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rp
b24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAx
CisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBB
cnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltq
XSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAy
KQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNz
ZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzIoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFy
ID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4gZm9vCisgICAg
fQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisg
ICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIo
KQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0
IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBh
c3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFn
ID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVh
YmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAg
ICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUg
Zm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28z
KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyAr
K2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0
IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJi
dWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFz
c2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisg
ICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rp
b24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280
KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAg
Zm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAg
ICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9v
LCAnZm9vYmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFi
bGU6IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29i
YXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQor
ICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9v
NCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5i
YWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJi
dWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0ZXN0RGVs
ZXRlSW5kZXgoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxldCBmb28g
PSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBm
b29bMF0gPSAyMworICAgICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRl
IGZvby5iYXIsIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0cnVlKQor
ICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5v
SW5saW5lKG1ha2VGb281KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChs
ZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzUoKQorICAgIH0K
KworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkK
KyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09
IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJi
YXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0sIDIzKQorICAgICAgICBhc3Nl
cnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sxXSA9IDEKKyAgICAgICAgYXNz
ZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0RGVsZXRlSW5kZXgpCisK
K2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1siYmF6IitpXSA9IDEK
KyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6IitpXQorICAgICAg
ICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQorCisgICAgYXJyID0g
bmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAg
ICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kg
aW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKQor
Citmb3IgKGxldCBpPTA7IGk8MTAwMDsgKytpKSB7CisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpCisgICAgdGVzdENhY2hlYWJsZUVt
cHR5RGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkKKyAgICB0
ZXN0RGVsZXRlSW5kZXgoKQorICAgIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390477</attachid>
            <date>2020-02-11 18:47:13 -0800</date>
            <delta_ts>2020-02-12 17:23:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200211184712.patch</filename>
            <type>text/plain</type>
            <size>72688</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzI2YjJhZGYwNWQxYWY1ODlmMmExOGEwMmJmMjQ0ZGM0ZDE1MTM1Li42MTkzOGY3YzdhMmZjOWJj
MjY5N2JkMzU3ZWZhYWQzYjM2MTM1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9ubHku
IFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVzdGlu
Zy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBjb2Rl
IGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2FjaGVk
IGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3MgaXMg
YSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0gRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlzdHMs
IGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25kaXRp
b25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQgbXVz
dCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBUaGlz
IGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0cyB3aXRoIERGRyBkaXNh
YmxlZDoKKworICAgICAgICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZSAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAg
ICAgICAgZGVmaW5pdGVseSAxLjE2NTB4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLXBvbHltb3JwaGljICAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluICAgICAgKG5ldXRyYWwpCisKKyAgICAgICAgV2l0aCBE
RkcgZW5hYmxlZCwgZXZlcnl0aGluZyBpcyBuZXV0cmFsL3NsaWdodGx5IG5lZ2F0aXZlIGV4Y2Vw
dCBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLCB3aGljaCBpcyA2JSBzbG93ZXIuIFRoaXMg
cGF0Y2ggZG9lcyBub3QKKyAgICAgICAgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgREZHIGNvZGUsIGJ1
dCBsaWtlbHkgYWZmZWN0cyB0aGUgdGllciB1cCB0aW1pbmdzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpy
ZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChK
U0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklU
RGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxC
eSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlYWJs
ZUlkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNhY2hlYWJsZUlkZW50aWZpZXI6
OkNhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVO
ZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5kZXhpbmdI
ZWFkZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hl
YWRlciBjb25zdCk6CisKIDIwMjAtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFBsYWNhdGUgZXhjZXB0aW9uIGNoZWNrIHZhbGlkYXRvciBpbiBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTEwZjM3OGY2OTRkZGFjMmRhNjc0MzEyYzQw
ODg1MGI5OWMwZDRhMS4uMmQxOTY1NjIxOWVhOTMzMzA3M2E5MDhiYjUwOTAzYWFjYmZlMDhkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5f
bWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92
YWwgaW4gYmFzZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3Ry
dW06OmJ1aWxkTGlzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVt
OjpiZWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVk
LgorCiAyMDIwLTAyLTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IG9uIHdhdGNoT1Mgc2ltdWxh
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggMmFmNDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjliYTk3NS4uOTk2ZmJiZmVlOTk3
MTMyM2Y1M2ZmNzdlNjlkN2IzMjZlYTcwNmM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMsOCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2Fz
ZSBJbk1pc3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxl
dGVNaXNzOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2Ug
U3RyaW5nTGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAg
ICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1
bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsK
QEAgLTEyMyw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdT
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsK
IH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0
ZSgKKyAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJl
ID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
IHsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5v
dCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNv
ZGUgYmVsb3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdT
dHJ1Y3R1cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisg
ICAgICAgIGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1
cmUsIHsgfSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAg
LTI2Miw2ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVN
YXRjaCgpIGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBo
YXZlIGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRl
bnRpZmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2Fz
ZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2Ug
UmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYg
KzMzMCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBj
b25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJh
bnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJs
ZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1p
c3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3ND
YXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAg
Y2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBj
YXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2Fz
ZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcs
NiArNDc0LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0s
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNl
dHRlcjoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVs
ZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlz
czoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVy
OgpAQCAtNDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwg
VmVjdG9yPEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBD
dXN0b21BY2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6
CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6
CiAgICAgY2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2Fu
UmVwbGFjZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoK
ICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVO
b25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToK
ICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91
dC5wcmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9w
b2x5UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUg
PT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIs
IHBvaW50ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0
dXJlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRl
ckR1bXAobV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vz
c0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAog
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBE
ZWxldGU6CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQo
bV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgsNyBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9y
Q2FsbChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zm
c2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAgICAgdmFs
dWVSZWdzLApAQCAtMTg5Niw2ICsxOTMzLDY3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNh
c2UgRGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Io
c3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LmJhc2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgICAg
ICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAg
QVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOwor
CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2Vy
dmVkU3RhdGUgPQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJz
QnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6
Ok5vRXh0cmFTcGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAg
ICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4
aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNo
ZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2Vs
bC4KKyAgICAgICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFtYXlOZWVkVG9DaGVja0NlbGwp
OworICAgICAgICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGll
cywgc2luY2Ugb3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAgICAgICAgYm9vbCBzaG91bGRO
dWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0lu
ZGV4aW5nSGVhZGVyOworCisgICAgICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1ZSgpLCB2YWx1ZVJl
Z3MpOworCisgICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkp
IHsKKyAgICAgICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0ZXJmbHkodm0sIHZh
bHVlUmVncy5wYXlsb2FkR1BSKCksIGJhc2VHUFIpOworICAgICAgICB9IGVsc2UgaWYgKGlzSW5s
aW5lT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAg
ICAgICAgICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRk
cmVzcygKKyAgICAgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAgICAgICAgICAgICAgICAgICAg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsKKyAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdzLAor
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJ
bkJ1dHRlcmZseShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KG5l
d1N0cnVjdHVyZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRzKSwKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
KTsKKworICAgICAgICBqaXQubW92ZVZhbHVlKGpzQm9vbGVhbih0cnVlKSwgdmFsdWVSZWdzKTsK
KworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhqaXQs
IHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6IHsKKyAgICAgICAg
aml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4oZmFsc2UpLCB2YWx1ZVJlZ3MpOworICAgICAgICBzdGF0
ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU1p
c3M6IHsKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4odHJ1ZSksIHZhbHVlUmVncyk7
CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBBcnJheUxlbmd0aDogewogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2Ny
YXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApp
bmRleCA3OWQzMTAxNTVlOTNhNTQ1M2QyODYxYzQzMjI3YmEzYmFjMTlmMjc3Li5jNmM4MTg0NDYz
NDFkMGE0M2M2N2FlYzkzMTgzMzM3NDc4N2QxODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgogICAgIGVu
dW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBMb2FkLAogICAgICAgICBUcmFuc2l0
aW9uLAorICAgICAgICBEZWxldGUsCisgICAgICAgIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwKKyAg
ICAgICAgRGVsZXRlTWlzcywKICAgICAgICAgUmVwbGFjZSwKICAgICAgICAgTWlzcywKICAgICAg
ICAgR2V0R2V0dGVyLApAQCAtMTQ2LDggKzE0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cnVj
dHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+ID0gbnVsbHB0cik7CiAKICAgICAvLyBUaGlzIGNyZWF0ZSBtZXRob2Qgc2hvdWxkIGJl
IHVzZWQgZm9yIHRyYW5zaXRpb25zLgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7
CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShW
TSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUp
OwogICAgIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVj
dHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIApAQCAtMTU3LDcgKzE2Myw3IEBAIHB1YmxpYzoKIAogICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0g
VHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9
PSBEZWxldGUpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKTsK
ICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAgLTE2NSw3ICsxNzEs
NyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24pOworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSk7CiAgICAgICAgIHJldHVy
biBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDEzMjQwOWMwYTQ1MTBi
ZGZhOGVjZTMzYjc0MzQ3MTYwMmQ3YjBlNzkuLmIxNjZjMzBjMThhNTIzYTc2MjVmMzlhZjZiNzg5
NTA2N2FhNWYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNzk1LDYgKzc5NSwxNSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlKQogICAg
IGNhc2UgQWNjZXNzQ2FzZTo6VHJhbnNpdGlvbjoKICAgICAgICAgb3V0LnByaW50KCJUcmFuc2l0
aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZToKKyAg
ICAgICAgb3V0LnByaW50KCJEZWxldGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNj
ZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0
ZU5vbkNvbmZpZ3VyYWJsZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNl
OjpEZWxldGVNaXNzOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU1pc3MiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQWNjZXNzQ2FzZTo6UmVwbGFjZToKICAgICAgICAgb3V0LnByaW50
KCJSZXBsYWNlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDYxNzg3MzdmOWY4YTlj
ZDBiNmRkYWQ1N2YxY2YxMmVmZTRmY2E3MDUuLjk2YTFiYWVjYmU0Y2JiYjc2ZGJkZWRhODA1NjVh
MmM1OTg2NTUyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjc2LDYgKzI3NiwxMiBAQCB2b2lkIFN0cnVjdHVy
ZVN0dWJJbmZvOjpyZXNldChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBjYXNlIEFjY2Vzc1R5
cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKKyAgICAgICAgcmVzZXRE
ZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWw6CisgICAgICAgIHJlc2V0RGVsQnko
Y29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAKICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCBkZGNlODVlYzAyNTU1NzZjOWUz
NDUxZjY0NzM2ZDEyYzM4OTQyODAzLi5iNTc1YmRkMjE2MTljMmRmZTRmMTgyZmFlZDkwZjI2OGU5
ZTI2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaApAQCAtNTUsNyArNTUsOSBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBp
bnQ4X3QgewogICAgIEdldEJ5VmFsLAogICAgIFB1dCwKICAgICBJbiwKLSAgICBJbnN0YW5jZU9m
CisgICAgSW5zdGFuY2VPZiwKKyAgICBEZWxldGVCeUlELAorICAgIERlbGV0ZUJ5VmFsCiB9Owog
CiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNT
dGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRlNDQ0YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkw
NDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1h
Y3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRo
SnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRT
ZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCisgICAgbWFjcm8oRGVsQnlS
ZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKIAog
Y2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
Njg3MTFjZTVkZDczMDVkOTZjMWYwMTZmYjIyN2M2YmI1ZmFhMzhkYi4uNDgzZTljNDIxNDQ1NDZl
ZGI0ZDg0MTcxYjE4NzVkMTk4ZTM2MmFkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAg
ICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwog
ICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9k
ZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01
ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwp
CisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVy
dHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3
NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXpl
SW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJ
bmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFu
Y2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3
NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1
ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDAsNyAr
NTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93
aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
YnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiop
OwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZl
Y3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklU
SW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2Vu
ZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+
IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9p
bnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9j
YWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYgKzkzOCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAg
ICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNp
Z25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxC
eVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRf
TUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9N
QVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEu
LmI2MmZmNzdmOTlhMTkxNDE2NjAzYjBjZjlhOGY0OTFkNDI3Y2ZlNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBA
IC0xNjIsNiArMTYyLDY2IEBAIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVy
YXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25T
dHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1
bHQpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+
aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CisgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQ
UigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBi
YXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJv
cGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBh
eWxvYWRHUFIoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1YkluZm8tPmJhc2VU
YWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVz
dWx0LnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0
eS50YWdHUFIoKTsKKyNlbmRpZgorfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5s
YWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBt
X2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Zmlu
YWxpemUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQor
eworICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAg
ICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJ
ZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQpCisgICAgOiBCYXNlKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJ
RCwgdXNlZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZp
ZXIgPSB0cnVlOworICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9h
ZEdQUigpKTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9z
dHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAg
bV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7CisgICAgbV9zdHViSW5m
by0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisjZW5kaWYKK30KKwordm9pZCBK
SVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQp
Cit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0
LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBK
SVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwg
TGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Cisg
ICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCiBKSVRJbkJ5
SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBi
ZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li4zNTU1ZmVjNWRkM2EyMDRh
MmE4YWMzZmNlY2MzNjI1ZmI2MjI2YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNDIsNiArMTQyLDU2IEBAIHBy
aXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitjbGFzcyBKSVREZWxCeVZhbEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFz
ZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1Bh
dGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1
bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAg
fQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5r
QnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAg
bV9zbG93UGF0aEp1bXA7Cit9OworCitjbGFzcyBKSVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklURGVsQnlJZEdlbmVyYXRvcigpIHsgfQorCisg
ICAgSklURGVsQnlJZEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
c2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhK
dW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7
CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0
ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKIGNsYXNzIEpJVEluQnlJZEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5
SWRHZW5lcmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCmluZGV4IGUzNjI2NzMyNWM3NGFlMjJmODYxOGVhOWUyYWQwMDJlNDhkYzYzMzQuLmYy
ZjA5NGViNWRlMGEzMTVmOWE0MDZkZjBkMzc5Yzc5MDU5ZjkwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjE1Nyw4ICsyMTU3LDMxIEBAIHN0
YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIFZNJiB2CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
ICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgYmFz
ZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsQnko
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgYmFzZVZhbHVlLnN0cnVjdHVyZU9y
TnVsbCgpLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAg
ICAgICB9CisgICAgfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBib29sIHJlc3Vs
dCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBiYXNlVmFsdWUsIHVp
ZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwpAQCAtMjE5OCwxMiArMjIyMSwzOCBAQCBzdGF0aWMgYm9vbCBkZWxldGVC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Vk0mCiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkS2V5KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKworICAgIGlmIChiYXNl
VmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50
aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBp
ZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkgfHwgIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewor
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
OworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9j
aywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICByZXBhdGNo
RGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgYmFzZVZhbHVlLnN0cnVj
dHVyZU9yTnVsbCgpLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxC
eVZhbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5VmFs
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpKSk7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2MjEwYzVhMDczNDE5NjgzZDYw
ZWE4YzQ4Y2Q0M2VlZmY4MmEzMDBjLi5iNGE3MWFkYmNkMTkwZWQ1MzUzMjRmZDQ0MjlmZjlhYzY0
MjE0OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAt
MjUxLDkgKzI1MSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVS
TkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNS
ZXN1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRh
cmdldCkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1
ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBF
bmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9iamVjdCkgV1RGX0lOVEVS
TkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAppbmRleCBhYmY1MmY3MTNlOGFhMGFmYjVlODA1YzdjZjNmMWQzODgzNzFjMmY2Li44MDU3MDZl
NDgyMmE5MjlhMDNmYmI1YTVhNDc3ZjA3MjBlMWNiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzg3LDkgKzM4NywzNSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERl
bEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIGludCBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2Up
OworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1f
ZGVsQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9jb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuaW1wbCgpOworCisgICAgSklURGVsQnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1ttX2RlbEJ5SWRJbmRleCsrXTsKKworICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1
bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIGRzdCwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHVpZCk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkgKzQyNCwzOSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdp
c3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2Up
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QwKTsKKyAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdFN0cmluZyhyZWdUMCkpOworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdl
bigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlWYWxz
LmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OworCisgICAgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlW
YWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVs
ZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHJlZ1QwLCByZWdUMSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRjOGJkYWVl
ZjE0Yy4uNjRiZGZkYTcxNDE2NTY2YjkxODg3MWRhYzRjOTYwNmVkOGY5NTYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIo
cHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlk
R2VuZXJpYywgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5p
bXBsKCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJh
c2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMs
IGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVlUmVncyhy
ZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTE4MjA0MTU1NGJkYzc2
YzE5MWNiMTM4NWQxM2E5YzgxZmZkNDVlYi4uNzZhZDQ4Mzg2NWIxZGYxNTgyOGQyYmEyOTYxYjMw
NzQzNjI2ZjllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02NDEs
NyArNjQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3ND
YXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBu
ZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikp
OworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9u
KHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
LCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgc2xv
dC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJs
ZUN1c3RvbSgpKSB7CkBAIC03MzQsNiArNzM0LDg2IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUK
ICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90
LCBwdXRLaW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbEJ5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgcmVzdWx0OworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKKyAg
ICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAh
b2xkU3RydWN0dXJlKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAg
ICAgaWYgKGlzQ29weU9uV3JpdGUob2xkU3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpCisgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIW9sZFN0cnVjdHVy
ZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdp
dmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkp
CisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIW9sZFN0
cnVjdHVyZS0+aXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwor
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvbGRT
dHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVz
KTsKKworICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gaXNWYWxpZE9mZnNldChvZmZzZXQpOwor
ICAgICAgICBib29sIGlzQ29uZmlndXJhYmxlID0gaGFzUHJvcGVydHkgJiYgIShhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2Rl
KCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKworICAg
ICAgICBpZiAoaGFzUHJvcGVydHkgJiYgaXNDb25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG5ld09mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCk7
CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
UmV0cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5
QWNjZXNzZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNTRVJU
KG5ld09mZnNldCA9PSBvZmZzZXQpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+
cHJldmlvdXNJRCgpID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoaXNWYWxp
ZE9mZnNldChuZXdPZmZzZXQpKTsKKyAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5h
bWUpLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgfSBl
bHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgaWYgKGhh
c1Byb3BlcnR5ICYmICFpc0NvbmZpZ3VyYWJsZSkKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0g
QWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNv
bmZpZ3VyYWJsZSwgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBpbnZhbGlkT2Zm
c2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBB
Y2Nlc3NDYXNlOjpEZWxldGVNaXNzLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSks
IGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBjb2RlQmxv
Y2ssIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CisKKyAgICAgICAgaWYgKHJlc3Vs
dC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuY29kZSgpKTsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0
aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIHByb3BlcnR5TmFtZSkpOworICAgICAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9
CisgICAgfQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0
dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdp
dmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCBy
ZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERl
bEJ5S2luZCBraW5kKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNoZURlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkg
PT0gR2l2ZVVwT25DYWNoZSkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFj
ZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0o
KSksIHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1h
bCkKKyAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdl
bmVyaWMpOworICAgIH0KK30KKwogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5C
eUlEKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsCiAgICAgYm9vbCB3
YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCkBAIC0xMzkxLDYgKzE0NzEsMTUgQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7CiB9CiAKK3ZvaWQgcmVzZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBpZiAoa2luZCA9
PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSk7CisgICAgZWxzZQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJ
bmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCiBzdGF0aWMgdm9pZCBy
ZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CmluZGV4IDZmMGYyNjQxMWVjZGVhMTkyYjcwNjIxMGU4YTk5NDRiYjRmOWZlMzkuLjI2MmU4Zjc3
M2YyZmQ2M2UxZDQ4ODZiYTZmNDViODViOTBiN2NmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oCkBAIC00MSw5ICs0MSwxNSBAQCBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CiAgICAg
RGlyZWN0CiB9OwogCitlbnVtIGNsYXNzIERlbEJ5S2luZCB7CisgICAgTm9ybWFsLAorICAgIE5v
cm1hbEJ5VmFsCit9OworCiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOwogdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBK
U1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Cit2
b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2lu
ZCk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09i
amVjdCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNs
b3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBT
dHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2Fs
bEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTUzLDYgKzU5LDcgQEAgdm9p
ZCB1bmxpbmtGb3IoVk0mLCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2Fs
bChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50
KTsKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5
S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owordm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlL
aW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
IHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQ
dHJUYWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50
aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJ
ZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGZmYjNlYjlkMDA1Y2Y2ZmQwOGZmZDJiYjg4YjlkNTg3
YmFlZDBmZjYuLjEwN2I1ZDYwNzIwMzcwNTFmNmE3YzFlOWNiMGMxNWYyNjU4OTc5MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRl
bnRpZmllcklubGluZXMuaApAQCAtNDIsNiArNDIsNyBAQCBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQog
CiBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihKU0NlbGwq
IGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoaWRl
bnRpZmllcikpOwogICAgIHNldENlbGxCaXRzKGlkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aAppbmRleCBiODM3ZWMxYmI0MzBmNmQ1OGIxZDViMTE1ZGE1MTNjNWJjYzBiZjUzLi4wNTk4MmY0
ZjUzMjkwZTE5YjUzYmY4Y2IyY2E2MTQwNjIzMmUyY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEz
OSw4ICsxMzksMTAgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm8KICAgICAgICAgdGhpc09iamVj
dC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOwor
CisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBp
ZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKaW5kZXggYWNkMjlkZWQ4MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFkZi4uYTBlMmRm
M2MyMjcxYWVlYjkwMTU5YWVmMDE2MTA0MjU3OTZlOTE5NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjAwOCw3ICsyMDA4LDggQEAgYm9vbCBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXIKICAgICAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+cmVtb3ZlUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBbXSAoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQsIFByb3BlcnR5T2Zmc2V0KSB7IH0p
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0
LCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+
bV9idXR0ZXJmbHkgJiYgIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0
dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgaWYgKCFz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJlKHZt
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0
aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1dHRl
cmZseSk7CiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNldEJ1
dHRlcmZseSh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDE5Nzc1OWVhNzljYjg3ZTIxNDAz
YTgzY2Y4MzcwNWRkMmNlMTU0NzcuLjEyN2FiMTEzODEwNGI0NDU0NjUzMDU3YzFhNTFmODA0MjA0
OTdkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApA
QCAtNTQ0LDggKzU0NCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRy
YW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNl
dCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQog
ewotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIG9mZnNldCwgZGVmZXJyZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCBvZmZzZXQpOwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVy
biBuZXdTdHJ1Y3R1cmU7CiAKQEAgLTU1MywxNiArNTUyLDEzIEBAIFN0cnVjdHVyZSogU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvCiAgICAgICAgIHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZl
cnJlZCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0
aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlv
bmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAotICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7Ci0gICAgc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcyk7Ci0KICAgICBjb25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7CisgICAg
b2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5z
aXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlk
KCksIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4
aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24t
PmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24t
PnRyYW5zaXRpb25PZmZzZXQoKTsKQEAgLTU3MiwxMSArNTY4LDI4IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0m
IHZtLCBTdHJ1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJl
OjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBv
ZmZzZXQpCit7CisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CisgICAgc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlO
YW1lLnVpZCgpLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9m
ZnNldCkKK3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIHN0cnVjdHVyZS0+Z2V0Q29u
Y3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcyk7CisKKyAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICByZXR1cm4gcmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKwogU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBE
ZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7CiAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUs
IHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0gMDsK
ICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9IHNf
bWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZpb3VzSUQoKSkKQEAgLTEyMDcsNyArMTIy
MCw3IEBAIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpT
VmFsdWUgdmFsdWUsIGJvb2wmIHNhd1BvbHlQcm90CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyks
ICI6WyIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKKyAgICBvdXQucHJpbnQoUmF3
UG9pbnRlcih0aGlzKSwgIjpbIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihp
ZCgpKSksICIsICIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKICAgICAKICAgICBD
b21tYVByaW50ZXIgY29tbWE7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCmluZGV4IGIzZGIzODU2ZTM4MTFkMGVmMWExNjUzZmQ3YWMxYjhhZmQyMjJiZWUu
LmZhYzQ4NmVhZDczMDZjNGU3NTM4ODc1YTI2MDI3YmViMmY2MTMzMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0xOTEsNyArMTkxLDggQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
RmlyZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jiwg
RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0g
ICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYs
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlP
ZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9u
KFZNJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJh
bnNpdGlvbldhdGNocG9pbnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVj
dHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxw
dHIpOwpAQCAtNDc3LDYgKzQ3OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBo
YXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJ
bmRleGluZ0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29s
IG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogCkBAIC03MTMsNiArNzE1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRj
aHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQ
cm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYp
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlz
dGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUg
c3RydWN0dXJlIHRoYXQgaGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5
IHRhYmxlLAogICAgIC8vIGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRl
ZCBiZWZvcmUgd2UgZ290IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdm
NzE0YzA1YjE1M2UwODEzOWU0OTFjZDhjZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUy
MzIyYTQ2MDE3NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSW5saW5lcy5oCkBAIC0yMjQsMTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAg
ICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3Qg
SlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsK
IH0KIAoraW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYg
bXVzdENoZWNrQ2VsbCkgY29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAg
aWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Js
b2IudHlwZSgpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwg
PSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qp
CiB7CiAgICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGds
b2JhbE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCBjYjhk
M2JiMDMwNTI4OTEwOGE4ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0
YWQ4YzhmZmJiMjE5NGFhYzcwZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1
bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQg
PSAxKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAo
IWNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQs
IENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsK
QEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBlIGdldChjb25z
dCBUJiBrZXkpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAg
ICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlm
IChpdGVyID09IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2
OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwLnNpemUoKTsgfQogICAgIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAu
YmVnaW4oKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAg
ICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9
CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0K
ICAgICAKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9y
ZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5
QW5kQ291bnQ+IGJ1aWxkTGlzdCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9y
IChjb25zdF9pdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQog
ICAgICAgICAgICAgbGlzdC5hcHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1
ZSkpOwpAQCAtMTA2LDE3ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZv
aWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAg
ICBtX21hcC5jbGVhcigpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgogICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZm
dW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5
cGUmIHBhaXIpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChw
YWlyLmtleSwgcGFpci52YWx1ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIAogcHJp
dmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5
cGU+IG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCBmOWUxMWJkNDc5YmExNTA0NzQ4ZjU4M2JhNmZhMzEyNWUzNzg0NTMx
Li5jYTdhNTE5Yjk0Y2FiNjhjYmUwN2UyM2IyOGE4ODBkZjlhMTEzZjMwIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBA
CisyMDIwLTAyLTEwICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4K
KworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNlbGluZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNo
bWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRkZWQu
CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2Vy
dF9uZXEpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lu
bGluZS5hc3NlcnRfbmVxLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAg
ICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25l
cS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1v
cnBoaWNEZWxCeVZhbCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0
eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFz
c2VydF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2Vy
dC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3Nl
cnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlWYWwubWFrZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxl
RW1wdHlEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURl
bGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlz
cyk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNo
ZWFibGUtc3RydWN0dXJlLmpzOgorICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktaW5s
aW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRf
ZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9J
bmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2Vx
Lm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFs
Lm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRl
c3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5
RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVC
eUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
TWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVz
dERlbGV0ZUluZGV4Lm1ha2VGb281KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgpOgorICAgICAgICAobm9JbmxpbmUudGVzdERl
bGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAg
IChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisKIDIwMjAtMDItMTAgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFBsYWNhdGUgZXhjZXB0aW9uIGNo
ZWNrIHZhbGlkYXRvciBpbiBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoKS4KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlw
ZS1jaGFpbi5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9t
LXByb3RvdHlwZS1jaGFpbi5qcwppbmRleCA0OWEzMWI3ZjI0N2MxYmQwYWNhODJjYjIyZGYyMGU4
ZjFiZjYxYmRkLi5hOWVjOTk2M2ViN2Y2Yzc4Y2VlYjRjNjcyZjgyMDk2MWNhOTE1NjkyIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90
b3R5cGUtY2hhaW4uanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCkBAIC0zNiw3ICszNiw3IEBAIGZvciAobGV0IGk9
MDsgaTwxMDAwMDsgKytpKSB7CiAKIGRlbGV0ZSBDLnByb3RvdHlwZS56CiAKLWZvciAobGV0IGk9
MDsgaTwxMDAwMDAwOyArK2kpIHsKK2ZvciAobGV0IGk9MDsgaTwyMDAwMDAwOyArK2kpIHsKICAg
ICBnZXRaKHt6OiBpfSkKICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9y
cGhpYy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUt
Y2FjaGUtcG9seW1vcnBoaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY3ODlmY2I5ODBhZGFmZmQyMzgxYmNj
YzI4OGQxZWEyZjA0MmQ2NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAsMCAr
MSw1MyBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9u
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9
Citub0lubGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRf
bmVxKQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rp
b24gbWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIr
aV0gPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0K
KyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAg
IGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7Cisg
ICAgICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8
NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQo
Zm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3Ro
LCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5iYWcg
PSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9
IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgi
YmF6IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxC
eVZhbCkKKworZm9yIChsZXQgaT0wOyBpPDMwMDAwOyArK2kpIHsKKyAgICB0ZXN0UG9seW1vcnBo
aWNEZWxCeVZhbChpKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVs
ZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Rl
bGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhjNmRjNTZjZTIwYjcz
MzY4YWYzOGYyNDI1N2EwYmQ5NmJjMDRmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSwx
NjEgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQor
bm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25l
cSkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24g
bWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVy
biBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBBcnJh
eSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9
IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQor
ICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFz
c2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2Vy
dChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0
KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
IH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzIoKSB7CisgICAg
ICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0g
MgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIoKQor
ICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZv
byA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3Nl
cnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09
IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitq
XSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9J
bmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxl
RW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAgICBs
ZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAg
ICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9v
LmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28zKQor
CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2op
IHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9
MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
K2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2Vy
dCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAg
fQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24g
dGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkg
eworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9v
LmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAg
ICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxl
dGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAn
Zm9vYmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6
IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIs
IGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAg
ICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9
CisgICAgbm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAg
ICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgp
CisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3Qg
Zm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFz
c2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcg
PT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWci
K2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9J
bmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmb3IgKGxldCBpPTA7IGk8MjUw
MDA7ICsraSkgeworICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlWYWwoKQorICAgIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAg
IHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFi
bGUtc3RydWN0dXJlLmpzCmluZGV4IDc3OTVkYzU4MTU3OGU0YzM5ODFjMjJhYzg3NmM0NTU0MTNl
NjRkM2MuLjIwZjJjMzljMjQ1ZmMzOTkzMjA2MWFlYmIxMjhhZWI4OGQ2ZjdjZjQgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFi
bGUtc3RydWN0dXJlLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9w
ZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCkBAIC0yNCw1ICsyNCw1IEBAIGZ1bmN0
aW9uIGRvVGVzdCgpIHsKIH0KIG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwx
MDAwMDAwMDsgKytpKSBkb1Rlc3QoKQorZm9yIChsZXQgaT0wOyBpPDUwMDAwMDA7ICsraSkgZG9U
ZXN0KCkKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGlu
ZS1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2YwOGRjMGRiMjBmMzc2YjU4OGY1OWQ2M2Y1MTJkNjYwYzdjZjM2Mgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUt
Y2FjaGUuanMKQEAgLTAsMCArMSwyMzUgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsK
KyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24g
ZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09
IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAi
ID09PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChh
ID09PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBh
ICsgIiAhPT0gIiArIGIpOworfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2Vx
KQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9Cisg
ICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBm
b28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykK
KworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytq
KSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGo9
MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitq
XSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVC
eUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rp
b24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0g
MQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAg
ICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0g
bmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAg
ICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAg
ICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQorCitm
dW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1h
a2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAg
ICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVl
KQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAg
IG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9y
IChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAg
IH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9
IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkK
KyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIg
aW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0g
MSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pd
ID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCgh
KCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVs
ZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAg
IGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9v
LmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBm
b28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisg
ICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAg
ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRf
ZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZv
by5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAg
ICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIg
PSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAg
ICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyAr
K2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5i
YXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkK
KyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAg
ICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQor
CitmdW5jdGlvbiB0ZXN0RGVsZXRlSW5kZXgoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7
CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28u
YmFyID0gMgorICAgICAgICBmb29bMF0gPSAyMworICAgICAgICBmb29bMV0gPSAyNQorICAgICAg
ICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxl
dGUgZm9vWzFdLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4g
Zm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb281KQorCisgICAgYXJyID0gbmV3IEFycmF5
KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0g
bWFrZUZvbzUoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhm
b28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAg
YXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNz
ZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3Nl
cnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisg
ICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0s
IDIzKQorICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sx
XSA9IDEKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0RGVsZXRlSW5kZXgpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsK
KyAgICBmdW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvb1siYmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZv
b1siYmF6IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b282KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAg
ICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAg
IGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsKQorCitmb3IgKGxldCBpPTA7IGk8MTAwMDsgKytpKSB7CisgICAgdGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpCisg
ICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWRNaXNzKCkKKyAgICB0ZXN0RGVsZXRlSW5kZXgoKQorICAgIHRlc3RQb2x5bW9ycGhpY0Rl
bEJ5VmFsKGkpCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390597</attachid>
            <date>2020-02-12 17:23:10 -0800</date>
            <delta_ts>2020-02-13 09:47:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200212172309.patch</filename>
            <type>text/plain</type>
            <size>143832</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzI2YjJhZGYwNWQxYWY1ODlmMmExOGEwMmJmMjQ0ZGM0ZDE1MTM1Li42MTkzOGY3YzdhMmZjOWJj
MjY5N2JkMzU3ZWZhYWQzYjM2MTM1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9ubHku
IFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVzdGlu
Zy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBjb2Rl
IGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2FjaGVk
IGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3MgaXMg
YSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0gRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlzdHMs
IGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25kaXRp
b25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQgbXVz
dCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBUaGlz
IGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0cyB3aXRoIERGRyBkaXNh
YmxlZDoKKworICAgICAgICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZSAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAg
ICAgICAgZGVmaW5pdGVseSAxLjE2NTB4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLXBvbHltb3JwaGljICAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluICAgICAgKG5ldXRyYWwpCisKKyAgICAgICAgV2l0aCBE
RkcgZW5hYmxlZCwgZXZlcnl0aGluZyBpcyBuZXV0cmFsL3NsaWdodGx5IG5lZ2F0aXZlIGV4Y2Vw
dCBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLCB3aGljaCBpcyA2JSBzbG93ZXIuIFRoaXMg
cGF0Y2ggZG9lcyBub3QKKyAgICAgICAgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgREZHIGNvZGUsIGJ1
dCBsaWtlbHkgYWZmZWN0cyB0aGUgdGllciB1cCB0aW1pbmdzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpy
ZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChK
U0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklU
RGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxC
eSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlYWJs
ZUlkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNhY2hlYWJsZUlkZW50aWZpZXI6
OkNhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVO
ZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5kZXhpbmdI
ZWFkZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hl
YWRlciBjb25zdCk6CisKIDIwMjAtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFBsYWNhdGUgZXhjZXB0aW9uIGNoZWNrIHZhbGlkYXRvciBpbiBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTEwZjM3OGY2OTRkZGFjMmRhNjc0MzEyYzQw
ODg1MGI5OWMwZDRhMS4uMmQxOTY1NjIxOWVhOTMzMzA3M2E5MDhiYjUwOTAzYWFjYmZlMDhkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5f
bWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92
YWwgaW4gYmFzZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3Ry
dW06OmJ1aWxkTGlzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVt
OjpiZWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVk
LgorCiAyMDIwLTAyLTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IG9uIHdhdGNoT1Mgc2ltdWxh
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4
IDAzNGIzNTdjMDczOGUzNDkxMjU4ODU4ZDcwNjk4OWZlZmNiNDgzM2QuLjkyY2E5MjQ3Nzk2MmJj
MDRjN2E4ZWI4NmExZjQxNWQyYjE4N2YzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkKTsKIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNl
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggY2Q1
MTFiZmQyODRhMDEzMjUyYTY0MDVhNjcwN2FhZDEzN2ExYmNjYi4uNGJlYzMzYTcyZGMyODQ3N2E2
MTM1NmZkYjkyMGE0NzY4NjJlZDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTQxOCw3ICs0MTgsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KQEAgLTQyNiw3ICs0MjYsOCBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplYwogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7
Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5h
bWUpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAppbmRleCBmN2Y5ZGFiM2YyOGFkYzBlYWJiMmJkZThiMjUwNjc3MmFkMjVmZmNlLi45ZGY4
NzhlNTg4ZmEyYWVmMDYyMmFjNjk1ODc4MWFiZTY3YTM3ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNDc5LDcgKzQ3OSw4IEBAIGJvb2wgSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUZvcktleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTVmFsdWVSCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgs
IGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xv
dCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTM0LDcgKzUzNSw4IEBAIGJvb2wgSlNPYmplY3RE
ZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3Ry
aW5nUmVmIHByCiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAKLSAg
ICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsK
KyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pLCBzbG90KTsKICAgICBoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjYTBjODYwMmJlMTRjNWUzYjk5YjNl
MjExMmYyZDI4ZGRkOTFiYTguLmZkMTA4MGMwYWQ0MWNkYTVkZjQyYjVkOWIwOTk0N2U2ZmNmMTc5
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOTcxLDYgKzM5NzEsNyBAQAog
CQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYw
QkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xvdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUg
LyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3Ro
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkzMzU2
NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVjZUxv
b3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0IyQzMw
OTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzA4Miw2ICs3MDgzLDcgQEAKIAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0
ZVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQ
cm90b3R5cGUuaCAqLywKIAkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggKi8sCisJCQkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERl
bGV0ZVByb3BlcnR5U2xvdC5oICovLAogCQkJCTBGRTA1MDBGMUFBOTA5MTEwMEQzM0IzMyAvKiBE
aXJlY3RBcmd1bWVudHMuY3BwICovLAogCQkJCTBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAvKiBE
aXJlY3RBcmd1bWVudHMuaCAqLywKIAkJCQkwRkUwNTAwRDFBQTkwOTExMDBEMzNCMzMgLyogRGly
ZWN0QXJndW1lbnRzT2Zmc2V0LmNwcCAqLywKQEAgLTEwNjYwLDcgKzEwNjYyLDYgQEAKIAkJMDg2
N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0g
UEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0ZXMgPSB7Ci0JCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdl
dHNJblBhcmFsbGVsID0gWUVTOwogCQkJCURlZmF1bHRCdWlsZFN5c3RlbVR5cGVGb3JXb3Jrc3Bh
Y2UgPSBPcmlnaW5hbDsKIAkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFz
dFVwZ3JhZGVDaGVjayA9IDEwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKaW5kZXggMmFmNDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjli
YTk3NS4uOTk2ZmJiZmVlOTk3MTMyM2Y1M2ZmNzdlNjlkN2IzMjZlYTcwNmM1MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMs
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgSW5IaXQ6CiAgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFi
bGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5
TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNv
bmRpdGlvblNldCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5
cGVBY2Nlc3NDaGFpbikKIHsKQEAgLTEyMyw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmNyZWF0ZURlbGV0ZSgKKyAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBp
ZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2Fz
ZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8v
IFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVsb3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tD
ZWxsOworICAgICAgICBuZXdTdHJ1Y3R1cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVk
VG9DaGVja0NlbGwpOworCisgICAgICAgIGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwg
b2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nl
c3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVp
cmVzSWRlbnRpZmllck5hbWVNYXRjaCgpIGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdl
IGRvbid0IGN1cnJlbnRseSBoYXZlIGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8g
Y2FyZSBhYm91dCB0aGUgaWRlbnRpZmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2Fz
ZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxl
dGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0
R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQz
MlByb3BlcnR5Q2hlY2soKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgw
LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBj
YXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERl
bGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBH
ZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVw
ZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2Fz
ZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0
aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgor
ICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9yPEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxz
KSBjb25zCiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxz
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoK
ICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJv
b2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QK
IAogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgog
ICAgIGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBA
IC02NjMsNyArNjk5LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4g
PSAiKTsKICAgICAgICAgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwg
b3V0KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisg
ICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAg
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3Ry
dWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAg
IGVsc2UgaWYgKG1fc3RydWN0dXJlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3Ry
dWN0dXJlID0gIiwgcG9pbnRlckR1bXAobV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3
NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKSBjb25zdAogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5z
aXRpb246CisgICAgY2FzZSBEZWxldGU6CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5p
c01hcmtlZChtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0x
ODUxLDcgKzE4ODgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVk
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAg
ICAgICAgICAgICAgICAgdmFsdWVSZWdzLApAQCAtMTg5Niw2ICsxOTMzLDY3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKworICAgIGNhc2UgRGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2
YWx1ZVJlZ3MpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKyAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlk
YXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3BlcnR5RGVsZXRp
b25UcmFuc2l0aW9uKCkpOworCisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJl
c2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNl
cnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVk
VG9DaGVja0NlbGw7CisgICAgICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1
cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAg
IC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQg
dG8gY2hlY2sgdGhlIGpzY2VsbC4KKyAgICAgICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhp
bmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFt
YXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdl
IGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ugb3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAg
ICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVhZGVyOworCisgICAgICAgIGppdC5tb3ZlVmFsdWUo
SlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOworCisgICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJl
QW5kQ2xlYXJCdXR0ZXJmbHkpIHsKKyAgICAgICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3Rv
cmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIGJhc2VHUFIpOworICAgICAg
ICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgaml0
LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsKKyAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG1fb2Zmc2V0KSAqIHNpemVv
ZihKU1ZhbHVlKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAg
ICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBvZmZzZXRJbkJ1dHRlcmZseShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KG5ld1N0cnVjdHVyZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3Jl
MzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRz
KSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICBqaXQubW92ZVZhbHVlKGpzQm9vbGVhbih0
cnVlKSwgdmFsdWVSZWdzKTsKKworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lz
dGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3VjY2Vl
ZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVOb25Db25maWd1
cmFibGU6IHsKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4oZmFsc2UpLCB2YWx1ZVJl
Z3MpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjYXNlIERlbGV0ZU1pc3M6IHsKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4o
dHJ1ZSksIHZhbHVlUmVncyk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheUxlbmd0aDogewogICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRl
cmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaAppbmRleCA3OWQzMTAxNTVlOTNhNTQ1M2QyODYxYzQzMjI3YmEzYmFj
MTlmMjc3Li5jNmM4MTg0NDYzNDFkMGE0M2M2N2FlYzkzMTgzMzM3NDc4N2QxODM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTg1LDYgKzg1LDkg
QEAgcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBMb2Fk
LAogICAgICAgICBUcmFuc2l0aW9uLAorICAgICAgICBEZWxldGUsCisgICAgICAgIERlbGV0ZU5v
bkNvbmZpZ3VyYWJsZSwKKyAgICAgICAgRGVsZXRlTWlzcywKICAgICAgICAgUmVwbGFjZSwKICAg
ICAgICAgTWlzcywKICAgICAgICAgR2V0R2V0dGVyLApAQCAtMTQ2LDggKzE0OSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7CiAKICAgICAvLyBUaGlzIGNyZWF0
ZSBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgZm9yIHRyYW5zaXRpb25zLgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihW
TSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUs
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPik7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICAgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpOwogICAgIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIApAQCAtMTU3LDcgKzE2Myw3IEBA
IHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFu
c2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAg
IH0KQEAgLTE2NSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24p
OworICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0
ZSk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmlu
ZGV4IDEzMjQwOWMwYTQ1MTBiZGZhOGVjZTMzYjc0MzQ3MTYwMmQ3YjBlNzkuLmIxNjZjMzBjMThh
NTIzYTc2MjVmMzlhZjZiNzg5NTA2N2FhNWYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNzk1LDYgKzc5NSwx
NSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNj
ZXNzVHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2FzZTo6VHJhbnNpdGlvbjoKICAgICAgICAg
b3V0LnByaW50KCJUcmFuc2l0aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vz
c0Nhc2U6OkRlbGV0ZToKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGUiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgICAg
ICBvdXQucHJpbnQoIkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0
ZU1pc3MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzQ2FzZTo6UmVwbGFjZToK
ICAgICAgICAgb3V0LnByaW50KCJSZXBsYWNlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmlu
ZGV4IDYxNzg3MzdmOWY4YTljZDBiNmRkYWQ1N2YxY2YxMmVmZTRmY2E3MDUuLjk2YTFiYWVjYmU0
Y2JiYjc2ZGJkZWRhODA1NjVhMmM1OTg2NTUyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjc2LDYgKzI3Niwx
MiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChDb2RlQmxvY2sqIGNvZGVCbG9jaykK
ICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VP
ZigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJ
RDoKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1h
bCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWw6Cisg
ICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWxCeVZh
bCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCBk
ZGNlODVlYzAyNTU1NzZjOWUzNDUxZjY0NzM2ZDEyYzM4OTQyODAzLi5iNTc1YmRkMjE2MTljMmRm
ZTRmMTgyZmFlZDkwZjI2OGU5ZTI2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTUsNyArNTUsOSBAQCBlbnVtIGNs
YXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdldEJ5VmFsLAogICAgIFB1dCwKICAgICBJ
biwKLSAgICBJbnN0YW5jZU9mCisgICAgSW5zdGFuY2VPZiwKKyAgICBEZWxldGVCeUlELAorICAg
IERlbGV0ZUJ5VmFsCiB9OwogCiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXgg
MjZlMjgyOTM5ZTlhY2E4ODY1YzIyMTc3M2MyYTQxZTAyODA5NGRkYS4uNDhiNWI4NmZhNGI5ZTg2
NWVhNDhkYzk5YTQ5M2JkOTQ4ZDA3NGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtMTI5LDE0ICsxMjksMTQgQEAgYm9vbCBE
ZWJ1Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBEZWJ1Z2dlclNjb3Bl
KiBzY29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUKHNjb3Bl
LT5pc1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29w
ZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShn
bG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgRGVidWdnZXJTY29wZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApp
bmRleCBmZjRjZTFiMWRhNGI1NzkwZGU4YWQ5ODhhNzFmNjAyY2RmMjYxNjc0Li40MzI3YzFmMDJj
NjkyNzg0NTA4ZTBhOWExYTIxNDk3NzVlZGQ4MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9J
Q1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCA1ZDMw
OTI4ZjRhODViNGFkZTQ0NGM0M2Y1YWRkZjIzMTdmNDI2NWI3Li45MDQwZGYzODIwNzY0ZWRmOGQ1
MTYxMWY4NjBmYzRkNDI2NTZjMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApA
QCAtNzAsNyArNzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhQdXRCeUlkQWRkQWNj
ZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNy
byhQdXRCeUlkU2VsZlBhdGNoKSBcCi0gICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKQorICAgIG1h
Y3JvKEluQnlJZFNlbGZQYXRjaCkgXAorICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhKdW1wKSBc
CisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpCiAKIGNsYXNzIElDRXZlbnQgewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDY4NzExY2U1ZGQ3MzA1ZDk2
YzFmMDE2ZmIyMjdjNmJiNWZhYTM4ZGIuLjQ4M2U5YzQyMTQ0NTQ2ZWRiNGQ4NDE3MWIxODc1ZDE5
OGUzNjJhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTUwMCw2ICs1MDAsOCBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fZ2V0QnlJZFdpdGhU
aGlzSW5kZXggPSAwOwogICAgIG1fcHV0QnlJZEluZGV4ID0gMDsKICAgICBtX2luQnlJZEluZGV4
ID0gMDsKKyAgICBtX2RlbEJ5VmFsSW5kZXggPSAwOworICAgIG1fZGVsQnlJZEluZGV4ID0gMDsK
ICAgICBtX2luc3RhbmNlT2ZJbmRleCA9IDA7CiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgg
PSAwOwogICAgIG1fY2FsbExpbmtJbmZvSW5kZXggPSAwOwpAQCAtNTgwLDYgKzU4Miw4IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCkBAIC04NzUsNiArODc5LDggQEAgQ29t
cGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dl
dEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJ
ZHNXaXRoVGhpcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0
QnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRz
LCBwYXRjaEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxCeVZhbHMsIHBh
dGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIHBhdGNoQnVm
ZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBwYXRjaEJ1ZmZl
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDdiNDQwNzQ5NjMzMzZmY2I4OTQxZWJk
MDViNTk3MzEyOWE5ZTg2NTUuLjY3MTY2NjFkZjRmYWNlYTVlZmVkNWY1MTA4MWYwNTliNmQyNTNk
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTAwLDcgKzUwMCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTkxMyw2ICs5MTUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAgICAgICBWZWN0b3I8SklUUHV0QnlJZEdl
bmVyYXRvcj4gbV9wdXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEluQnlJZEdlbmVyYXRvcj4g
bV9pbkJ5SWRzOworICAgICAgICBWZWN0b3I8SklURGVsQnlJZEdlbmVyYXRvcj4gbV9kZWxCeUlk
czsKKyAgICAgICAgVmVjdG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBtX2RlbEJ5VmFsczsKICAg
ICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CiAgICAg
ICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZhbENvbXBpbGF0aW9uSW5mbzsK
ICAgICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1fY2FsbENvbXBpbGF0aW9uSW5m
bzsKQEAgLTkzNCw2ICs5MzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQg
bV9nZXRCeUlkV2l0aFRoaXNJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1f
cHV0QnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9pbkJ5SWRJbmRl
eCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlWYWxJbmRleCB7IFVJTlRf
TUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAg
ICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1
bnNpZ25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVu
c2lnbmVkIG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA5
MjBiNzIwM2UzY2Y0YmYwNmVlZDQ1NzNhMzljYjU2YmNjYTY1ZDVhLi5iNjJmZjc3Zjk5YTE5MTQx
NjYwM2IwY2Y5YThmNDkxZDQyN2NmZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTYyLDYgKzE2Miw2NiBA
QCBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVu
Y3Rpb24oKQogICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiB9
CiAKK0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQorICAgIDogQmFzZShj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5
VmFsLCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IGZhbHNlOworICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5
bG9hZEdQUigpKTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7
CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIo
KTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisjaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdH
UFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKKyAg
ICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CisjZW5k
aWYKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYgaml0KQoreworICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Ns
b3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9kb25lID0gaml0LmxhYmVs
KCk7Cit9CisKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9z
dGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNs
b3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0
KSk7Cit9CisKK0pJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmln
aW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMp
Cit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICBB
U1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CisgICAgbV9z
dHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJl
Z3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BS
ID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVl
VGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdH
UFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCit9CisKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAgIG1fc3RhcnQg
PSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7
CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRv
cjo6ZmluYWxpemUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQoreworICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXpl
KAorICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKK30KKwogSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJ
bkJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggYmZiOTAyMTZiMjljMjdmZmQw
ZWQ4ZDdmMGY1ODdlMDhmZTZlNzMxNi4uMzU1NWZlYzVkZDNhMjA0YTJhOGFjM2ZjZWNjMzYyNWZi
NjIyNmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaApAQCAtMTQyLDYgKzE0Miw1NiBAQCBwcml2YXRlOgogICAgIFB1dEtp
bmQgbV9wdXRLaW5kOwogfTsKIAorY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigpIHsgfQorCisg
ICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0KTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAg
ICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmlu
YWxpemUoCisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZl
ciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0
YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwor
fTsKKworY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVi
bGljOgorICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5l
cmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyByZXN1bHQpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1Bh
dGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1
bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAg
fQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5r
QnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAg
bV9zbG93UGF0aEp1bXA7Cit9OworCiBjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMg
SklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBlMzYy
NjczMjVjNzRhZTIyZjg2MThlYTllMmFkMDAyZTQ4ZGM2MzM0Li40YWUyYmE2ZDg5MDEzNmE5MTBh
YTNhZWZjNzVmNTRiNTJhZmYyNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTIxNDIsNyArMjE0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVj
dCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3Bl
cnR5R2VuZXJpYyhnbG9iYWxPYmplY3QsIGluZGV4LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAgICAgCi1zdGF0aWMgYm9vbCBkZWxldGVC
eUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSYgdm0sIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3N0YXRpYyBib29s
IGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0yMTUwLDIwICsyMTUwLDQ4IEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5
SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZN
JiB2CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICghYmFz
ZU9iaikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNl
T2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKSk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9
IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpLCBzbG90KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAg
ICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFz
ZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpOwogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAg
ICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBz
bG90LCBiYXNlVmFsdWUsIHVpZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
ICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgYmFz
ZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsQnko
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5SWQoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpLCB1aWQpKSk7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC0yMTcxLDEwICsyMTk5LDExIEBAIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0g
ICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xv
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKIH0KIAotc3RhdGljIGJvb2wg
ZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKK3N0YXRpYyBib29sIGRl
bGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIGtleSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
QEAgLTIxOTAsNyArMjIxOSw3IEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYKICAgICBlbHNlIHsK
ICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IGtleS50b1Byb3BlcnR5S2V5KGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAg
ICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBjb3VsZERlbGV0ZSA9
IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpKQpAQCAtMjE5OCwxMiArMjIyNyw0MiBAQCBzdGF0aWMgYm9v
bCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgVk0mCiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkS2V5KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0g
YmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpOworCisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVC
eVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgc3Vic2Ny
aXB0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjpp
c0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgY29uc3QgSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmpl
Y3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkgfHwgIXBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hp
bmcodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAg
ICAgICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VW
YWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpO
b3JtYWxCeVZhbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeVZh
bChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeVZh
bChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KSkpKTsKIH0KIAogc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRLZXkpCkBAIC0yMjExLDcgKzIyNzAsOCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSgog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBkZWxldGVCeVZh
bChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2
bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRLZXkpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRo
U2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVD
ZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjIxMGM1YTA3MzQxOTY4M2Q2MGVhOGM0OGNkNDNlZWZm
ODJhMzAwYy4uYjRhNzFhZGJjZDE5MGVkNTM1MzI0ZmQ0NDI5ZmY5YWM2NDIxNDk3MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI1MSw5ICsyNTEsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1
bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5SWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1
ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRF
Uk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUg
b2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVz
aFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1
cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmplY3QpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYWJmNTJm
NzEzZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJmNi4uODA1NzA2ZTQ4MjJhOTI5YTAzZmJi
NWE1YTQ3N2YwNzIwZTFjYjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICszODcsMzUgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7Cisg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBKSVREZWxC
eUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Cisg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2RlbEJ5SWRzLmFwcGVu
ZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Cisg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpLmltcGwoKTsKKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9
IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIG1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCB1aWQpOwor
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKQEAgLTM5OCw5ICs0MjQsMzkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7Cisg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RT
dHJpbmcocmVnVDApKTsKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDApKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsK
KworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BEZWxCeVZhbD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9k
c3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERl
bEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisK
KyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHksIHJlZ1QxKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1
bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgcmVnVDEpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Ry
eV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CmluZGV4IDVjYzdkZjljNTQxODljN2NiM2Q0MDkxYjVjNGY0YzhiZGFlZWYxNGMuLjRmY2JkYTUz
ZTk2NTJiNmQyMGE0ODgxNmQ3Y2JkNjQ4ZDBiM2FiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOwogICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExv
YWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBs
KCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIGRzdCwg
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpAQCAtMTMzLDkgKzEzMywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJl
Z1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgZHN0LCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKSB7IH0KK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9CisKIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5
VmFsPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTE4MjA0MTU1
NGJkYzc2YzE5MWNiMTM4NWQxM2E5YzgxZmZkNDVlYi4uYmU3NTAxZWYyMmMxODMzZTRmYjdmMDZh
OWFiZTNhYWIwNzZlZGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBA
IC02NDEsNyArNjQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBB
Y2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3ND
aGFpbikpOworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFu
c2l0aW9uKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkg
fHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0Nh
Y2hlYWJsZUN1c3RvbSgpKSB7CkBAIC03MzQsNiArNzM0LDcyIEBAIHZvaWQgcmVwYXRjaFB1dEJ5
SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpT
VmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlv
bihzbG90LCBwdXRLaW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZURlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisKKyAgICB7Cisg
ICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ss
IGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKworICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUo
Z2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAg
ICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpIHx8ICFvbGRTdHJ1Y3R1cmUgfHwgIW9sZFN0cnVj
dHVyZS0+aXNPYmplY3QoKSB8fCAhb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2Fj
aGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBp
ZiAoIXNsb3QuaXNDYWNoZWFibGVEZWxldGUoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwor
CisgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKKyAgICAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG5ld09mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVD
b25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCk7CisgICAg
ICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNTRVJUKG5ld09m
ZnNldCA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNTRVJU
KG5ld1N0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAg
ICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgQVNTRVJU
KGlzVmFsaWRPZmZzZXQobmV3T2Zmc2V0KSk7CisgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlRGVsZXRlKHZtLCBjb2RlQmxvY2ssIENhY2hlYWJsZUlkZW50aWZpZXIocHJv
cGVydHlOYW1lKSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CisgICAg
ICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAg
IGlmIChzbG90LmlzTm9uY29uZmlndXJhYmxlKCkpCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9
IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVOb25D
b25maWd1cmFibGUsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9m
ZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywg
QWNjZXNzQ2FzZTo6RGVsZXRlTWlzcywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUp
LCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgIH0K
KworICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgY29kZUJs
b2NrLCBwcm9wZXJ0eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1
bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0LmNvZGUoKSk7CisgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdp
dGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAg
ICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKHZtLCBz
dHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRH
aXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7Cit9CisKK3ZvaWQg
cmVwYXRjaERlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIFN1cGVyU2Ft
cGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNoZURl
bEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgeworICAg
ICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUu
Y2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIHByb3BlcnR5TmFtZSkpOworICAg
ICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgIH0KK30KKwogc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkBAIC0xMzkxLDYgKzE0NTcs
MTUgQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKK3ZvaWQgcmVzZXRE
ZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBE
ZWxCeUtpbmQga2luZCkKK3sKKyAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgZWxzZQor
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0
YXJ0TG9jYXRpb24pOworfQorCiBzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVt
cChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDZmMGYyNjQxMWVjZGVhMTky
YjcwNjIxMGU4YTk5NDRiYjRmOWZlMzkuLmMxZDk5NTlhZGFmZDM2NTc2MmU4OTE3OWFiM2MwZWVk
NjZlNTg3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00MSw5ICs0MSwx
NSBAQCBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CiAgICAgRGlyZWN0CiB9OwogCitlbnVtIGNsYXNz
IERlbEJ5S2luZCB7CisgICAgTm9ybWFsLAorICAgIE5vcm1hbEJ5VmFsCit9OworCiB2b2lkIHJl
cGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBi
YXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoR2V0
QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7
CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1
ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYs
IFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7
CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVj
dCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZy
YW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTUzLDYgKzU5LDcgQEAgdm9pZCB1
bmxpbmtGb3IoVk0mLCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50KTsK
IHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2lu
ZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwor
dm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5k
KTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZv
aWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJU
YWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDIy
NTRmY2M0Mjk2MTdjZTgzOTdkMjRlNTUwZTFhY2VjNjdiNjE0NDMuLmZhY2E3YmY0ZTE3OGQ0MjVm
ZmJlZmZlOTU0ZThmMzFlYjAwMjA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtOTI1LDcgKzkyNSw4IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cERlbEJ5SWQ+KCk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV9iYXNlKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSwgc2xvdCk7CiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKQEAgLTExMDgsNyArMTEw
OSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAgICAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9
IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAppbmRleCBmZmIzZWI5ZDAwNWNmNmZkMDhm
ZmQyYmI4OGI5ZDU4N2JhZWQwZmY2Li4xMDdiNWQ2MDcyMDM3MDUxZjZhN2MxZTljYjBjMTVmMjY1
ODk3OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTQyLDYgKzQyLDcgQEAgaW5saW5lIENh
Y2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikKIAogaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50
aWZpZXIoSlNDZWxsKiBpZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc0NhY2hlYWJsZUlkZW50
aWZpZXJDZWxsKGlkZW50aWZpZXIpKTsKICAgICBzZXRDZWxsQml0cyhpZGVudGlmaWVyKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBmZTZjNmI3
ZDg0YzQ3ZWRlZTExYWFjMTFmNjQ4NGE3MmQ0MTdiYzQ2Li43YTU5YjhmZGIwYzIyY2NiYmQyOGQ4
MDMxZGE4YTE3ZWUwNTM3MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFz
c0luZm8uaApAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVzaW5n
IFB1dEJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAg
ICBQdXRCeUluZGV4RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHB1dEJ5SW5kZXgpOwog
Ci0gICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICB1c2luZyBEZWxldGVQcm9wZXJ0
eUZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25Q
dHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRlbGV0ZVByb3BlcnR5KTsKIAogICAgIHVzaW5nIERlbGV0
ZVByb3BlcnR5QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmNwcAppbmRleCA5NmEzNjM1ZTY4MjczOTNlZTgzNmQ4MDQ3NzcyNGEy
NWQ1NDZjMjYxLi5mNjk5OWU3MzQ4NGUyYWJkODgxNDU0ZjExNDgzMTBjMDJkNGYyYTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAK
QEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwog
fQogCi1ib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCitib29sIENs
b25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q2xvbmVk
QXJndW1lbnRzKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
MjI5LDcgKzIyOSw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHx8IGlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2JqZWN0
LT5tYXRlcmlhbGl6ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZ2xvYmFsT2JqZWN0KTsKICAgICAKLSAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBp
ZGVudCk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIGlkZW50LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Nsb25lZEFyZ3VtZW50cy5oCmluZGV4IGZkM2EyN2JmNzM1NTRkNWVlNGE2ZTMxZDBiYTBjYWQx
NTc2MDVmZjUuLjAwYzUzNDc1NjA1YTczYjJiM2ViMzhkM2NmODEzMjg4MzRmZjFiYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBAIC03
Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCiAgICAgYm9vbCBzcGVjaWFsc01hdGVy
aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMGUyYmMzYTI3MTlj
MmE5MzUzZTdkNzUyMWE4NzliZDEyZDc0MDA2OS4uMWRlODIzOTUwOWUwYzhkN2E1NmEzMjQxNGZm
ZThhNzRhOWI3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC05ODUsNyArOTg1LDggQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV92YWwpCiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBh
dXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZmNmI0ODAwZWY1Nzg1
NjFjYWVkYzlkZGJiYzgyZjI1MzJlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApAQCAtMCwwICsxLDgzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Qgewor
cHVibGljOgorICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hlYWJsZSwgRGVsZXRlSGl0
LCBDb25maWd1cmFibGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUgfTsKKworICAgIERlbGV0
ZVByb3BlcnR5U2xvdCgpCisgICAgICAgIDogbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKKyAgICAg
ICAgLCBtX2NhY2hlYWJpbGl0eShDYWNoaW5nQWxsb3dlZCkKKyAgICAgICAgLCBtX3R5cGUoVW5j
YWNoZWFibGUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlTWlzcygp
CisgICAgeworICAgICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxldGVNaXNzOworICAgIH0K
KworICAgIHZvaWQgc2V0Tm9uY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9
IE5vbmNvbmZpZ3VyYWJsZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhpdChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpCisgICAgeworICAgICAgICBtX3R5cGUgPSBEZWxldGVIaXQ7CisgICAgICAgIG1f
b2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKworICAgIGJvb2wgaXNDYWNoZWFibGVEZWxldGUoKSBj
b25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBVbmNhY2hlYWJsZTsgfQor
ICAgIGJvb2wgaXNEZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRGVsZXRlSGl0
OyB9CisgICAgYm9vbCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsgfQorICAgIGJvb2wgaXNOb25jb25maWd1
cmFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmlndXJhYmxlOyB9CisKKyAg
ICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fb2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQorICAgIHsK
KyAgICAgICAgbV9jYWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dlZDsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVhYmls
aXR5ID09IENhY2hpbmdBbGxvd2VkOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsK
KyAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OworICAgIFR5cGUgbV90eXBlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGYxODIxZDU1NmEzZDQwNDQ5MzY3NWVh
ZTI1ZmEyZTQ2NjczZWM0M2EuLjY4NWM3YWNiYzExYzYyZDIzMzc3ZDMyYzRkZTlhMjBiNjU4Nzhh
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3Ry
dWN0b3IuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAgICAg
cmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8RXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpAQCAtOTUsNyArOTUsNyBAQCBib29sIEVycm9y
Q29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+
c3RhY2tUcmFjZUxpbWl0KQogICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0
U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDkzZDUyNzE0ODZm
NjZmZGU3NTNlNDlhNDAxNmYxNjgzOGU5NzU3MjEuLjlhNWE0NjMyMWIzZGJiNzY0YzJhMWI1MjFk
OTI2OGY4ZDE0MzUzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgc3RhdGljIGJvb2wg
cHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1
cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5j
cHAKaW5kZXggZmQ0OGJiZjM0YzMwNDMwZDJlNzBkZTU3NDk4ZTliNTFlNmFjMjQ0ZC4uMWQ1MGNk
MTc0ZmM0N2Q5MjIxNzE4OGUzMjVmZjU3YWU4ZDE1YjgxYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5NywxMiArMjk3LDEyIEBA
IGJvb2wgRXJyb3JJbnN0YW5jZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JJbnN0
YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9ySW5zdGFu
Y2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNlbGwpOwogICAgIHRoaXNP
YmplY3QtPm1hdGVyaWFsaXplRXJyb3JJbmZvSWZOZWVkZWQodm0sIHByb3BlcnR5TmFtZSk7Ci0g
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaApp
bmRleCBmMWZhYzU5NjgyZDllMDI2NTA4Y2I0ZmY4YzliMjY3YjRlZTc2ZTg3Li40MDA2MDhkMDhh
ODM0Y2QzMWU2MTJlNzNhYjUzMWNiMGEzY2ExMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCBjb21wdXRlRXJyb3JJ
bmZvKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNB
cmd1bWVudHMuaAppbmRleCBjZTEwZjdmZTQ4NzNlNGE0N2JlMTQxZTI1NTY5YWQ2NDhhZmY5ZDI4
Li40NzEyMTY3MzAzNjQ4MjhmZTI3NzBlMjM0ODY5YWNlNzA5MDhkMWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC01MCw3ICs1
MCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMxYmI0MzBmNmQ1OGIxZDVi
MTE1ZGE1MTNjNWJjYzBiZjUzLi5hNWE5ZWNiMzIyYTIwZGE4ZmUyNDMzZmZkNTQ3YTc4YWZjNjAy
Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAgYm9vbCBHZW5lcmljQXJn
dW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm8KICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52
YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpwdXQo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CkBAIC0xNTgsNyArMTYw
LDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4KLWJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCiti
b29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxldGVQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBl
Kj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDcgKzE3
Nyw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsICppbmRleCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlk
ZW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5oCmluZGV4IDAzNDg3ZjYxZTBmMmZjNzUxYmE3MDNiNzBjYTM2ZDAyMjIxNjM0ZGUuLjYw
MWYxZTQ5ZjE1Y2Q1MDFhMGUwYTc1ZWUyODUwNmYzMmIwZGIzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVy
dHlEZXNjcmlwdG9yJiwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikgeyBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToK
ICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA2ZDA3NTkxNzExZWVkYmMyOGUwZTRkYTc4NDk4
MjJhYjhkNjZmNWQxLi5iY2UzNjU1YTMxOTJlYTI5MGZlN2YwNDA4MjRhMzg4NmY2YjA0ODM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzA2LDcgKzMw
Niw3IEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwpAQCAt
MzE0LDcgKzMxNCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBz
dGF0aWMgaW50IGNvbXBhcmVLZXlzRm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCog
YikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAzMTE2NWI1ZmY0
OTI1NGNjMWE2YzQ3OTAyYjc5MTBhYzRhN2Q5YmZmLi5jZGMzOWI1MTJkN2VlM2ExNWNmMWFlYzJl
MGEyZDkzZDlhYWFkMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMzZDFiYjYwZjhiNTMzYjE4NjA1
OGVlYWQ4MWI3NS4uNTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFiMWVkYzRhNzQxZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDAsNiArNDAs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKK2NsYXNzIERl
bGV0ZVByb3BlcnR5U2xvdDsKIGNsYXNzIEpTQmlnSW50OwogY2xhc3MgQ2FsbEZyYW1lOwogY2xh
c3MgSlNDZWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXgg
MjcxMzUyYjIxNzQ3MDM1NmRmNDAzZmRkOWNkZTYwZGVmODg4MTYwNy4uMGU2N2Y4NjY3NmQ1ODY1
YWE4OGYwNGYzNWFkYTc0MzIxZTAyY2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBib29sIEpTQ2VsbDo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlk
ZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwog
fQogCi1ib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKK2Jvb2wgSlNDZWxs
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3Qp
OwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOwor
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNsb3Qp
OwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNjY1ZDA4ODljZjQ0NjFjM2FiMGEy
YWY0YjA3YzZhNThjOTA0MjFjNC4uMDYyZTgzZGIzOWFiMzRhNmVmNGZkYTM2ZmZhNTBlNGMxMTFk
OTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE4MCw3ICsx
ODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgYm9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSk7CiAKICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBFQ01BTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuY3BwCmluZGV4IDE0NmE5MTMyZDQ3MzUyNDJjMTA2ZTY1NTY0Nzc4ZTE3ZWQ3YmFiOGMu
LjFiMjU1MjNjOThmYmIwOWUzN2Y4YTQ3NDMxOWJmNzZjMzJkOGE4YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAg
Ym9vbCBKU0RhdGFWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKIH0KIAogYm9vbCBKU0RhdGFWaWV3
OjpkZWxldGVQcm9wZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTRGF0YVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNEYXRhVmlldyo+KGNl
bGwpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHko
CiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlT2Zmc2V0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNEYXRhVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDg2
NDEwZTYxYWQ3ZTkxZDgyYTY3ZTk3ZWZiYjRmMzJmMWJjMTJlNzguLjk4YThjYzhiMzk4ZmZkZDdh
MWM5NGJlNjU3ZjY1NWU2Y2M3YjlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRl
eCBjZDZlYzE1ZWUwOWE5ZjM0Y2FmMmYyOTQwMGZjOTZkOWE1OWQ0ZGJjLi40MzQ2YWFhZWViNmE4
ZWY1ZjUzMjg1ZTFkNWFiNmY3NzIxMWE5NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wgSlNGdW5jdGlv
bjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJv
b2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Z1bmN0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgSlNGdW5j
dGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
ICAgICB9CiAgICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYWRkZGUyYWMwM2E0MTBjNzA4YTc5MzRi
NWE1ZDA2ODljYTFmZmFjZC4uMThhYjQ3NTQzZmQ3ODI5NzhhZmVhOTcyYzhjOWFjNmQ4NzAyY2Jm
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTc5
LDcgKzE3OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcuaAppbmRleCBmMDhmODUyNDY5YmVmZDZjNWFkNDNhZjJhNTAwOTJiZWVmZTJi
MzlhLi4zYjdiYmRlNzY1Y2UxYzM1NjU1MGVjZDU4Yjc3ZmVkOWQ2MTA2ZjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgKQEAgLTMwNSw3ICszMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCmluZGV4IDBjYWZiZDI3NmNmNzRkMGM4NWVmOGJlN2RiZTQwM2QzYzc2NGIz
NDIuLjU4ZmJiNTc1NjJiNzEwMDc5ZTY1MTQwZjdlMDllNzA4MDQ4ZmEzNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCkBAIC00MzgsNyArNDM4LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVmaW5lT3duUHJvcGVydHkoCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxl
dGVQcm9wZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1MCw3ICs0NTAs
NyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0
eSgKICAgICBpZiAocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtNDg0LDcgKzQ4NCw4IEBAIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCgKICAgICBK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJu
IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFt
ZSksIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGIzYzk4MGE0
NjYyYWVlZWExMjQwYTU2NmM1ZDRhMThhOTI4NzFmN2UuLjBmODkwMzAwYmViNzg0YzcxNzlhODcz
ZmFjZmNiMmE4NGQwYzllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzMTQsNyArMTMxNCw4IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmFkZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBhZGRHbG9iYWxWYXIocHJvcGVydHlO
YW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGYzNDVjNTAyN2FiYTk0MDg0NDcxZTMxYjdiOGQ3
ZWUyYTJmODg3MTMuLjk3NGI5MmI1NGUxYTMzODMxNjlkZWZhYjJhOWE3ZGRlNjQ2ZGEwNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5jcHAKQEAgLTEyNywxMyArMTI3LDEzIEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1l
bnQ6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShnbG9iYWxPYmplY3Qt
PnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNl
bGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaAppbmRleCBkMDEzYjUxZWZhMjk3ZWJmMDNjYTQyNDAwMTdhNjdhY2MxM2I5
Mzk3Li4wNWU0ZTY1YzJkZDQ5M2ZmN2E0ZTMxYTQ4MjZiNzBjMjUwYzU3OWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAppbmRleCBmZWI1NTEwODc0ODAzOTBk
MzQwOWU2Y2FhOTQ4MDBiNzI5ZjdjNzNkLi44NThhOTQyZmU3MzU1Y2Y4YzExODA1YThkMDVlMDY1
M2Y4YTIxODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgSlNNb2R1bGVF
bnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVyCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJv
b2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTM4LDcgKzEz
OCw3IEBAIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gQWJzdHJhY3RNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuaAppbmRleCBkYWVhYjY2MmZjMDRkYWJkZDI2ZDE0MTQ1ZjM2ZWIxN2UyNzky
YTc5Li4wMTMwZjg3ZmI5OGJiMmE4MmRhYTI5YTU5NjM1MmU3MTliYjdlZmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBA
IC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcAppbmRleCAyYmRiMTMwNWViMGM0YmU5NjA4MDY1YmQzNDg1OWM3YWYxNDhiMmEx
Li4xZmM2YTI2NWI4Y2E2NWFkMTE5MDJmNWQwMTNlZDY1ZDg2NTYxODgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwCkBAIC0xOTksMTIgKzE5OSwxMiBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
OjpwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
bW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAogICAgIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQotICAgICAgICByZXR1
cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICByZXR1cm4g
IXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmgKaW5kZXggOGVlZjYyMWUzYjg0ZmE2NjI4Y2ZhMmY4MTRkYTYyOGYwNjc4N2Qx
ZC4uODExMzY0ZGQxN2ExM2U3ZWZiZmNmMWM5ZTI4NjMwZTI0MmE3MTI0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggZDBk
MTcyMWNmMWRlYjgzM2Y5Y2IwMWUyYmYzMjFiMDZlZDQxOTZjOS4uZWRhMmQ2MjM1MDk5ZWQzMDFi
YjBhZTExNDUxNGYzMmUxNTRjYjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKQEAgLTc1OSw5ICs3NTksMTAgQEAgTkVWRVJfSU5MSU5FIEpTVmFs
dWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgZmlsdGVy
ZWRWYWx1ZSA9IGNhbGxSZXZpdmVyKG9iamVjdCwganNTdHJpbmcodm0sIHByb3Auc3RyaW5nKCkp
LCBvdXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCk7Ci0gICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICAgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIG1fZ2xv
YmFsT2JqZWN0LCBwcm9wLCBzbG90KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChvYmplY3QsIG1fZ2xvYmFs
T2JqZWN0LCBwcm9wLCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2su
bGFzdCgpKys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5k
ZXggYWNkMjlkZWQ4MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFkZi4uNmNkMzMxODBlNWVm
YmU1ZGJiYmNiZTEzN2JlMzhmMWI2MjYxOTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTk3Miw3ICsxOTcyLDcgQEAgYm9vbCBKU09iamVjdDo6
aGFzUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IHByb3BlcnQKIH0KIAogLy8gRUNNQSA4LjYuMi41Ci1ib29sIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTE5OTksMTYgKzE5OTksMjAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIK
IAogICAgIGJvb2wgcHJvcGVydHlJc1ByZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+
Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1By
ZXNlbnQpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSAmJiB2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBz
bG90LnNldE5vbmNvbmZpZ3VyYWJsZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CiAgICAgICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
IGRlZmVycmVkV2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5y
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIFtdIChjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBQcm9wZXJ0eU9mZnNldCwgUHJvcGVydHlPZmZz
ZXQpIHsgfSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
c3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKLSAg
ICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSAmJiAhc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmpl
Y3QpKSB7CisgICAgICAgICAgICBzbG90LnNldEhpdChvZmZzZXQpOworICAgICAgICAgICAgaWYg
KCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJl
KHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRl
cih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1
dHRlcmZseSk7CiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNl
dEJ1dHRlcmZseSh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7CiAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgICAgICBBU1NF
UlQoc3RydWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKQEAgLTIwMjAsNyAr
MjAyNCw4IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAKICAgICAgICAgaWYgKG9mZnNldCAh
PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgdGhpc09iamVjdC0+bG9jYXRpb25Gb3JPZmZz
ZXQob2Zmc2V0KS0+Y2xlYXIoKTsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHNsb3Quc2V0
Q29uZmlndXJhYmxlTWlzcygpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDMwLDggKzIw
MzUsMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihj
ZWxsKTsKICAgICAKLSAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpKSk7CisgICAgaWYgKGkgPiBNQVhf
QVJSQVlfSU5ERVgpIHsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSksIHNsb3QpOworICAg
IH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nTW9kZSgpKSB7CiAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CkBAIC0zNjI1LDcgKzM2MzIsOCBAQCBib29s
IHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqCiAgICAgLy8gQSBnZW5lcmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5
IGNoYW5naW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CiAgICAgaWYg
KGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3VycmVu
dC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYgb2JqZWN0KSB7Ci0gICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBwdXREZXNj
cmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRl
c2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsK
ICAgICAgICAgfQpAQCAtMzY0MSw3ICszNjQ5LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Kgog
ICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxP
YmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJp
YnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQpAQCAtMzY2
NSw3ICszNjc0LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihn
bG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9y
LmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQpA
QCAtMzcxOCw3ICszNzI4LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlw
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogCiAgICAgR2V0dGVy
U2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnZXR0ZXIsIHNldHRlcik7CiAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICB1bnNpZ25lZCBhdHRycyA9
IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAgIG9i
amVjdC0+cHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
clNldHRlciwgYXR0cnMgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZWM2MzAwZWE5Yjk3MmNlOWJhMGZh
ZDgxODI1N2FmYjIwZDgyYTJlZC4uNWVkYzdmNzBlNzEyNzg0NjE5MGMyNTIwMTZjZGU3N2IwNGZm
ZjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiRGVsZXRlUHJvcGVy
dHlTbG90LmgiCiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSGVhcC5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgpAQCAtNjIzLDcg
KzYyNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBib29sIGhhc093blByb3BlcnR5KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQpIGNvbnN0OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKaW5kZXggOWM0NzkzNGU0YTNkOTE5
OWZhOTg0MmRkMDUyY2U4OGQyNDE1MmFjMS4uZDBiYmMyYzVhMmQyMjE5MTI3Y2Q5OWIzMDIwOTMw
ODg3MjEyM2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAK
QEAgLTkxLDEwICs5MSwxMCBAQCBib29sIEpTUHJveHk6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRo
aXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWZp
bmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU1Byb3h5OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0
LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+
dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNQcm94eTo6aXNFeHRlbnNpYmxlKEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMzUxZTY2OGQyNTkwZDliOTdjOGY0YmJh
MmJmZmI0MDBkYjNmMjEwOS4uNWJlN2JmMGQyZTVhOGIzMmM3OTRjMGIyNTg5NTc5OGZjNWY5ZWY4
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtOTMsNyArOTMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQs
IFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCA2MzBlMWI3OGJiMjA2
ZTdhZjYxN2MzYzY4MmMzNGY1ZTE3NTVmNWQ1Li4xMjVmNmMzMTUwZTk2YWVjZDUzNzQ3MzFmZGE4
ZDlhN2JhZmJhMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIHZvaWQgSlNTeW1i
b2xUYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwog
fQogCi1ib29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNTeW1ib2xUYWJsZU9iamVjdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCmluZGV4IGM3YzFlMjBhNjU0NzZiYzcwNjhlZTYzZGVkOThiMzM1ZGY3MzZiMjEuLmI1
NjhlOGY5MmE5ODNmYjRjYzIwM2E3YTA2MjE4MGFlNGZlNTkwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQogICAgIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlN5bWJvbFRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3ltYm9sVGFi
bGVPYmplY3QsIG1fc3ltYm9sVGFibGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggYjY1MjAyMjFhODE1OThmZmVmMmE1ZTE0YTgwZmQ0
ZTU0ZGM2OWM2ZS4uYjA3ZTBhMDI5MzMyODI2MTAzNmY0MTEwNmVlZWU5ZTVmOTBjNjY2MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNjg1
LDEyICs2ODUsMTIgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJv
eHlPYmplY3QqPihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0RGVsZXRlID0gWyZdICgp
IC0+IGJvb2wgewogICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpc09iamVjdC0+dGFyZ2V0
KCk7Ci0gICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9OwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wZXJmb3JtRGVsZXRlKGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdERlbGV0ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCAxN2NhMjlmYjBhM2ZkZGJhNzFl
YjY4MjQ5YzA5OWNhMjhhM2Q2MmVkLi5lZTViZDkwNThjZmE4MThhNDY3NGE1MjJiZjYwYTJjYTA5
ZWFjMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgK
QEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCmluZGV4IDQ2ZGNiNzUwNmRhNTcwZTRjOTdlYjkzYTA5YzAwNDgxYTUxNTM4MjcuLjFj
ZTFiNGMzM2FhZjFhNDVkZjA3MjQxZjRkZDMwYzY3ZDY3YTJlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtNzEsMTIgKzcxLDEyIEBA
IGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5
U2xvdChvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9v
bCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUmVnRXhw
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sYXN0SW5kZXgpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaAppbmRleCA1ZTk5ZWIzOGI3MTNhOTQyNjM3MTkxYTg5ZjBiN2M5NmM1ZmJiNzE0
Li44NTdjYTJlNzJhZjM0MGVhZTM2NTcwMWQ1NWNhMDdlZDgzZTBiMTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtMTQ0LDcgKzE0NCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgbV9yZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxh
ZyA9IChtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnIHwgbGFzdEluZGV4SXNO
b3RXcml0YWJsZUZsYWcpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKaW5kZXggNTE1NzUyNzY1
ZWNiMDJkMTljMDQwZTlmMjFiOTY0OWY3NTE3Yjk0Ny4uNTFkYmM2N2M1N2Y4MTU2MWZhNzhkMTk0
ZWZhZjA0OWMwN2E4YWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBTdHJpY3RF
dmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNTY29wZQogewogfQogCi1ib29sIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wg
U3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBm
YWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlj
dEV2YWxBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RF
dmFsQWN0aXZhdGlvbi5oCmluZGV4IGNkY2MyMWI3ZTVmYTdiMTA5NmIyNmQxODcwNzRjYmYxN2Vi
ODNjMjkuLjI0MTU0NWU4MTY5MzYyYmY2OTIwYTkxOWI4ZmUwZmRiYjdhMTAwNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24u
aApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzY29wZTsKICAgICB9
CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDc3YjljYWZi
M2ZhMDA4ZjBmNzA1NjhiNmRiNmY0YTE1MTg2ZDA2ZS4uNDg2ZGQ5MjczYjc1MDU4YTQ3Zjc2OWEz
ZmNmODc3NWU2OTBjZDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKSk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3Qq
PihjZWxsKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcgogICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoaW5kZXggJiYgdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChp
bmRleC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIFN0cmluZ09iamVjdDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgKaW5kZXggYTM0MDU4MTc4OTM0ZDg1MjUwYWNiM2EzZTRkYTM1MmYyMjc4NjUyMy4u
NjlmMjZiN2Q3MjRiYmVmNzMyMzMxOTQ3ZTgwYjdjN2ZhZmNmOGQ0YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMTk3NzU5
ZWE3OWNiODdlMjE0MDNhODNjZjgzNzA1ZGQyY2UxNTQ3Ny4uOGRkNzdmYjk5NDkyNTdjZTExYzEy
OGM1ZTkxODAwMzYwNzAzMmNlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCkBAIC01NDQsOCArNTQ0LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFk
ZE5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm8K
IAogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSogZGVmZXJyZWQpCiB7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSByZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoCi0gICAgICAgIHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7CisgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUo
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKG5ld1N0cnVjdHVyZSkK
ICAgICAgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKIApAQCAtNTUzLDE2ICs1NTIsMTMgQEAgU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm8KICAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBvZmZzZXQsIGRlZmVycmVkKTsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zm
c2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopCitTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlSW1wbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBBU1NF
UlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkp
OwogCi0gICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKLQogICAgIGNvbnN0ZXhwciBib29sIGlzQWRkaXRpb24g
PSBmYWxzZTsKKyAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgIGlmIChTdHJ1Y3R1cmUq
IGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHBy
b3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcywgaXNBZGRpdGlvbikpIHsKICAgICAgICAgdmFs
aWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0
aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0
aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNTcyLDExICs1NjgsMjcgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZShWTSYgdm0sIFN0cnUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQo
KSk7CisgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICBzdHJ1Y3R1cmUtPmdldENvbmN1cnJl
bnRseShwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQorCitTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVu
dGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgc3Ry
dWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKTsK
KyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICBy
ZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChz
dHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKwogU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNl
dCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVm
ZXJyZWQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5
KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0s
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJU
KCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CiAKICAgICBpbnQgdHJhbnNpdGlv
bkNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlv
bkNvdW50IDw9IHNfbWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZpb3VzSUQoKSkKQEAg
LTEyMDcsNyArMTIxOSw3IEBAIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVj
dHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUsIGJvb2wmIHNhd1BvbHlQcm90CiAKIHZvaWQgU3RydWN0
dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KFJhd1Bv
aW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKKyAgICBv
dXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9j
YXN0PHZvaWQqPihpZCgpKSksICIsICIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsK
ICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGIzZGIzODU2ZTM4MTFkMGVmMWExNjUzZmQ3YWMx
YjhhZmQyMjJiZWUuLjc0MTAwYjJjMzBjMDM2ZWEwOGMxY2RiYTcyYWU5OWQ3NTZlZTYxMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2Nr
LmgiCisjaW5jbHVkZSAiRGVsZXRlUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdU
eXBlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAt
MTkxLDcgKzE5Miw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
dWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hh
bmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBl
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24o
Vk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFy
eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKQEAgLTQ3Nyw2ICs0NzksNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29u
c3Q7CisgICAgYm9vbCBtYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkg
Y29uc3Q7CiAgICAgCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIApAQCAtNzEzLDYgKzcxNiw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKIAogICAgIC8v
IFRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0
eSB0YWJsZSwgdGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3Ry
dWN0dXJlcyB0aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0dXJu
cyBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgKaW5kZXggMGNkOThkNTJhY2M3ZjcxNGMwNWIxNTNlMDgxMzllNDkxY2Q4Y2Y4Yy4uZmUyODU4
NzQwOTRkYWMzMDcwNzVkMmM3NjFlMjMyMmE0NjAxNzVmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjI0LDEwICsyMjQsMjMg
QEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwq
IGNlbGwpIGNvbnN0CiAgICAgCiAgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZv
clR5cGUobV9ibG9iLnR5cGUoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAg
ICByZXR1cm4ganNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9
PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7CiB9CiAKK2lubGluZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2
ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0Cit7CisgICAgbXVzdENo
ZWNrQ2VsbCA9IGZhbHNlOworICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5
cGUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBl
ZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtdXN0Q2hlY2tDZWxsID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW5s
aW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoKSAmJiBnbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGRmZjFk
ZjE5YWM4NGE5ZWQzNjRiNTk3ZDVkZDlkMDQxYmVjNDc4YjMuLmRhYWFjYjE0ZGZjMGFjNWFmNjQx
MDg0YTE4OWI2NjJlMzUyNDdjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSkKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CkBAIC0yODI4LDYgKzI4MjgsMTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHkoSlNHbG9iYWxPYmplY3QqIGdsb2IK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2Jq
ZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHRhcmdldCk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rpb24tPmFyZU5hbWVBbmRMZW5ndGhP
cmlnaW5hbCh2bSkpKTsKK30KKwogdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTI5NTksNiAr
Mjk2OCw4IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QiLCBKU0RvbGxhclZNSGVs
cGVyOjpmdW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0LCAxKTsKICAgICBhZGRGdW5j
dGlvbih2bSwgImdldENvbmN1cnJlbnRseSIsIGZ1bmN0aW9uR2V0Q29uY3VycmVudGx5LCAyKTsK
IAorICAgIGFkZEZ1bmN0aW9uKHZtLCAiaGFzT3duTGVuZ3RoUHJvcGVydHkiLCBmdW5jdGlvbkhh
c093bkxlbmd0aFByb3BlcnR5LCAxKTsKKwogICAgIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0
V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqZWN0RG9p
bmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggY2I4ZDNi
YjAzMDUyODkxMDhhOGQ4ODFmMDAyMzE0Njg0MzJmYWNmMC4uNDU4NWIxMDBhYzdkYTk0ODIxNGFk
OGM4ZmZiYjIxOTRhYWM3MGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3BlY3RydW0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0g
MSkKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgaWYgKCFj
b3VudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBD
b3VudGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CkBA
IC01OCw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBDb3VudGVyVHlwZSBnZXQoY29uc3Qg
VCYga2V5KSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
ICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAo
aXRlciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjYsOCArNjgs
NiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21h
cC5zaXplKCk7IH0KICAgICAKLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJl
Z2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAg
IGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQog
ICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAg
ICAgCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRl
cmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCiAgICAgVmVjdG9yPEtleUFu
ZENvdW50PiBidWlsZExpc3QoKSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciht
X2xvY2spOwogICAgICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGxpc3Q7CiAgICAgICAgIGZvciAo
Y29uc3RfaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikKICAg
ICAgICAgICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50KGl0ZXItPmtleSwgaXRlci0+dmFsdWUp
KTsKQEAgLTEwNiwxNyArMTA3LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0KKyAgICB2b2lk
IGNsZWFyKCkKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
bV9tYXAuY2xlYXIoKTsKKyAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAg
ICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fbWFwLnJlbW92ZUlmKFsmZnVu
Y3Rvcl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBl
JiBwYWlyKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFp
ci5rZXksIHBhaXIudmFsdWUpKTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAKIHByaXZh
dGU6CisgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBIYXNoTWFwPFQsIENvdW50ZXJUeXBl
PiBtX21hcDsKIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjllMTFiZDQ3OWJhMTUwNDc0OGY1ODNiYTZmYTMxMjVlMzc4NDUzMS4u
Y2E3YTUxOWI5NGNhYjY4Y2JlMDdlMjNiMjhhODgwZGY5YTExM2YzMCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisK
KyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFzZWxpbmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanM6IEFkZGVkLgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRf
bmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9Jbmxp
bmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAg
IChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEu
dGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3Nl
cnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQu
bm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0
X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5
VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
LnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVt
cHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxl
dGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3Mp
OgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVh
YmxlLXN0cnVjdHVyZS5qczoKKyAgICAgICAgKiBzdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGlu
ZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2Vx
KToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5s
aW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
Lm1ha2VGb28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5u
b0lubGluZS5hc3NlcnRfbmVxLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5t
YWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURl
bGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURl
bGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3RE
ZWxldGVJbmRleC5tYWtlRm9vNSk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxl
dGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAgIChub0lu
bGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorCiAyMDIwLTAyLTEwICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQbGFjYXRlIGV4Y2VwdGlvbiBjaGVj
ayB2YWxpZGF0b3IgaW4gR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KCkuCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUt
Y2hhaW4uanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1w
cm90b3R5cGUtY2hhaW4uanMKaW5kZXggNDlhMzFiN2YyNDdjMWJkMGFjYTgyY2IyMmRmMjBlOGYx
YmY2MWJkZC4uYTllYzk5NjNlYjdmNmM3OGNlZWI0YzY3MmY4MjA5NjFjYTkxNTY5MiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90
eXBlLWNoYWluLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0
eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwpAQCAtMzYsNyArMzYsNyBAQCBmb3IgKGxldCBpPTA7
IGk8MTAwMDA7ICsraSkgewogCiBkZWxldGUgQy5wcm90b3R5cGUuegogCi1mb3IgKGxldCBpPTA7
IGk8MTAwMDAwMDsgKytpKSB7Citmb3IgKGxldCBpPTA7IGk8MjAwMDAwMDsgKytpKSB7CiAgICAg
Z2V0Wih7ejogaX0pCiAgICAgZG9UZXN0KHVuZGVmaW5lZCkKIH0KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBo
aWMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNh
Y2hlLXBvbHltb3JwaGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNzg5ZmNiOTgwYWRhZmZkMjM4MWJjY2My
ODhkMWVhMmYwNDJkNjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzCkBAIC0wLDAgKzEs
NTMgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQor
bm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25l
cSkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkgeworICAgIGZ1bmN0aW9u
IG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vWyJiYXoiK2ld
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiK2ldCisg
ICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzYpCisKKyAgICBh
cnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAg
ICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUw
OyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZv
by5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwg
MSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0g
MQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0gPSAz
CisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHltb3JwaGljRGVsQnlW
YWwpCisKK2ZvciAobGV0IGk9MDsgaTwzMDAwMDsgKytpKSB7CisgICAgdGVzdFBvbHltb3JwaGlj
RGVsQnlWYWwoaSkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YzZkYzU2Y2UyMGI3MzM2
OGFmMzhmMjQyNTdhMGJkOTZiYzA0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsMTYx
IEBACitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlv
biBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitmdW5j
dGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30KK25v
SW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEp
CisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1h
a2VGb28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAg
ICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4g
Zm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcgQXJyYXko
NTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBt
YWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAg
ICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAg
ICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3Nl
cnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQo
Zm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChm
b29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9
Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENh
Y2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28yKCkgeworICAgICAg
ICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIK
KyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAg
ICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZv
ciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAg
ICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28g
PSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0
X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAx
KQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5s
aW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVt
cHR5RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0
IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAg
ICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5i
YXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMykKKwor
ICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7
CisgICAgICAgIGFycltqXSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7
IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3Nl
cnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitq
XSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0K
K30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsK
KyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5i
YXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAg
YXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRl
IGZvby5iYXosIHRydWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zv
b2JhcicsIHsKKyAgICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBm
YWxzZQorICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBm
YWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAg
ICAgYXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQor
ICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZv
byA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3Nl
cnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09
IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitq
XSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKworZm9yIChsZXQgaT0wOyBpPDI1MDAw
OyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJs
ZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxl
LXN0cnVjdHVyZS5qcwppbmRleCA3Nzk1ZGM1ODE1NzhlNGMzOTgxYzIyYWM4NzZjNDU1NDEzZTY0
ZDNjLi4yMGYyYzM5YzI0NWZjMzk5MzIwNjFhZWJiMTI4YWViODhkNmY3Y2Y0IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxl
LXN0cnVjdHVyZS5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVy
dHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwpAQCAtMjQsNSArMjQsNSBAQCBmdW5jdGlv
biBkb1Rlc3QoKSB7CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAw
MDAwMDA7ICsraSkgZG9UZXN0KCkKK2ZvciAobGV0IGk9MDsgaTw1MDAwMDAwOyArK2kpIGRvVGVz
dCgpCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUt
Y2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlmNzIwOTRhY2Y0MzQ0NTM2ZWNhNTZjMGJlYTg0NmY3ZmIxNGUzNWIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNh
Y2hlLmpzCkBAIC0wLDAgKzEsNDIxIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1
ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQor
CitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJldyA9IGZhbHNlOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHRocmV3ID0g
dHJ1ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShhc3NlcnQpCitub0lu
bGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9JbmxpbmUoYXNzZXJ0X3Ro
cm93cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rp
b24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAx
CisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBB
cnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFycltq
XSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAy
KQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNz
ZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzIoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFy
ID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4gZm9vCisgICAg
fQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisg
ICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIo
KQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0
IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBh
c3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFn
ID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVh
YmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAg
ICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUg
Zm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28z
KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyAr
K2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0
IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJi
dWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFz
c2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisg
ICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rp
b24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280
KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAg
Zm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAg
ICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9v
LCAnZm9vYmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFi
bGU6IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29i
YXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQor
ICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9v
NCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5i
YWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJi
dWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0ZXN0RGVs
ZXRlSW5kZXgoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxldCBmb28g
PSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBm
b29bMF0gPSAyMworICAgICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRl
IGZvby5iYXIsIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0cnVlKQor
ICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5v
SW5saW5lKG1ha2VGb281KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChs
ZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzUoKQorICAgIH0K
KworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkK
KyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09
IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJi
YXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0sIDIzKQorICAgICAgICBhc3Nl
cnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sxXSA9IDEKKyAgICAgICAgYXNz
ZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0RGVsZXRlSW5kZXgpCisK
K2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1siYmF6IitpXSA9IDEK
KyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6IitpXQorICAgICAg
ICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQorCisgICAgYXJyID0g
bmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAg
ICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kg
aW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKQor
CitmdW5jdGlvbiB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZv
bzcoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAg
ICAgICBkZWxldGUgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBu
XQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb283KQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsK
KyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzcoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9MDsg
ajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2Vy
dChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5n
dGgsIDEpCisgICAgICAgIGFzc2VydCghKDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTBuIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChm
b28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZv
b1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAg
fQorfQorbm9JbmxpbmUodGVzdEJpZ2ludERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0U3lt
Ym9sRGVsZXRlQnlWYWwoKSB7CisgICAgY29uc3Qgc3ltYm9sID0gU3ltYm9sKCdmb28nKTsKKwor
ICAgIGZ1bmN0aW9uIG1ha2VGb284KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAg
Zm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydCghKFN5bWJvbCgnZm9vJykgaW4gZm9vKSkK
KyAgICAgICAgYXNzZXJ0KHN5bWJvbCBpbiBmb28pCisgICAgICAgIGZvby5iYXIgPSAyCisgICAg
ICAgIGRlbGV0ZSBmb29bc3ltYm9sXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5v
SW5saW5lKG1ha2VGb284KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChs
ZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzgoKQorICAgIH0K
KworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEo
T2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBm
b28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQor
ICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5l
KHRlc3RTeW1ib2xEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdE9iakRlbGV0ZUJ5VmFsKCkg
eworICAgIGNvbnN0IHN5bWJvbCA9IHsgaTogImZvbyIgfTsKKworICAgIGZ1bmN0aW9uIG1ha2VG
b285KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisg
ICAgICAgIGFzc2VydChzeW1ib2wgaW4gZm9vKQorICAgICAgICBhc3NlcnQoISh7IGk6ICJmb28i
IH0gaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1i
b2xdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzkpCisK
KyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikg
eworICAgICAgICBhcnJbal0gPSBtYWtlRm9vOSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0w
OyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNz
ZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxl
bmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitq
XSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdE9iakRlbGV0ZUJ5VmFs
KQorCitmdW5jdGlvbiB0ZXN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1
bmN0aW9uIG1ha2VGb28xMCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5i
YXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9v
LmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisg
ICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAg
dmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7Cisg
ICAgICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvby5mb29iYXIpCisgICAgICAgIGFz
c2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBu
b0lubGluZShtYWtlRm9vMTApCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMTAoKQorICAg
IH0KKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9
IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRf
ZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEp
CisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9
PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5l
KHRlc3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RPdmVycmlkZSgpIHsKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBmdW5jdGlvbigpIHsgfQorICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFBy
b3BlcnR5KGFycltqXSksIHRydWUpCisgICAgICAgIGRlbGV0ZSBhcnJbal0ubGVuZ3RoCisgICAg
ICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJvcGVydHkoYXJyW2pdKSwgZmFsc2UpCisg
ICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9v
ID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAw
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisg
ICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIg
aW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T3ZlcnJpZGUpCisKK2ZvciAobGV0IGk9
MDsgaTwxMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAgdGVz
dENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlk
KCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorICAgIHRlc3REZWxldGVJbmRl
eCgpCisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKKyAgICB0ZXN0QmlnaW50RGVsZXRl
QnlWYWwoKQorICAgIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpCisgICAgdGVzdFN0cmljdCgpCisg
ICAgdGVzdE92ZXJyaWRlKCkKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390659</attachid>
            <date>2020-02-13 09:47:34 -0800</date>
            <delta_ts>2020-02-13 10:56:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200213094733.patch</filename>
            <type>text/plain</type>
            <size>146468</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzI2YjJhZGYwNWQxYWY1ODlmMmExOGEwMmJmMjQ0ZGM0ZDE1MTM1Li42MTkzOGY3YzdhMmZjOWJj
MjY5N2JkMzU3ZWZhYWQzYjM2MTM1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9ubHku
IFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVzdGlu
Zy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBjb2Rl
IGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2FjaGVk
IGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3MgaXMg
YSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0gRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlzdHMs
IGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25kaXRp
b25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQgbXVz
dCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBUaGlz
IGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0cyB3aXRoIERGRyBkaXNh
YmxlZDoKKworICAgICAgICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZSAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAg
ICAgICAgZGVmaW5pdGVseSAxLjE2NTB4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLXBvbHltb3JwaGljICAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluICAgICAgKG5ldXRyYWwpCisKKyAgICAgICAgV2l0aCBE
RkcgZW5hYmxlZCwgZXZlcnl0aGluZyBpcyBuZXV0cmFsL3NsaWdodGx5IG5lZ2F0aXZlIGV4Y2Vw
dCBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLCB3aGljaCBpcyA2JSBzbG93ZXIuIFRoaXMg
cGF0Y2ggZG9lcyBub3QKKyAgICAgICAgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgREZHIGNvZGUsIGJ1
dCBsaWtlbHkgYWZmZWN0cyB0aGUgdGllciB1cCB0aW1pbmdzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpy
ZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChK
U0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklU
RGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxC
eSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlYWJs
ZUlkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNhY2hlYWJsZUlkZW50aWZpZXI6
OkNhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVO
ZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5kZXhpbmdI
ZWFkZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hl
YWRlciBjb25zdCk6CisKIDIwMjAtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFBsYWNhdGUgZXhjZXB0aW9uIGNoZWNrIHZhbGlkYXRvciBpbiBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTEwZjM3OGY2OTRkZGFjMmRhNjc0MzEyYzQw
ODg1MGI5OWMwZDRhMS4uMmQxOTY1NjIxOWVhOTMzMzA3M2E5MDhiYjUwOTAzYWFjYmZlMDhkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5f
bWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92
YWwgaW4gYmFzZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3Ry
dW06OmJ1aWxkTGlzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVt
OjpiZWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVk
LgorCiAyMDIwLTAyLTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IG9uIHdhdGNoT1Mgc2ltdWxh
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4
IDAzNGIzNTdjMDczOGUzNDkxMjU4ODU4ZDcwNjk4OWZlZmNiNDgzM2QuLjkyY2E5MjQ3Nzk2MmJj
MDRjN2E4ZWI4NmExZjQxNWQyYjE4N2YzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkKTsKIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNl
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggY2Q1
MTFiZmQyODRhMDEzMjUyYTY0MDVhNjcwN2FhZDEzN2ExYmNjYi4uNGJlYzMzYTcyZGMyODQ3N2E2
MTM1NmZkYjkyMGE0NzY4NjJlZDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTQxOCw3ICs0MTgsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KQEAgLTQyNiw3ICs0MjYsOCBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplYwogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7
Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5h
bWUpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAppbmRleCBmN2Y5ZGFiM2YyOGFkYzBlYWJiMmJkZThiMjUwNjc3MmFkMjVmZmNlLi45ZGY4
NzhlNTg4ZmEyYWVmMDYyMmFjNjk1ODc4MWFiZTY3YTM3ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNDc5LDcgKzQ3OSw4IEBAIGJvb2wgSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUZvcktleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTVmFsdWVSCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgs
IGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xv
dCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTM0LDcgKzUzNSw4IEBAIGJvb2wgSlNPYmplY3RE
ZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3Ry
aW5nUmVmIHByCiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAKLSAg
ICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsK
KyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pLCBzbG90KTsKICAgICBoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjYTBjODYwMmJlMTRjNWUzYjk5YjNl
MjExMmYyZDI4ZGRkOTFiYTguLjUwNjQ1M2ZiMjUzZjc0Mzk5NjllZmM5MGVlOWY2YmI3Y2I0MzZj
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDYgKzExNzgsNyBAQAog
CQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAx
MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFGREJF
QTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAv
KiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERl
bGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTczRTM3
OTk0MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMz
NTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1OTNDODk4QkU3MTRBNjRC
RTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0RCAvKiBXYXNtQ29u
dGV4dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAw
NTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzk3MSw2ICszOTcyLDcgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzM0QjY1NTQy
M0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3Ry
ZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VM
b29wU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNN
b2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVM
b2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODIsNiArNzA4NCw3IEBA
CiAJCQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAog
CQkJCUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJ
MTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICov
LAorCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAq
LywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAq
LywKIAkJCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggKi8s
CiAJCQkJMEZFMDUwMEQxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5j
cHAgKi8sCkBAIC05MjA3LDYgKzkyMTAsNyBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFC
NyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJv
cGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkg
LyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBCQkZE
MDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkw
MzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDY2MCw3ICsxMDY2NCw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAv
KiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1
dGVzID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJ
CQlEZWZhdWx0QnVpbGRTeXN0ZW1UeXBlRm9yV29ya3NwYWNlID0gT3JpZ2luYWw7CiAJCQkJTGFz
dFN3aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDJh
ZjQ4MGE5Y2U3ZDgwMjVjZTU4ODNkOGFkZjljOTg0MjY5YmE5NzUuLjk5NmZiYmZlZTk5NzEzMjNm
NTNmZjc3ZTY5ZDdiMzI2ZWE3MDZjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTczLDYgKzczLDggQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5N
aXNzOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlz
czoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmlu
Z0xlbmd0aDoKQEAgLTEwNiw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0x
MjMsNiArMTI1LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAK
K3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCisg
ICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBu
ZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Cisg
ICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ugc28gdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2RlIGJl
bG93LgorICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgbmV3U3RydWN0
dXJlLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKKworICAgICAg
ICBpZiAobWF5TmVlZFRvQ2hlY2tDZWxsKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7
IH0sIHsgfSkpOworfQorCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CkBAIC0yNjIs
NiArMjgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2go
KSBjb25zdAogICAgIGNhc2UgTG9hZDoKICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBh
IGJ5X3ZhbCBmb3IgdGhlc2UgcHV0cywgYnV0IHdlIGRvIGNhcmUgYWJvdXQgdGhlIGlkZW50aWZp
ZXIuCiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVs
ZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxh
Y2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTMwOSw2ICszMzAs
OSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0eUNoZWNrKCkgY29uc3QK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRp
b246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6Cisg
ICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzU2LDYgKzM4MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
TG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBE
ZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVw
bGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNDQ3LDYgKzQ3
NCw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwoVk0mIHZtLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6
CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToK
KyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAg
ICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAg
LTQ5Miw2ICs1MjIsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmRvZXNDYWxscyhWTSYgdm0sIFZlY3Rv
cjxKU0NlbGwqPiogY2VsbHNUb01hcmtJZkRvZXNDYWxscykgY29ucwogICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6CiAgICAgICAgIGRvZXNDYWxscyA9IHRydWU7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAg
IGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBSZXBsYWNlOgogICAg
IGNhc2UgTWlzczoKQEAgLTYxNCw2ICs2NDcsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxh
Y2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpIGNvbnN0CiAKICAgICBjYXNlIExvYWQ6CiAgICAg
Y2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNjYzLDcgKzY5OSw3IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJwcm90b3R5cGUgYWNjZXNzIGNoYWluID0gIik7CiAgICAgICAgIG1fcG9seVBy
b3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3RydWN0dXJlKCksIG91dCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRy
YW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSgpKSwgIiAtPiAiLCBwb2lu
dGVyRHVtcChuZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICBlbHNlIGlmIChtX3N0cnVjdHVyZSkK
ICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1w
KG1fc3RydWN0dXJlLmdldCgpKSk7CkBAIC03MDUsNiArNzQxLDcgQEAgYm9vbCBBY2Nlc3NDYXNl
Ojpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRvcikgY29uc3QKIAogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgogICAgICAgICBpZiAodmlzaXRvci52bSgpLmhlYXAuaXNNYXJrZWQobV9zdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fc3Ry
dWN0dXJlLmdldCgpKTsKICAgICAgICAgZWxzZQpAQCAtMTg1MSw3ICsxODg4LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwo
c3BpbGxTdGF0ZSwgcmVzdWx0UmVnaXN0ZXJUb0V4Y2x1ZGUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkp
IHsKICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAgICAgIHZhbHVlUmVn
cywKQEAgLTE4OTYsNiArMTkzMyw2NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c2xvd1BhdGguZW1wdHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYXNlIERl
bGV0ZTogeworICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgYWxs
b2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgIEFTU0VS
VChuZXdTdHJ1Y3R1cmUoKS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKworICAg
ICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0
YXRlID0KKyAgICAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVz
aGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4
dHJhU3BhY2UpOworCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBi
b29sIGhhc0luZGV4aW5nSGVhZGVyID0gbmV3U3RydWN0dXJlKCktPm1heUhhdmVJbmRleGluZ0hl
YWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhp
cyBjYXNlIHlldCBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisg
ICAgICAgIC8vIFNlZSBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGFuZCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkuCisgICAgICAgIEFTU0VSVCghbWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAg
ICAgICAgLy8gQ2xlYXIgdGhlIGJ1dHRlcmZseSBpZiB3ZSBoYXZlIG5vIHByb3BlcnRpZXMsIHNp
bmNlIG91ciBwdXQgY29kZSBleHBlY3RzIHRoaXMuCisgICAgICAgIGJvb2wgc2hvdWxkTnVrZVN0
cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5ID0gIW5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpICYmIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFoYXNJbmRleGlu
Z0hlYWRlcjsKKworICAgICAgICBqaXQubW92ZVZhbHVlKEpTVmFsdWUoKSwgdmFsdWVSZWdzKTsK
KworICAgICAgICBpZiAoc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5KSB7Cisg
ICAgICAgICAgICBqaXQubnVrZVN0cnVjdHVyZUFuZFN0b3JlQnV0dGVyZmx5KHZtLCB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpLCBiYXNlR1BSKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0lubGluZU9m
ZnNldChtX29mZnNldCkpIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAg
ICAgICAgIHZhbHVlUmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
CisgICAgICAgICAgICAgICAgICAgIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArCisgICAgICAgICAgICAgICAgICAgIG9mZnNl
dEluSW5saW5lU3RvcmFnZShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAg
ICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5CdXR0
ZXJmbHkobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAg
ICB1aW50MzJfdCBzdHJ1Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1
Y3R1cmUoKS0+aWQoKSk7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlQml0cyksCisgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisK
KyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4odHJ1ZSksIHZhbHVlUmVncyk7CisKKyAg
ICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBwcmVz
ZXJ2ZWRTdGF0ZSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CisgICAgICAgIGppdC5t
b3ZlVmFsdWUoanNCb29sZWFuKGZhbHNlKSwgdmFsdWVSZWdzKTsKKyAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVNaXNzOiB7
CisgICAgICAgIGppdC5tb3ZlVmFsdWUoanNCb29sZWFuKHRydWUpLCB2YWx1ZVJlZ3MpOworICAg
ICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlMZW5ndGg6IHsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2hH
UFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXgg
NzlkMzEwMTU1ZTkzYTU0NTNkMjg2MWM0MzIyN2JhM2JhYzE5ZjI3Ny4uYzZjODE4NDQ2MzQxZDBh
NDNjNjdhZWM5MzE4MzMzNzQ3ODdkMTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICBlbnVtIEFj
Y2Vzc1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgTG9hZCwKICAgICAgICAgVHJhbnNpdGlvbiwK
KyAgICAgICAgRGVsZXRlLAorICAgICAgICBEZWxldGVOb25Db25maWd1cmFibGUsCisgICAgICAg
IERlbGV0ZU1pc3MsCiAgICAgICAgIFJlcGxhY2UsCiAgICAgICAgIE1pc3MsCiAgICAgICAgIEdl
dEdldHRlciwKQEAgLTE0Niw4ICsxNDksMTEgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUq
ID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiA9IG51bGxwdHIpOwogCiAgICAgLy8gVGhpcyBjcmVhdGUgbWV0aG9kIHNob3VsZCBiZSB1c2Vk
IGZvciB0cmFuc2l0aW9ucy4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
CiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworCisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKICAg
ICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVT
dHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVy
ZVN0dWJJbmZvJik7CiAKQEAgLTE1Nyw3ICsxNjMsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5z
aXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVs
ZXRlKQogICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CiAgICAg
ICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CkBAIC0xNjUsNyArMTcxLDcgQEAg
cHVibGljOgogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpOwogICAgICAgICByZXR1cm4gbV9z
dHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAxMzI0MDljMGE0NTEwYmRmYThl
Y2UzM2I3NDM0NzE2MDJkN2IwZTc5Li5iMTY2YzMwYzE4YTUyM2E3NjI1ZjM5YWY2Yjc4OTUwNjdh
YTVmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc5NSw2ICs3OTUsMTUgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZSkKICAgICBjYXNl
IEFjY2Vzc0Nhc2U6OlRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmludCgiVHJhbnNpdGlvbiIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6CisgICAgICAg
IG91dC5wcmludCgiRGVsZXRlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nh
c2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVOb25D
b25maWd1cmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVs
ZXRlTWlzczoKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVNaXNzIik7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlJlcGxhY2U6CiAgICAgICAgIG91dC5wcmludCgiUmVw
bGFjZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA2MTc4NzM3ZjlmOGE5Y2QwYjZk
ZGFkNTdmMWNmMTJlZmU0ZmNhNzA1Li45NmExYmFlY2JlNGNiYmI3NmRiZGVkYTgwNTY1YTJjNTk4
NjU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Niw2ICsyNzYsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJ
bnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CisgICAgICAgIHJlc2V0RGVsQnko
Y29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgorICAgICAgICByZXNldERlbEJ5KGNvZGVC
bG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZGRjZTg1ZWMwMjU1NTc2YzllMzQ1MWY2
NDczNmQxMmMzODk0MjgwMy4uYjU3NWJkZDIxNjE5YzJkZmU0ZjE4MmZhZWQ5MGYyNjhlOWUyNjE5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKQEAgLTU1LDcgKzU1LDkgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90
IHsKICAgICBHZXRCeVZhbCwKICAgICBQdXQsCiAgICAgSW4sCi0gICAgSW5zdGFuY2VPZgorICAg
IEluc3RhbmNlT2YsCisgICAgRGVsZXRlQnlJRCwKKyAgICBEZWxldGVCeVZhbAogfTsKIAogZW51
bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCmluZGV4IDI2ZTI4MjkzOWU5YWNhODg2NWMyMjE3
NzNjMmE0MWUwMjgwOTRkZGEuLjQ4YjViODZmYTRiOWU4NjVlYTQ4ZGM5OWE0OTNiZDk0OGQwNzRm
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29w
ZS5jcHAKQEAgLTEyOSwxNCArMTI5LDE0IEBAIGJvb2wgRGVidWdnZXJTY29wZTo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPnB1dCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
Ci1ib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wg
RGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdn
ZXJTY29wZSo+KGNlbGwpOwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAo
IXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0g
ICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiB2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmY0Y2UxYjFkYTRiNTc5MGRl
OGFkOTg4YTcxZjYwMmNkZjI2MTY3NC4uNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlhMWEyMTQ5Nzc1
ZWRkODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1YjRhZGU0NDRjNDNmNWFk
ZGYyMzE3ZjQyNjViNy4uOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2YzE0OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTcwLDcgKzcwLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQ
dXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAot
ICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkKKyAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpIFwK
KyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAorICAgIG1hY3JvKERlbEJ5UmVwbGFj
ZVdpdGhHZW5lcmljKQogCiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA2ODcxMWNlNWRkNzMwNWQ5NmMxZjAxNmZiMjI3YzZiYjVmYWEzOGRi
Li40ODNlOWM0MjE0NDU0NmVkYjRkODQxNzFiMTg3NWQxOThlMzYyYWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC01MDAsNiArNTAwLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID0gMDsKICAgICBtX3B1
dEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbkJ5SWRJbmRleCA9IDA7CisgICAgbV9kZWxCeVZhbElu
ZGV4ID0gMDsKKyAgICBtX2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXgg
PSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5m
b0luZGV4ID0gMDsKQEAgLTU4MCw2ICs1ODIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92
YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9o
YXNfaW5kZXhlZF9wcm9wZXJ0eSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9m
cm9tX3Njb3BlKQpAQCAtODc1LDYgKzg3OSw4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGlu
aygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeVZhbHMsIHBhdGNoQnVmZmVyKTsK
ICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMsIHBhdGNoQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBwYXRjaEJ1ZmZlcik7Cisg
ICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCA3YjQ0MDc0OTYzMzM2ZmNiODk0MWViZDA1YjU5NzMxMjlhOWU4NjU1Li42NzE2
NjYxZGY0ZmFjZWE1ZWZlZDVmNTEwODFmMDU5YjZkMjUzZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTUwMCw3ICs1MDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKGNv
bnN0IEluc3RydWN0aW9uKik7CkBAIC05MTMsNiArOTE1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRo
VGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CiAg
ICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlkczsKKyAgICAgICAgVmVj
dG9yPEpJVERlbEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVRE
ZWxCeVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOwogICAgICAgICBWZWN0b3I8QnlWYWxDb21waWxh
dGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZlY3RvcjxDYWxsQ29t
cGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CkBAIC05MzQsNiArOTM4LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5CeUlkSW5kZXggeyBVSU5UX01BWCB9OworICAgICAg
ICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25l
ZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5zdGFu
Y2VPZkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0
aW9uSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0lu
ZGV4IHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOTIwYjcyMDNlM2NmNGJmMDZlZWQ0NTcz
YTM5Y2I1NmJjY2E2NWQ1YS4uYjYyZmY3N2Y5OWExOTE0MTY2MDNiMGNmOWE4ZjQ5MWQ0MjdjZmU1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKQEAgLTE2Miw2ICsxNjIsNjYgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpK
SSBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCitKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sK
KyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKKyAgICBBU1NF
UlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CisgICAgbV9zdHVi
SW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3Mu
cHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFs
dWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
bV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+
dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0
eVRhZ0dQUiA9IHByb3BlcnR5LnRhZ0dQUigpOworI2VuZGlmCit9CisKK3ZvaWQgSklURGVsQnlW
YWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAg
ICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hh
YmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVERlbEJ5
VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1
ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7CisgICAgQmFz
ZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRp
b25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCitKSVREZWxCeUlkR2Vu
ZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3Vs
dCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhh
c0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CisgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigp
ICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNl
LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxp
ZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFz
ZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIo
KTsKKyAgICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyNl
bmRpZgorfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9z
bG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJl
bCgpOworfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9z
dGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNs
b3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0
KSk7Cit9CisKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCmluZGV4IGJmYjkwMjE2YjI5YzI3ZmZkMGVkOGQ3ZjBmNTg3ZTA4ZmU2ZTczMTYu
LjM1NTVmZWM1ZGQzYTIwNGEyYThhYzNmY2VjYzM2MjVmYjYyMjZhODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTE0
Miw2ICsxNDIsNTYgQEAgcHJpdmF0ZToKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKK2Ns
YXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6Cisg
ICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9y
KAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
c2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhK
dW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7
CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0
ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKK2NsYXNzIEpJVERlbEJ5SWRH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJh
c2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVREZWxCeUlkR2Vu
ZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KTsK
KworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICBy
ZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUo
CisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xv
d1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0Owor
ICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwog
Y2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVi
bGljOgogICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJh
ZDAwMmU0OGRjNjMzNC4uNGFlMmJhNmQ4OTAxMzZhOTEwYWEzYWVmYzc1ZjU0YjUyYWZmMjQ5NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTQy
LDcgKzIxNDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0
LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1MCwy
MCArMjE1MCw0OCBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHVpZCkpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgdWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwog
fQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KTsKIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNS
ZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVC
eUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFzZVZhbHVlLCB1aWQpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAg
aWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKCFw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8s
IERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSks
IHVpZCkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2
bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKSkpOwogfQogCiBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQpAQCAtMjE3MSwxMCArMjE5OSwxMSBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKUwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBkZWxldGVCeUlkKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwg
dWlkKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gZGVsZXRlQnlJ
ZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSksIHVpZCk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBrZXkpCitzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMTkwLDcgKzIyMTksNyBAQCBz
dGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJv
cGVydHkgPSBrZXkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
ai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5KTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3Qp
OwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkK
QEAgLTIxOTgsMTIgKzIyMjcsNDIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgIHJldHVy
biBjb3VsZERlbGV0ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCAgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtleSkKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51
bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2Vs
bChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKHN1YnNj
cmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERlbEJ5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3Jp
cHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEtleSkpKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFN1YnNjcmlwdCkpKSk7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQpAQCAtMjIxMSw3ICsy
MjcwLDggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEoKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxl
dGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSk7CiB9CiAKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2Jq
ZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4
IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVmZjgyYTMwMGMuLmI0YTcxYWRiY2QxOTBl
ZDUzNTMyNGZkNDQyOWZmOWFjNjQyMTQ5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsOSArMjUxLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBC
eVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJn
ZXQpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCkgV1RGX0lOVEVSTkFMOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVj
dCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUyZjcxM2U4YWEwYWZiNWU4MDVjN2NmM2Yx
ZDM4ODM3MWMyZjYuLjgwNTcwNmU0ODIyYTkyOWEwM2ZiYjVhNWE0NzdmMDcyMGUxY2I0YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC0zODcsOSArMzg3LDM1IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0g
Ynl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCisgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cisg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisK
KyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCk7
CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZElu
ZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSku
aW1wbCgpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zOTgsOSArNDI0
LDM5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9k
c3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0
eSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVy
dHkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90U3RyaW5nKHJlZ1QwKSk7CisgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxKTsKKyAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIGRzdCwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA1Y2M3ZGY5YzU0MTg5Yzdj
YjNkNDA5MWI1YzRmNGM4YmRhZWVmMTRjLi40ZmNiZGE1M2U5NjUyYjZkMjBhNDg4MTZkN2NiZDY0
OGQwYjNhYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBpbnQgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQsIGRzdCwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBtX2Nv
ZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlk
ZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEzMyw5ICsx
MzMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVy
dHk7CiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCBy
ZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBk
c3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeVZhbEdlbmVyaWMsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBu
dWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDIpKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9Cit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpIHsgfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkxODIwNDE1NTRiZGM3NmMxOTFjYjEzODVkMTNhOWM4
MWZmZDQ1ZWIuLmJlNzUwMWVmMjJjMTgzM2U0ZmI3ZjA2YTlhYmUzYWFiMDc2ZWRjNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBj
b2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAgICAgICAgICAg
ICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBp
ZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0
ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewpAQCAt
NzM0LDYgKzczNCw3MiBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQog
CitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxC
eUtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgcmVzdWx0OworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCk7CisKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0Nl
bGwoKSB8fCAhb2xkU3RydWN0dXJlIHx8ICFvbGRTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkgfHwgIW9s
ZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlRGVs
ZXRlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKworICAgICAgICBpZiAoc2xvdC5pc0Rl
bGV0ZUhpdCgpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQ7CisgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KG9sZFN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQpOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1
cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKyAgICAgICAgICAg
IGlmICghbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgfHwgbmV3
U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdPZmZzZXQgPT0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkgPT0g
b2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzUHJvcGVy
dHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJl
LT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG5ld09mZnNl
dCkpOworICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSh2bSwg
Y29kZUJsb2NrLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIG5ld09mZnNldCwg
b2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICB9IGVsc2UgaWYgKCFjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xvdC5pc05vbmNvbmZpZ3Vy
YWJsZSgpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0s
IGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9
LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0g
QWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3Ms
IENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNldCwgb2xkU3Ry
dWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gc3R1
YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBXVEZN
b3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAgICAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5j
bGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaXJlV2F0
Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywgcmVz
dWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNh
Y2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1Yklu
Zm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpE
ZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxP
YmplY3QtPnZtKCkpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlL
aW5kOjpOb3JtYWwpCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVs
ZXRlQnlWYWxHZW5lcmljKTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluQnlJRCgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LAog
ICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5MSw2ICsxNDU3LDE1IEBAIHZvaWQgcmVzZXRQdXRCeUlE
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7CisgICAg
aWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIGVsc2UKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwogc3Rh
dGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
IHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVt
cCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guaAppbmRleCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBlOGE5OTQ0YmI0ZjlmZTM5
Li5jMWQ5OTU5YWRhZmQzNjU3NjJlODkxNzlhYjNjMGVlZDY2ZTU4N2QwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51bSBjbGFzcyBHZXRCeUtp
bmQgewogICAgIERpcmVjdAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtpbmQgeworICAgIE5vcm1h
bCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlTbG90
JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJRChK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1
dEtpbmQpOwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
JiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXBhdGNoSW5CeUlEKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwg
Ym9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
IHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1Zh
bHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdh
c0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENv
ZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5
UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5saW5rRm9yKFZNJiwgQ2FsbExpbmtJ
bmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5SUQo
Q29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXREZWxCeShDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeUlEKENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1
Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2Nr
KiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyMjU0ZmNjNDI5NjE3Y2U4Mzk3ZDI0ZTU1
MGUxYWNlYzY3YjYxNDQzLi5mYWNhN2JmNGUxNzhkNDI1ZmZiZWZmZTk1NGU4ZjMxZWIwMDIwNmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
QEAgLTkyNSw3ICs5MjUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5
X2lkKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWxCeUlkPigpOwogICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAg
ICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
Ym9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSksIHNsb3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
ICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKICAgICAg
ICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxl
dGVQcm9wZXJ0eUVycm9yKSk7CkBAIC0xMTA4LDcgKzExMDksOCBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOwogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgY291
bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHNsb3QpOwogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVjZjZmZDA4ZmZkMmJiODhiOWQ1ODdiYWVkMGZmNi4u
MTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2IwYzE1ZjI2NTg5NzkzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5s
aW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNo
ZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGluZSBD
YWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKEpTQ2VsbCogaWRlbnRpZmll
cikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChpZGVudGlmaWVyKSk7
CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggZmU2YzZiN2Q4NGM0N2VkZWUxMWFhYzExZjY0ODRh
NzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNjYmJkMjhkODAzMWRhOGExN2VlMDUzNzIxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTU5LDcgKzU5LDcg
QEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBQdXRCeUluZGV4RnVuY3Rpb25QdHIg
PSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9uUHRy
IE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUluZGV4KTsKIAotICAgIHVzaW5nIERlbGV0ZVByb3Bl
cnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCop
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShk
ZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlv
blB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5k
ZXggOTZhMzYzNWU2ODI3MzkzZWU4MzZkODA0Nzc3MjRhMjVkNTQ2YzI2MS4uZjY5OTllNzM0ODRl
MmFiZDg4MTQ1NGYxMTQ4MzEwYzAyZDRmMmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9v
bCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmEKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBDbG9uZWRBcmd1bWVu
dHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQ2xvbmVkQXJn
dW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50cyo+KGNlbGwpOwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBib29sIENs
b25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lm
TmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsK
IH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAppbmRl
eCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQwYmEwY2FkMTU3NjA1ZmY1Li4wMGM1MzQ3NTYwNWE3
M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSBjb25zdCB7IHJldHVy
biAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJhOTM1M2U3ZDc1MjFhODc5YmQxMmQ3
NDAwNjkuLjFkZTgyMzk1MDllMGM4ZDdhNTZhMzI0MTRmZmU4YTc0YTliNzhkZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
OTg1LDcgKzk4NSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAg
ICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlw
dC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJvcGVy
dHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNs
b3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYWQ2ZjZiNDgwMGVmNTc4NTYxY2FlZGM5ZGRiYmM4MmYyNTMyZTYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRl
UHJvcGVydHlTbG90LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb3BlcnR5
T2Zmc2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
ICAgIAorY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUg
OiB1aW50OF90IHsgVW5jYWNoZWFibGUsIERlbGV0ZUhpdCwgQ29uZmlndXJhYmxlRGVsZXRlTWlz
cywgTm9uY29uZmlndXJhYmxlIH07CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3QoKQorICAgICAg
ICA6IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCisgICAgICAgICwgbV9jYWNoZWFiaWxpdHkoQ2Fj
aGluZ0FsbG93ZWQpCisgICAgICAgICwgbV90eXBlKFVuY2FjaGVhYmxlKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZU1pc3MoKQorICAgIHsKKyAgICAgICAgbV90eXBl
ID0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsKKyAgICB9CisKKyAgICB2b2lkIHNldE5vbmNvbmZp
Z3VyYWJsZSgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBOb25jb25maWd1cmFibGU7CisgICAg
fQorCisgICAgdm9pZCBzZXRIaXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgbV90eXBlID0gRGVsZXRlSGl0OworICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKKyAgICB9
CisKKyAgICBib29sIGlzQ2FjaGVhYmxlRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFi
bGUoKSAmJiBtX3R5cGUgIT0gVW5jYWNoZWFibGU7IH0KKyAgICBib29sIGlzRGVsZXRlSGl0KCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IERlbGV0ZUhpdDsgfQorICAgIGJvb2wgaXNDb25maWd1
cmFibGVEZWxldGVNaXNzKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENvbmZpZ3VyYWJsZURl
bGV0ZU1pc3M7IH0KKyAgICBib29sIGlzTm9uY29uZmlndXJhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IE5vbmNvbmZpZ3VyYWJsZTsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICB9CisK
KyAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkKKyAgICB7CisgICAgICAgIG1fY2FjaGVhYmlsaXR5
ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgaXNDYWNo
ZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nQWxsb3dlZDsg
fQorCisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmlsaXR5VHlwZSBt
X2NhY2hlYWJpbGl0eTsKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
LmNwcAppbmRleCBmMTgyMWQ1NTZhM2Q0MDQ0OTM2NzVlYWUyNWZhMmU0NjY3M2VjNDNhLi42ODVj
N2FjYmMxMWM2MmQyMzM3N2QzMmM0ZGU5YTIwYjY1ODc4YThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtODcsNyArODcs
NyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9v
bCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVy
cm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBF
cnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9yQ29uc3RydWN0b3IqPihj
ZWxsKTsKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCkKICAgICAg
ICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51
bGxvcHQpOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yQ29uc3RydWN0b3IuaAppbmRleCA5M2Q1MjcxNDg2ZjY2ZmRlNzUzZTQ5YTQwMTZmMTY4Mzhl
OTc1NzIxLi45YTVhNDYzMjFiM2RiYjc2NGMyYTFiNTIxZDkyNjhmOGQxNDM1MzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC00
OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgRXJy
b3JQcm90b3R5cGUqKTsKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0ZToK
ICAgICBFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGZkNDhiYmYzNGMzMDQz
MGQyZTcwZGU1NzQ5OGU5YjUxZTZhYzI0NGQuLjFkNTBjZDE3NGZjNDdkOTIyMTcxODhlMzI1ZmY1
N2FlOGQxNWI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBib29sIEVycm9ySW5zdGFuY2U6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZQogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBFcnJvckluc3RhbmNlKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEVycm9ySW5zdGFuY2UqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6ZUVycm9y
SW5mb0lmTmVlZGVkKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggZjFmYWM1OTY4MmQ5ZTAyNjUw
OGNiNGZmOGM5YjI2N2I0ZWU3NmU4Ny4uNDAwNjA4ZDA4YTgzNGNkMzFlNjEyZTczYWI1MzFjYjBh
M2NhMTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuaApAQCAtOTksNyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0U3Ry
dWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKIAogICAgIHZvaWQgY29tcHV0ZUVycm9ySW5mbyhWTSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5kZXggY2UxMGY3
ZmU0ODczZTRhNDdiZTE0MWUyNTU2OWFkNjQ4YWZmOWQyOC4uNDcxMjE2NzMwMzY0ODI4ZmUyNzcw
ZTIzNDg2OWFjZTcwOTA4ZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmgKaW5kZXggYjgzN2VjMWJiNDMwZjZkNThiMWQ1YjExNWRhNTEzYzViY2MwYmY1My4uYTVh
OWVjYjMyMmEyMGRhOGZlMjQzM2ZmZDU0N2E3OGFmYzYwMmNmNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBA
IC0xMzksOCArMTM5LDEwIEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvCiAgICAgICAgIHRoaXNP
YmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3Qp
KTsKKworICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMTU4LDcgKzE2MCw3IEBAIGJvb2wgR2VuZXJpY0FyZ3Vt
ZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1ib29sIEdlbmVyaWNBcmd1bWVu
dHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5
cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSw3ICsxNzcsNyBAQCBib29sIEdlbmVyaWNBcmd1
bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbAogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlk
ZW50KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBHZW5lcmljQXJndW1lbnRz
PFR5cGU+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCAq
aW5kZXgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgc2xvdCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAwMzQ4N2Y2MWUw
ZjJmYzc1MWJhNzAzYjcwY2EzNmQwMjIyMTYzNGRlLi42MDFmMWU0OWYxNWNkNTAxYTBlMGE3NWVl
Mjg1MDZmMzJiMGRiM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJv
b2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
c3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsg
fQogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2Jq
ZWN0PiBtX2dldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
aW5kZXggNmQwNzU5MTcxMWVlZGJjMjhlMGU0ZGE3ODQ5ODIyYWI4ZDY2ZjVkMS4uYmNlMzY1NWEz
MTkyZWEyOTBmZTdmMDQwODI0YTM4ODZmNmIwNDgzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBib29sIEpTQXJyYXk6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dCh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KIAot
Ym9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0FycmF5KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEpT
QXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogc3RhdGljIGludCBjb21wYXJlS2V5c0Zv
clFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKaW5kZXggMzExNjViNWZmNDkyNTRjYzFhNmM0NzkwMmI3OTEwYWM0
YTdkOWJmZi4uY2RjMzliNTEyZDdlZTNhMTVjZjFhZWMyZTBhMmQ5M2Q5YWFhZDBmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmlu
ZGV4IGZlMDE4MGRkNjBjM2QxYmI2MGY4YjUzM2IxODYwNThlZWFkODFiNzUuLjU4NmFmM2ZhYjM3
OTUyZTNmZGUxY2U0NzBjOTlhYjFlZGM0YTc0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Q7CiBjbGFz
cyBKU0JpZ0ludDsKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2VsbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI3MTM1MmIyMTc0NzAzNTZkZjQwM2Zk
ZDljZGU2MGRlZjg4ODE2MDcuLjBlNjdmODY2NzZkNTg2NWFhODhmMDRmMzVhZGE3NDMyMWUwMmNm
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTI2LDEw
ICsxMjYsMTAgQEAgYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGUKICAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
aWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0NlbGw6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRp
ZmllciwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKIH0KIAogYm9vbCBKU0NlbGw6OmRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCmluZGV4IDY2NWQwODg5Y2Y0NDYxYzNhYjBhMmFmNGIwN2M2YTU4YzkwNDIxYzQuLjA2
MmU4M2RiMzlhYjM0YTZlZjRmZGEzNmZmYTUwZTRjMTExZDk3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0SW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RhdGlj
IEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCAxNDZhOTEz
MmQ0NzM1MjQyYzEwNmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJiMDllMzdmOGE0
NzQzMTliZjc2YzMyZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5l
T3duUHJvcGVydHkoCiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCi0gICAg
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0RhdGFWaWV3KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3ICsxNjAsNyBA
QCBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpT
RGF0YVZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4MmE2N2U5N2Vm
YmI0ZjMyZjFiYzEyZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVlNmNjN2I5Zjcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC03Miw3
ICs3Miw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggY2Q2ZWMxNWVlMDlhOWYzNGNhZjJm
Mjk0MDBmYzk2ZDlhNTlkNGRiYy4uNDM0NmFhYWVlYjZhOGVmNWY1MzI4NWUxZDVhYjZmNzcyMTFh
OTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
QEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCmluZGV4IGFkZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZhY2QuLjE4YWI0
NzU0M2ZkNzgyOTc4YWZlYTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcm90ZWN0ZWQ6
CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZjA4
Zjg1MjQ2OWJlZmQ2YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2NWNlMWMzNTY1
NTBlY2Q1OGI3N2ZlZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUsNyArMzA1LDcg
QEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAwY2Fm
YmQyNzZjZjc0ZDBjODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi41OGZiYjU3NTYyYjcxMDA3OWU2
NTE0MGY3ZTA5ZTcwODA0OGZhMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
NDM4LDcgKzQzOCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRl
ZmluZU93blByb3BlcnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KQEAgLTQ4NCw3ICs0ODQsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwg
cHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJu
IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1NjZjNWQ0YTE4
YTkyODcxZjdlLi4wZjg5MDMwMGJlYjc4NGM3MTc5YTg3M2ZhY2ZjYjJhODRkMGM5ZTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0xMzE0LDcgKzEzMTQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgbWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApp
bmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45NzRiOTJiNTRl
MWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsMTMg
KzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0aGlzT2JqZWN0
LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
QmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggZDAx
M2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMyZGQ0OTNmZjdh
NGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJFX0lORk87
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAwYjcyOWY3Yzcz
ZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAK
QEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpTTW9kdWxlRW52
aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAo
cmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBl
OjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5kZXggZGFl
YWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2ZiOThiYjJhODJk
YWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJl
KiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggMmJkYjEz
MDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNhNjVhZDExOTAy
ZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5LDEyICsxOTks
MTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGlj
LW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAgIGlmIChwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJl
dHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9ydHMu
Y29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4IDhlZWY2
MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdhMTNlN2VmYmZj
ZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBw
dXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNmOWNiMDFlMmJm
MzIxYjA2ZWQ0MTk2YzkuLmVkYTJkNjIzNTA5OWVkMzAxYmIwYWUxMTQ1MTRmMzJlMTU0Y2I2MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC03
NTksOSArNzU5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVl
IHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0
KTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZlcihv
YmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFsdWUpOwogICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICAgICAg
aWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxPYmpl
Y3QsIHByb3ApOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoZmls
dGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgc2xvdCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXQob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgZmlsdGVyZWRW
YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGFjZDI5ZGVkODEzNTFmYjI4NGIy
MTU5YWQ0N2E2MzFjMzQ5NGYxZGYuLjM0NzMyZTFjMmJmMzZmZTVkNzk3N2MxYmRlMjVjZGFlZDYz
YWM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAKIC8vIEVDTUEg
OC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xOTk5LDggKzE5
OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJvcGVydHlJc1By
ZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAgICAgaWYgKGF0
dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9w
ZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
CisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
JiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdu
b3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJsZSgp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZpcmUo
dm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxp
ZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAg
ICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10gKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tl
ciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVkV2F0Y2hw
b2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5ICYmICFz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdI
ZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNldCk7Cisg
ICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhh
c0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRo
aXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5udWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLCBu
dWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRPZmZzZXQp
OwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgICAg
ICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5s
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTIwMzAsOCArMjAzNSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU09iamVjdCo+KGNlbGwpOwogICAgIAotICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKQot
ICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkpKTsKKyAg
ICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
KSwgc2xvdCk7CisgICAgfQogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdN
b2RlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAgLTM2MjUsNyAr
MzYzMiw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVyaWMgZGVzY3Jp
cHRvciBpcyBzaW1wbHkgY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJv
cGVydHkKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAg
ICAgaWYgKCFjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsK
LSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAg
cmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCksIGN1cnJlbnQpOwogICAgICAgICB9CkBAIC0zNjQxLDcgKzM2NDksOCBAQCBib29sIHZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNj
cmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRl
c2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsK
ICAgICB9CkBAIC0zNjY1LDcgKzM2NzQsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0
eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBw
dXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJy
ZW50KTsKICAgICB9CkBAIC0zNzE4LDcgKzM3MjgsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQ
cm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsKIAotICAgIG9iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIHVu
c2lnbmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3Vy
cmVudCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBlYzYzMDBl
YTliOTcyY2U5YmEwZmFkODE4MjU3YWZiMjBkODJhMmVkLi42OTNiZGJiOTk3ZDY0NDIwODA2NTFj
MjdlZGRlN2IwODhhMTQxNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRl
ICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXIuaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJIZWFwLmgi
CiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0Lmgi
CkBAIC02MjMsNyArNjI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzT3duUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRleCA5YzQ3
OTM0ZTRhM2Q5MTk5ZmE5ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEyZDIyMTkxMjdj
ZDk5YjMwMjA5MzA4ODcyMTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3h5LmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+
dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpT
UHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94eTo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0dXJu
IHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Byb3h5Ojppc0V4
dGVuc2libGUoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFlNjY4ZDI1OTBk
OWI5N2M4ZjRiYmEyYmZmYjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5NGMwYjI1ODk1
Nzk4ZmM1ZjllZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBA
IC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDYz
MGUxYjc4YmIyMDZlN2FmNjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMxNTBlOTZhZWNk
NTM3NDczMWZkYThkOWE3YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAg
dm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zeW1i
b2xUYWJsZSk7CiB9CiAKLWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N5bWJvbFRh
YmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjZWxs
KTsKICAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMocHJvcGVydHlO
YW1lLnVpZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNkZWQ5OGIzMzVk
ZjczNmIyMS4uYjU2OGU4ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAgCi0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNTeW1ib2xUYWJsZU9iamVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4MTU5OGZmZWYy
YTVlMTRhODBmZDRlNTRkYzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTllNWY5
MGM2NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
Y3BwCkBAIC02ODUsMTIgKzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHREZWxl
dGUgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzT2Jq
ZWN0LT50YXJnZXQoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUoZ2xvYmFs
T2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVj
dC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1EZWxldGUo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDE3Y2EyOWZi
MGEzZmRkYmE3MWViNjgyNDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgxOGE0Njc0YTUy
MmJmNjBhMmNhMDllYWMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
OworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNhMDljMDA0ODFh
NTE1MzgyNy4uMWNlMWI0YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmViYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03MSwx
MiArNzEsMTIgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQmFzZTo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRleCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBS
ZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2MzcxOTFhODlmMGI3
Yzk2YzVmYmI3MTQuLjg1N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNlMGIxODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90
V3JpdGFibGVGbGFnID0gKG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgfCBs
YXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAppbmRl
eCA1MTU3NTI3NjVlY2IwMmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRiYzY3YzU3Zjgx
NTYxZmE3OGQxOTRlZmFmMDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00MCw3ICs0MCw3
IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFjdGl2
YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2IxMDk2YjI2ZDE4
NzA3NGNiZjE3ZWI4M2MyOS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBmZGJiN2ExMDA3
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNj
b3BlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRl
eCA0NzdiOWNhZmIzZmEwMDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZkZDkyNzNiNzUw
NThhNDdmNzY5YTNmY2Y4Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFN0cmlu
Z09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0
cmluZ09iamVjdCo+KGNlbGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNh
bkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgU3RyaW5n
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2IzYTNlNGRhMzUy
ZjIyNzg2NTIzLi42OWYyNmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4ZDRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApp
bmRleCAxOTc3NTllYTc5Y2I4N2UyMTQwM2E4M2NmODM3MDVkZDJjZTE1NDc3Li44ZGQ3N2ZiOTk0
OTI1N2NlMTFjMTI4YzVlOTE4MDAzNjA3MDMyY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTU0NCw4ICs1NDQsNyBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAg
dm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAobmV3
U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01NTMsMTYgKzU1
MiwxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KikKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQog
ewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
aXNPYmplY3QoKSk7CiAKLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0cnVjdHVyZS0+
Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3RleHByIGJvb2wg
aXNBZGRpdGlvbiA9IGZhbHNlOworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgaWYg
KFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25U
YWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkgewog
ICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZz
ZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zm
c2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01NzIsMTEg
KzU2OCwyNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBudWxscHRyOwog
fQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXNDb21waWxh
dGlvblRocmVhZCgpKTsKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIHN0cnVjdHVyZS0+
Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcyk7CisgICAgcmV0
dXJuIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKK1N0cnVjdHVy
ZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgdW5zaWduZWQgYXR0cmlidXRl
czsKKyAgICBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5hbWUudWlkKCksIGF0
dHJpYnV0ZXMpOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xv
Y2spOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwor
fQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAg
QVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZSh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpKTsK
KyAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0
aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKIAogICAgIGlu
dCB0cmFuc2l0aW9uQ291bnQgPSAwOwogICAgIGZvciAoYXV0byogcyA9IHN0cnVjdHVyZTsgcyAm
JiB0cmFuc2l0aW9uQ291bnQgPD0gc19tYXhUcmFuc2l0aW9uTGVuZ3RoOyBzID0gcy0+cHJldmlv
dXNJRCgpKQpAQCAtMTIwNyw3ICsxMjE5LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1
cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9seVByb3QKIAog
dm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQu
cHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwg
eyIpOworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQb2ludGVyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkKCkpKSwgIiwgIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFt
ZSwgIiwgeyIpOwogICAgIAogICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggYjNkYjM4NTZlMzgxMWQwZWYx
YTE2NTNmZDdhYzFiOGFmZDIyMmJlZS4uNzQxMDBiMmMzMGMwMzZlYTA4YzFjZGJhNzJhZTk5ZDc1
NmVlNjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvbmN1
cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRl
ICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlND
YXN0LmgiCkBAIC0xOTEsNyArMTkyLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0
eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNp
dGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBz
dGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0
aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogcmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0
cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgSlNWYWx1
ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdl
VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwpAQCAtNDc3LDYgKzQ3OSw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBK
U0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0
Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCkBAIC03MTMsNiArNzE2LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsK
ICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0
aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0
dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYp
OwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFzIGEgdXNh
YmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFuZCB0aGUg
bGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRvIGl0LiBJ
ZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdmNzE0YzA1YjE1M2UwODEzOWU0OTFjZDhj
ZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUyMzIyYTQ2MDE3NWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yMjQs
MTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNv
bnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVk
QXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihjZWxs
KS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgU3RydWN0
dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3QKK3sK
KyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVz
KGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWlzVHlw
ZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJldHVybiB0cnVl
OworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJbmZv
KCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGljYWxH
bG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
aW5kZXggZGZmMWRmMTlhYzg0YTllZDM2NGI1OTdkNWRkOWQwNDFiZWM0NzhiMy4uZGFhYWNiMTRk
ZmMwYWM1YWY2NDEwODRhMTg5YjY2MmUzNTI0N2NkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9f
UkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTI4MjgsNiArMjgyOCwxNSBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldENvbmN1cnJlbnRseShKU0dsb2JhbE9i
amVjdCogZ2xvYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNPd25MZW5ndGhQcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU09iamVjdCogdGFy
Z2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGFyZ2V0
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdGlvbi0+YXJlTmFt
ZUFuZExlbmd0aE9yaWdpbmFsKHZtKSkpOworfQorCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpA
QCAtMjk1OSw2ICsyOTY4LDggQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCIsIEpT
RG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QsIDEpOwog
ICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0Q29uY3VycmVudGx5IiwgZnVuY3Rpb25HZXRDb25jdXJy
ZW50bHksIDIpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJoYXNPd25MZW5ndGhQcm9wZXJ0eSIs
IGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHksIDEpOworCiAgICAgbV9vYmplY3REb2luZ1Np
ZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaApp
bmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFj
N2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcwZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQy
LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5
cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
ICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBI
YXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXks
IGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBl
IGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAg
ICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBA
IC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1
cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVu
ZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5i
ZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAu
ZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMg
YSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBW
ZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlzdCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAg
ICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsg
KytpdGVyKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBp
dGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsg
fQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2sp
OworICAgICAgICBtX21hcC5jbGVhcigpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
ICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVt
b3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZh
bHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlB
bmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQog
ICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwg
Q291bnRlclR5cGU+IG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmOWUxMWJkNDc5YmExNTA0NzQ4ZjU4M2JhNmZhMzEy
NWUzNzg0NTMxLi5jYTdhNTE5Yjk0Y2FiNjhjYmUwN2UyM2IyOGE4ODBkZjlhMTEzZjMwIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ5IEBACisyMDIwLTAyLTEwICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFw
cGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNl
bGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5q
czogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAg
ICAgKGFzc2VydF9uZXEpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2Vy
dF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282
KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUu
YXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50
ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAg
ICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5s
aW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lu
bGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJ
ZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1h
a2VGb28zKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0
Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFi
bGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkTWlzcyk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1r
ZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzOgorICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJv
cGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAg
IChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5h
c3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUu
YXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURl
bGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9v
Myk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hl
YWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1w
dHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJ
ZE1pc3MudGVzdERlbGV0ZUluZGV4Lm1ha2VGb281KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RD
YWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6
CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisKIDIwMjAtMDIt
MTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFBsYWNhdGUgZXhj
ZXB0aW9uIGNoZWNrIHZhbGlkYXRvciBpbiBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoKS4K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9t
LXByb3RvdHlwZS1jaGFpbi5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9w
ZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwppbmRleCA0OWEzMWI3ZjI0N2MxYmQwYWNhODJj
YjIyZGYyMGU4ZjFiZjYxYmRkLi41NGJiYTgyZTY5OWM2MmNjY2E4OTQ1MTZlNjJiN2U2Y2ExZjUx
MjAyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
ZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVs
ZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9A
IHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJr
LWpzYy1zdHJlc3MtdGVzdC5weQorLy9AIHNraXAgaWYgJG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gv
CiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICghYikKICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yOwpAQCAtMjgsNyArMjgsNyBAQCBmdW5jdGlvbiBkb1Rlc3QoelZhbCkgewogfQogbm9Jbmxp
bmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDA7ICsraSkgewogICAgIGNvbnN0IFggPSB7IGkgfQogICAgIEMucHJvdG90
eXBlLnogPSBYCiAgICAgZG9UZXN0KFgpCkBAIC0zNiw3ICszNiw3IEBAIGZvciAobGV0IGk9MDsg
aTwxMDAwMDsgKytpKSB7CiAKIGRlbGV0ZSBDLnByb3RvdHlwZS56CiAKLWZvciAobGV0IGk9MDsg
aTwxMDAwMDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDAwMDsgKytpKSB7CiAg
ICAgZ2V0Wih7ejogaX0pCiAgICAgZG9UZXN0KHVuZGVmaW5lZCkKIH0KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1v
cnBoaWMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5l
LWNhY2hlLXBvbHltb3JwaGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiYWZmYWM5OGU1NjNkNWYzN2Y2ZWUy
MDkwODVkNjQ4M2M5NjgxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzCkBAIC0wLDAg
KzEsNTMgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlv
bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOwor
fQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0
X25lcSkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkgeworICAgIGZ1bmN0
aW9uIG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vWyJiYXoi
K2ldID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiK2ld
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzYpCisKKyAg
ICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAgfQorCisgICAgZm9yIChsZXQgaj0wOyBq
PDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAgICAgICBmb28uYmFn
ID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIral0g
PSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHltb3JwaGljRGVs
QnlWYWwpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMzAwMDA7ICsraSkgeworICAgIHRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsKGkpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTkxMmRhNGJi
YmFhZDA1MjFlNTUxMjVjOTA3ZTVmYjJjZGMxNGU0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpAQCAtMCww
ICsxLDE3NCBAQAorLy9AIHNraXAgaWYgJG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCisKK2Z1bmN0
aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9l
cShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNz
ZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2Vy
dF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
ImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorCitmdW5jdGlvbiBh
c3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHRocmV3ID0gdHJ1ZQorICAgIH0K
KyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRf
ZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9JbmxpbmUoYXNzZXJ0X3Rocm93cykKKworZnVu
Y3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbygp
IHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZv
by5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtl
Rm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAg
ICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisg
ICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0
KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2Vy
dChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzIoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFy
ID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4gZm9vCisgICAg
fQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisg
ICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VG
b28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAg
ICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisg
ICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0
KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2Vy
dChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
CisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlv
biB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28z
KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAg
Zm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAg
ICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5s
aW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28zKCkKKyAgICB9
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9v
ID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAw
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFy
IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9
PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFz
c2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZUVt
cHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkg
eworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRy
dWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAgIHZhbHVlOiA0
MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICBh
c3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZGVs
ZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIp
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzQpCisKKyAg
ICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQorICAgIH0KKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAg
ICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZv
bykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBm
b28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1
ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWRNaXNzKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDAwOyArK2kpIHsKKyAg
ICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFs
KCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlJZE1pc3MoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
ZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5q
cwppbmRleCA3Nzk1ZGM1ODE1NzhlNGMzOTgxYzIyYWM4NzZjNDU1NDEzZTY0ZDNjLi5hOTM5YWFl
M2FjOGFjY2MyMjE0ZGQ3ZTdkODAyNDQyMWE4MTY0NWQ5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5q
cworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2Fj
aGVhYmxlLXN0cnVjdHVyZS5qcwpAQCAtMjQsNSArMjQsNSBAQCBmdW5jdGlvbiBkb1Rlc3QoKSB7
CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDAwMDA7ICsraSkg
ZG9UZXN0KCkKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgKytpKSBkb1Rlc3QoKQogCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpz
IGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wZTBkYTAxMzE1OTExOWY2MDMwMGZkMTBlMjFjYzFhNDhjZTc2YmI5Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpA
QCAtMCwwICsxLDQyMSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlQmlnSW50PXRydWUiKQorCitm
dW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlvbiBhc3Nl
cnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
ImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitmdW5jdGlvbiBh
c3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICB0cnkg
eworICAgICAgICBmdW4oKQorICAgIH0gY2F0Y2ggeworICAgICAgICB0aHJldyA9IHRydWUKKyAg
ICB9CisgICAgYXNzZXJ0KHRocmV3KQorfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNz
ZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25vSW5saW5lKGFzc2VydF90aHJvd3MpCisK
K2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VG
b28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9v
CisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTAp
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0g
bWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAy
KQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKworZnVuY3Rp
b24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28yKCkg
eworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9v
LmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJuIGZvbwor
ICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkK
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBt
YWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAy
KQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCkKKworZnVu
Y3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkK
KyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBu
b0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMygpCisg
ICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0
IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEo
ImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5i
YWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29b
ImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAg
ICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFi
bGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlz
cygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9Cisg
ICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9l
cShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6
LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisKKyAgICAg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAgICB2YWx1
ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsKKyAgICAg
ICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2Vx
KGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvby5mb29iYXIs
IDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb280KQor
CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5
cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkTWlzcykKKworZnVuY3Rpb24gdGVzdERlbGV0ZUluZGV4KCkgeworICAg
IGZ1bmN0aW9uIG1ha2VGb281KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9v
LmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZm9vWzBdID0gMjMKKyAgICAg
ICAgZm9vWzFdID0gMjUKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVlKQor
ICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvb1sxXSwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZv
by5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNSkK
KworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNSgpCisgICAgfQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisg
ICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAg
ICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAg
Zm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQor
ICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBp
biBmb28pKQorICAgICAgICBhc3NlcnRfZXEoZm9vWzBdLCAyMykKKyAgICAgICAgYXNzZXJ0X2Vx
KGZvb1sxXSwgdW5kZWZpbmVkKQorICAgICAgICBmb29bMV0gPSAxCisgICAgICAgIGFzc2VydF9l
cShmb29bMV0sIDEpCisgICAgfQorfQorbm9JbmxpbmUodGVzdERlbGV0ZUluZGV4KQorCitmdW5j
dGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzYo
KSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0gPSAxCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAgICAgICAgcmV0
dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFyciA9IG5ldyBB
cnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBh
cnJbal0gPSBtYWtlRm9vNigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28u
YmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEp
CisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEK
KyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAz
CisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgi
YmF6IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxC
eVZhbCkKKworZnVuY3Rpb24gdGVzdEJpZ2ludERlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9u
IG1ha2VGb283KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vWzEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXSA9IDEKKyAgICAgICAgZm9vLmJhciA9
IDIKKyAgICAgICAgZGVsZXRlIGZvb1sxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwbl0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9v
NykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNygpCisgICAgfQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQor
CisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0
LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisg
ICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMwor
ICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RCaWdpbnREZWxldGVCeVZhbCkK
KworZnVuY3Rpb24gdGVzdFN5bWJvbERlbGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0IHN5bWJvbCA9
IFN5bWJvbCgnZm9vJyk7CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vOCgpIHsKKyAgICAgICAgbGV0
IGZvbyA9IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0gMQorICAgICAgICBhc3NlcnQoIShTeW1i
b2woJ2ZvbycpIGluIGZvbykpCisgICAgICAgIGFzc2VydChzeW1ib2wgaW4gZm9vKQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5bWJvbF0KKyAgICAgICAgcmV0dXJu
IGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOCkKKworICAgIGFyciA9IG5ldyBBcnJh
eSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vOCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAg
ICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAg
ICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U3ltYm9sRGVsZXRlQnlWYWwpCisK
K2Z1bmN0aW9uIHRlc3RPYmpEZWxldGVCeVZhbCgpIHsKKyAgICBjb25zdCBzeW1ib2wgPSB7IGk6
ICJmb28iIH07CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vOSgpIHsKKyAgICAgICAgbGV0IGZvbyA9
IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0gMQorICAgICAgICBhc3NlcnQoc3ltYm9sIGluIGZv
bykKKyAgICAgICAgYXNzZXJ0KCEoeyBpOiAiZm9vIiB9IGluIGZvbykpCisgICAgICAgIGZvby5i
YXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQorICAgICAgICByZXR1cm4gZm9vCisg
ICAgfQorICAgIG5vSW5saW5lKG1ha2VGb285KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQor
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1h
a2VGb285KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIp
CisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAg
YXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RPYmpEZWxldGVCeVZhbCkKKworZnVuY3Rpb24g
dGVzdFN0cmljdCgpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBtYWtlRm9v
MTAoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisg
ICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAg
ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRf
dGhyb3dzKCgpID0+IGRlbGV0ZSBmb28uZm9vYmFyKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZv
b2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZv
bzEwKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28xMCgpCisgICAgfQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltq
XQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2Jq
ZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0U3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0T3ZlcnJpZGUoKSB7CisgICAgYXJyID0gbmV3IEFy
cmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IGZ1bmN0aW9uKCkgeyB9CisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVuZ3Ro
UHJvcGVydHkoYXJyW2pdKSwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGFycltqXS5sZW5ndGgKKyAg
ICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNPd25MZW5ndGhQcm9wZXJ0eShhcnJbal0pLCBmYWxzZSkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVu
Z3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFn
ID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBq
XSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2Vy
dCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdE92ZXJyaWRlKQorCitm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIHRlc3RDYWNoZWFibGVEZWxldGVC
eUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQorICAgIHRlc3RDYWNoZWFibGVF
bXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpCisgICAg
dGVzdERlbGV0ZUluZGV4KCkKKyAgICB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKQorICAgIHRl
c3RCaWdpbnREZWxldGVCeVZhbCgpCisgICAgdGVzdFN5bWJvbERlbGV0ZUJ5VmFsKCkKKyAgICB0
ZXN0U3RyaWN0KCkKKyAgICB0ZXN0T3ZlcnJpZGUoKQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390670</attachid>
            <date>2020-02-13 10:56:28 -0800</date>
            <delta_ts>2020-02-13 14:51:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200213105628.patch</filename>
            <type>text/plain</type>
            <size>163458</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzI2YjJhZGYwNWQxYWY1ODlmMmExOGEwMmJmMjQ0ZGM0ZDE1MTM1Li42MTkzOGY3YzdhMmZjOWJj
MjY5N2JkMzU3ZWZhYWQzYjM2MTM1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9ubHku
IFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVzdGlu
Zy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBjb2Rl
IGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2FjaGVk
IGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3MgaXMg
YSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0gRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlzdHMs
IGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25kaXRp
b25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQgbXVz
dCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBUaGlz
IGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0cyB3aXRoIERGRyBkaXNh
YmxlZDoKKworICAgICAgICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZSAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAg
ICAgICAgZGVmaW5pdGVseSAxLjE2NTB4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLXBvbHltb3JwaGljICAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluICAgICAgKG5ldXRyYWwpCisKKyAgICAgICAgV2l0aCBE
RkcgZW5hYmxlZCwgZXZlcnl0aGluZyBpcyBuZXV0cmFsL3NsaWdodGx5IG5lZ2F0aXZlIGV4Y2Vw
dCBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLCB3aGljaCBpcyA2JSBzbG93ZXIuIFRoaXMg
cGF0Y2ggZG9lcyBub3QKKyAgICAgICAgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgREZHIGNvZGUsIGJ1
dCBsaWtlbHkgYWZmZWN0cyB0aGUgdGllciB1cCB0aW1pbmdzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpy
ZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChK
U0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklU
RGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxC
eSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlYWJs
ZUlkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNhY2hlYWJsZUlkZW50aWZpZXI6
OkNhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVO
ZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5kZXhpbmdI
ZWFkZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hl
YWRlciBjb25zdCk6CisKIDIwMjAtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFBsYWNhdGUgZXhjZXB0aW9uIGNoZWNrIHZhbGlkYXRvciBpbiBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTEwZjM3OGY2OTRkZGFjMmRhNjc0MzEyYzQw
ODg1MGI5OWMwZDRhMS4uMmQxOTY1NjIxOWVhOTMzMzA3M2E5MDhiYjUwOTAzYWFjYmZlMDhkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5f
bWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92
YWwgaW4gYmFzZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3Ry
dW06OmJ1aWxkTGlzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVt
OjpiZWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVk
LgorCiAyMDIwLTAyLTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IG9uIHdhdGNoT1Mgc2ltdWxh
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4
IDAzNGIzNTdjMDczOGUzNDkxMjU4ODU4ZDcwNjk4OWZlZmNiNDgzM2QuLjkyY2E5MjQ3Nzk2MmJj
MDRjN2E4ZWI4NmExZjQxNWQyYjE4N2YzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkKTsKIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNl
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggY2Q1
MTFiZmQyODRhMDEzMjUyYTY0MDVhNjcwN2FhZDEzN2ExYmNjYi4uNGJlYzMzYTcyZGMyODQ3N2E2
MTM1NmZkYjkyMGE0NzY4NjJlZDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTQxOCw3ICs0MTgsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KQEAgLTQyNiw3ICs0MjYsOCBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplYwogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7
Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5h
bWUpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAppbmRleCBmN2Y5ZGFiM2YyOGFkYzBlYWJiMmJkZThiMjUwNjc3MmFkMjVmZmNlLi45ZGY4
NzhlNTg4ZmEyYWVmMDYyMmFjNjk1ODc4MWFiZTY3YTM3ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNDc5LDcgKzQ3OSw4IEBAIGJvb2wgSlNPYmpl
Y3REZWxldGVQcm9wZXJ0eUZvcktleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmpl
Y3QsIEpTVmFsdWVSCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgs
IGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xv
dCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTM0LDcgKzUzNSw4IEBAIGJvb2wgSlNPYmplY3RE
ZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3Ry
aW5nUmVmIHByCiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAKLSAg
ICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsK
KyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pLCBzbG90KTsKICAgICBoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjYTBjODYwMmJlMTRjNWUzYjk5YjNl
MjExMmYyZDI4ZGRkOTFiYTguLjUwNjQ1M2ZiMjUzZjc0Mzk5NjllZmM5MGVlOWY2YmI3Y2I0MzZj
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDYgKzExNzgsNyBAQAog
CQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAx
MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFGREJF
QTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAv
KiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERl
bGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTczRTM3
OTk0MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMz
NTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1OTNDODk4QkU3MTRBNjRC
RTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0RCAvKiBXYXNtQ29u
dGV4dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAw
NTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzk3MSw2ICszOTcyLDcgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzM0QjY1NTQy
M0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3Ry
ZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VM
b29wU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNN
b2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVM
b2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODIsNiArNzA4NCw3IEBA
CiAJCQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAog
CQkJCUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJ
MTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICov
LAorCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAq
LywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAq
LywKIAkJCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggKi8s
CiAJCQkJMEZFMDUwMEQxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5j
cHAgKi8sCkBAIC05MjA3LDYgKzkyMTAsNyBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFC
NyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJv
cGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkg
LyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBCQkZE
MDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkw
MzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDY2MCw3ICsxMDY2NCw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAv
KiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1
dGVzID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJ
CQlEZWZhdWx0QnVpbGRTeXN0ZW1UeXBlRm9yV29ya3NwYWNlID0gT3JpZ2luYWw7CiAJCQkJTGFz
dFN3aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDJh
ZjQ4MGE5Y2U3ZDgwMjVjZTU4ODNkOGFkZjljOTg0MjY5YmE5NzUuLjk5NmZiYmZlZTk5NzEzMjNm
NTNmZjc3ZTY5ZDdiMzI2ZWE3MDZjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTczLDYgKzczLDggQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5N
aXNzOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlz
czoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmlu
Z0xlbmd0aDoKQEAgLTEwNiw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0x
MjMsNiArMTI1LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAK
K3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCisg
ICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBu
ZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Cisg
ICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ugc28gdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2RlIGJl
bG93LgorICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgbmV3U3RydWN0
dXJlLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKKworICAgICAg
ICBpZiAobWF5TmVlZFRvQ2hlY2tDZWxsKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7
IH0sIHsgfSkpOworfQorCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CkBAIC0yNjIs
NiArMjgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2go
KSBjb25zdAogICAgIGNhc2UgTG9hZDoKICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBh
IGJ5X3ZhbCBmb3IgdGhlc2UgcHV0cywgYnV0IHdlIGRvIGNhcmUgYWJvdXQgdGhlIGlkZW50aWZp
ZXIuCiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVs
ZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxh
Y2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTMwOSw2ICszMzAs
OSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0eUNoZWNrKCkgY29uc3QK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRp
b246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6Cisg
ICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzU2LDYgKzM4MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
TG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBE
ZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVw
bGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNDQ3LDYgKzQ3
NCw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwoVk0mIHZtLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6
CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToK
KyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAg
ICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAg
LTQ5Miw2ICs1MjIsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmRvZXNDYWxscyhWTSYgdm0sIFZlY3Rv
cjxKU0NlbGwqPiogY2VsbHNUb01hcmtJZkRvZXNDYWxscykgY29ucwogICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6CiAgICAgICAgIGRvZXNDYWxscyA9IHRydWU7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAg
IGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBSZXBsYWNlOgogICAg
IGNhc2UgTWlzczoKQEAgLTYxNCw2ICs2NDcsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxh
Y2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpIGNvbnN0CiAKICAgICBjYXNlIExvYWQ6CiAgICAg
Y2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNjYzLDcgKzY5OSw3IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJwcm90b3R5cGUgYWNjZXNzIGNoYWluID0gIik7CiAgICAgICAgIG1fcG9seVBy
b3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3RydWN0dXJlKCksIG91dCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRy
YW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSgpKSwgIiAtPiAiLCBwb2lu
dGVyRHVtcChuZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICBlbHNlIGlmIChtX3N0cnVjdHVyZSkK
ICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1w
KG1fc3RydWN0dXJlLmdldCgpKSk7CkBAIC03MDUsNiArNzQxLDcgQEAgYm9vbCBBY2Nlc3NDYXNl
Ojpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRvcikgY29uc3QKIAogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgogICAgICAgICBpZiAodmlzaXRvci52bSgpLmhlYXAuaXNNYXJrZWQobV9zdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fc3Ry
dWN0dXJlLmdldCgpKTsKICAgICAgICAgZWxzZQpAQCAtMTg1MSw3ICsxODg4LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwo
c3BpbGxTdGF0ZSwgcmVzdWx0UmVnaXN0ZXJUb0V4Y2x1ZGUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkp
IHsKICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAgICAgIHZhbHVlUmVn
cywKQEAgLTE4OTYsNiArMTkzMyw2NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c2xvd1BhdGguZW1wdHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYXNlIERl
bGV0ZTogeworICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgYWxs
b2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgIEFTU0VS
VChuZXdTdHJ1Y3R1cmUoKS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKworICAg
ICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0
YXRlID0KKyAgICAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVz
aGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4
dHJhU3BhY2UpOworCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBi
b29sIGhhc0luZGV4aW5nSGVhZGVyID0gbmV3U3RydWN0dXJlKCktPm1heUhhdmVJbmRleGluZ0hl
YWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhp
cyBjYXNlIHlldCBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisg
ICAgICAgIC8vIFNlZSBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGFuZCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkuCisgICAgICAgIEFTU0VSVCghbWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAg
ICAgICAgLy8gQ2xlYXIgdGhlIGJ1dHRlcmZseSBpZiB3ZSBoYXZlIG5vIHByb3BlcnRpZXMsIHNp
bmNlIG91ciBwdXQgY29kZSBleHBlY3RzIHRoaXMuCisgICAgICAgIGJvb2wgc2hvdWxkTnVrZVN0
cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5ID0gIW5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpICYmIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFoYXNJbmRleGlu
Z0hlYWRlcjsKKworICAgICAgICBqaXQubW92ZVZhbHVlKEpTVmFsdWUoKSwgdmFsdWVSZWdzKTsK
KworICAgICAgICBpZiAoc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5KSB7Cisg
ICAgICAgICAgICBqaXQubnVrZVN0cnVjdHVyZUFuZFN0b3JlQnV0dGVyZmx5KHZtLCB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpLCBiYXNlR1BSKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0lubGluZU9m
ZnNldChtX29mZnNldCkpIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAg
ICAgICAgIHZhbHVlUmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
CisgICAgICAgICAgICAgICAgICAgIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArCisgICAgICAgICAgICAgICAgICAgIG9mZnNl
dEluSW5saW5lU3RvcmFnZShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAg
ICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5CdXR0
ZXJmbHkobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAg
ICB1aW50MzJfdCBzdHJ1Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1
Y3R1cmUoKS0+aWQoKSk7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlQml0cyksCisgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisK
KyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4odHJ1ZSksIHZhbHVlUmVncyk7CisKKyAg
ICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBwcmVz
ZXJ2ZWRTdGF0ZSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CisgICAgICAgIGppdC5t
b3ZlVmFsdWUoanNCb29sZWFuKGZhbHNlKSwgdmFsdWVSZWdzKTsKKyAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVNaXNzOiB7
CisgICAgICAgIGppdC5tb3ZlVmFsdWUoanNCb29sZWFuKHRydWUpLCB2YWx1ZVJlZ3MpOworICAg
ICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlMZW5ndGg6IHsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2hH
UFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXgg
NzlkMzEwMTU1ZTkzYTU0NTNkMjg2MWM0MzIyN2JhM2JhYzE5ZjI3Ny4uYzZjODE4NDQ2MzQxZDBh
NDNjNjdhZWM5MzE4MzMzNzQ3ODdkMTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICBlbnVtIEFj
Y2Vzc1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgTG9hZCwKICAgICAgICAgVHJhbnNpdGlvbiwK
KyAgICAgICAgRGVsZXRlLAorICAgICAgICBEZWxldGVOb25Db25maWd1cmFibGUsCisgICAgICAg
IERlbGV0ZU1pc3MsCiAgICAgICAgIFJlcGxhY2UsCiAgICAgICAgIE1pc3MsCiAgICAgICAgIEdl
dEdldHRlciwKQEAgLTE0Niw4ICsxNDksMTEgQEAgcHVibGljOgogICAgICAgICBTdHJ1Y3R1cmUq
ID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiA9IG51bGxwdHIpOwogCiAgICAgLy8gVGhpcyBjcmVhdGUgbWV0aG9kIHNob3VsZCBiZSB1c2Vk
IGZvciB0cmFuc2l0aW9ucy4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
CiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworCisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKICAg
ICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVT
dHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVy
ZVN0dWJJbmZvJik7CiAKQEAgLTE1Nyw3ICsxNjMsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5z
aXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVs
ZXRlKQogICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CiAgICAg
ICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CkBAIC0xNjUsNyArMTcxLDcgQEAg
cHVibGljOgogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpOwogICAgICAgICByZXR1cm4gbV9z
dHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAxMzI0MDljMGE0NTEwYmRmYThl
Y2UzM2I3NDM0NzE2MDJkN2IwZTc5Li5iMTY2YzMwYzE4YTUyM2E3NjI1ZjM5YWY2Yjc4OTUwNjdh
YTVmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc5NSw2ICs3OTUsMTUgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZSkKICAgICBjYXNl
IEFjY2Vzc0Nhc2U6OlRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmludCgiVHJhbnNpdGlvbiIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6CisgICAgICAg
IG91dC5wcmludCgiRGVsZXRlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nh
c2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVOb25D
b25maWd1cmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVs
ZXRlTWlzczoKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVNaXNzIik7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlJlcGxhY2U6CiAgICAgICAgIG91dC5wcmludCgiUmVw
bGFjZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA2MTc4NzM3ZjlmOGE5Y2QwYjZk
ZGFkNTdmMWNmMTJlZmU0ZmNhNzA1Li45NmExYmFlY2JlNGNiYmI3NmRiZGVkYTgwNTY1YTJjNTk4
NjU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Niw2ICsyNzYsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJ
bnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CisgICAgICAgIHJlc2V0RGVsQnko
Y29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgorICAgICAgICByZXNldERlbEJ5KGNvZGVC
bG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZGRjZTg1ZWMwMjU1NTc2YzllMzQ1MWY2
NDczNmQxMmMzODk0MjgwMy4uYjU3NWJkZDIxNjE5YzJkZmU0ZjE4MmZhZWQ5MGYyNjhlOWUyNjE5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKQEAgLTU1LDcgKzU1LDkgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90
IHsKICAgICBHZXRCeVZhbCwKICAgICBQdXQsCiAgICAgSW4sCi0gICAgSW5zdGFuY2VPZgorICAg
IEluc3RhbmNlT2YsCisgICAgRGVsZXRlQnlJRCwKKyAgICBEZWxldGVCeVZhbAogfTsKIAogZW51
bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCmluZGV4IDI2ZTI4MjkzOWU5YWNhODg2NWMyMjE3
NzNjMmE0MWUwMjgwOTRkZGEuLjQ4YjViODZmYTRiOWU4NjVlYTQ4ZGM5OWE0OTNiZDk0OGQwNzRm
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29w
ZS5jcHAKQEAgLTEyOSwxNCArMTI5LDE0IEBAIGJvb2wgRGVidWdnZXJTY29wZTo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPnB1dCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
Ci1ib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wg
RGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdn
ZXJTY29wZSo+KGNlbGwpOwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAo
IXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0g
ICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiB2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmY0Y2UxYjFkYTRiNTc5MGRl
OGFkOTg4YTcxZjYwMmNkZjI2MTY3NC4uNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlhMWEyMTQ5Nzc1
ZWRkODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1YjRhZGU0NDRjNDNmNWFk
ZGYyMzE3ZjQyNjViNy4uOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2YzE0OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTcwLDcgKzcwLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQ
dXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAot
ICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkKKyAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpIFwK
KyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAorICAgIG1hY3JvKERlbEJ5UmVwbGFj
ZVdpdGhHZW5lcmljKQogCiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA2ODcxMWNlNWRkNzMwNWQ5NmMxZjAxNmZiMjI3YzZiYjVmYWEzOGRi
Li40ODNlOWM0MjE0NDU0NmVkYjRkODQxNzFiMTg3NWQxOThlMzYyYWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC01MDAsNiArNTAwLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID0gMDsKICAgICBtX3B1
dEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbkJ5SWRJbmRleCA9IDA7CisgICAgbV9kZWxCeVZhbElu
ZGV4ID0gMDsKKyAgICBtX2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXgg
PSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5m
b0luZGV4ID0gMDsKQEAgLTU4MCw2ICs1ODIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92
YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9o
YXNfaW5kZXhlZF9wcm9wZXJ0eSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9m
cm9tX3Njb3BlKQpAQCAtODc1LDYgKzg3OSw4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGlu
aygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeVZhbHMsIHBhdGNoQnVmZmVyKTsK
ICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMsIHBhdGNoQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBwYXRjaEJ1ZmZlcik7Cisg
ICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCA3YjQ0MDc0OTYzMzM2ZmNiODk0MWViZDA1YjU5NzMxMjlhOWU4NjU1Li42NzE2
NjYxZGY0ZmFjZWE1ZWZlZDVmNTEwODFmMDU5YjZkMjUzZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTUwMCw3ICs1MDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKGNv
bnN0IEluc3RydWN0aW9uKik7CkBAIC05MTMsNiArOTE1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRo
VGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CiAg
ICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlkczsKKyAgICAgICAgVmVj
dG9yPEpJVERlbEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVRE
ZWxCeVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOwogICAgICAgICBWZWN0b3I8QnlWYWxDb21waWxh
dGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZlY3RvcjxDYWxsQ29t
cGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CkBAIC05MzQsNiArOTM4LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5CeUlkSW5kZXggeyBVSU5UX01BWCB9OworICAgICAg
ICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25l
ZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5zdGFu
Y2VPZkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0
aW9uSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0lu
ZGV4IHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOTIwYjcyMDNlM2NmNGJmMDZlZWQ0NTcz
YTM5Y2I1NmJjY2E2NWQ1YS4uYjYyZmY3N2Y5OWExOTE0MTY2MDNiMGNmOWE4ZjQ5MWQ0MjdjZmU1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKQEAgLTE2Miw2ICsxNjIsNjYgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpK
SSBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCitKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sK
KyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKKyAgICBBU1NF
UlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CisgICAgbV9zdHVi
SW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3Mu
cHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFs
dWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
bV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+
dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0
eVRhZ0dQUiA9IHByb3BlcnR5LnRhZ0dQUigpOworI2VuZGlmCit9CisKK3ZvaWQgSklURGVsQnlW
YWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAg
ICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hh
YmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVERlbEJ5
VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1
ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7CisgICAgQmFz
ZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRp
b25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCitKSVREZWxCeUlkR2Vu
ZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3Vs
dCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhh
c0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CisgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigp
ICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNl
LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxp
ZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFz
ZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIo
KTsKKyAgICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyNl
bmRpZgorfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9z
bG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJl
bCgpOworfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9z
dGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNs
b3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0
KSk7Cit9CisKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCmluZGV4IGJmYjkwMjE2YjI5YzI3ZmZkMGVkOGQ3ZjBmNTg3ZTA4ZmU2ZTczMTYu
LjM1NTVmZWM1ZGQzYTIwNGEyYThhYzNmY2VjYzM2MjVmYjYyMjZhODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTE0
Miw2ICsxNDIsNTYgQEAgcHJpdmF0ZToKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKK2Ns
YXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6Cisg
ICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9y
KAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
c2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhK
dW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7
CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0
ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKK2NsYXNzIEpJVERlbEJ5SWRH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJh
c2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVREZWxCeUlkR2Vu
ZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KTsK
KworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICBy
ZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUo
CisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xv
d1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0Owor
ICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwog
Y2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVi
bGljOgogICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJh
ZDAwMmU0OGRjNjMzNC4uNGFlMmJhNmQ4OTAxMzZhOTEwYWEzYWVmYzc1ZjU0YjUyYWZmMjQ5NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTQy
LDcgKzIxNDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0
LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1MCwy
MCArMjE1MCw0OCBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHVpZCkpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgdWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwog
fQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KTsKIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNS
ZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVC
eUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFzZVZhbHVlLCB1aWQpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAg
aWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKCFw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8s
IERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSks
IHVpZCkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2
bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKSkpOwogfQogCiBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQpAQCAtMjE3MSwxMCArMjE5OSwxMSBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKUwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBkZWxldGVCeUlkKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwg
dWlkKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gZGVsZXRlQnlJ
ZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSksIHVpZCk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBrZXkpCitzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMTkwLDcgKzIyMTksNyBAQCBz
dGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJv
cGVydHkgPSBrZXkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
ai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5KTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3Qp
OwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkK
QEAgLTIxOTgsMTIgKzIyMjcsNDIgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgIHJldHVy
biBjb3VsZERlbGV0ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCAgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtleSkKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51
bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2Vs
bChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKHN1YnNj
cmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERlbEJ5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3Jp
cHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEtleSkpKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFN1YnNjcmlwdCkpKSk7CiB9CiAKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQpAQCAtMjIxMSw3ICsy
MjcwLDggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEoKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxl
dGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSk7CiB9CiAKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2Jq
ZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4
IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVmZjgyYTMwMGMuLmI0YTcxYWRiY2QxOTBl
ZDUzNTMyNGZkNDQyOWZmOWFjNjQyMTQ5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsOSArMjUxLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBC
eVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJn
ZXQpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
IGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCkgV1RGX0lOVEVSTkFMOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVj
dCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUyZjcxM2U4YWEwYWZiNWU4MDVjN2NmM2Yx
ZDM4ODM3MWMyZjYuLjgwNTcwNmU0ODIyYTkyOWEwM2ZiYjVhNWE0NzdmMDcyMGUxY2I0YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC0zODcsOSArMzg3LDM1IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0g
Ynl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCisgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cisg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisK
KyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCk7
CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZElu
ZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSku
aW1wbCgpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zOTgsOSArNDI0
LDM5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9k
c3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0
eSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVy
dHkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90U3RyaW5nKHJlZ1QwKSk7CisgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxKTsKKyAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIGRzdCwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA1Y2M3ZGY5YzU0MTg5Yzdj
YjNkNDA5MWI1YzRmNGM4YmRhZWVmMTRjLi40ZmNiZGE1M2U5NjUyYjZkMjBhNDg4MTZkN2NiZDY0
OGQwYjNhYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBpbnQgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQsIGRzdCwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBtX2Nv
ZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlk
ZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEzMyw5ICsx
MzMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVy
dHk7CiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCBy
ZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBk
c3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeVZhbEdlbmVyaWMsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBu
dWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDIpKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9Cit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpIHsgfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkxODIwNDE1NTRiZGM3NmMxOTFjYjEzODVkMTNhOWM4
MWZmZDQ1ZWIuLmJlNzUwMWVmMjJjMTgzM2U0ZmI3ZjA2YTlhYmUzYWFiMDc2ZWRjNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBj
b2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAgICAgICAgICAg
ICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBp
ZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0
ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewpAQCAt
NzM0LDYgKzczNCw3MiBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQog
CitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxC
eUtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgcmVzdWx0OworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCk7CisKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0Nl
bGwoKSB8fCAhb2xkU3RydWN0dXJlIHx8ICFvbGRTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkgfHwgIW9s
ZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlRGVs
ZXRlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKworICAgICAgICBpZiAoc2xvdC5pc0Rl
bGV0ZUhpdCgpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQ7CisgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KG9sZFN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQpOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1
cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKyAgICAgICAgICAg
IGlmICghbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgfHwgbmV3
U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdPZmZzZXQgPT0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkgPT0g
b2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzUHJvcGVy
dHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJl
LT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG5ld09mZnNl
dCkpOworICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSh2bSwg
Y29kZUJsb2NrLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIG5ld09mZnNldCwg
b2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICB9IGVsc2UgaWYgKCFjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xvdC5pc05vbmNvbmZpZ3Vy
YWJsZSgpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0s
IGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9
LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0g
QWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3Ms
IENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNldCwgb2xkU3Ry
dWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gc3R1
YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBXVEZN
b3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAgICAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5j
bGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaXJlV2F0
Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywgcmVz
dWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNh
Y2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1Yklu
Zm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpE
ZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxP
YmplY3QtPnZtKCkpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlL
aW5kOjpOb3JtYWwpCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVs
ZXRlQnlWYWxHZW5lcmljKTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluQnlJRCgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LAog
ICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5MSw2ICsxNDU3LDE1IEBAIHZvaWQgcmVzZXRQdXRCeUlE
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7CisgICAg
aWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIGVsc2UKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwogc3Rh
dGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
IHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVt
cCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guaAppbmRleCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBlOGE5OTQ0YmI0ZjlmZTM5
Li5jMWQ5OTU5YWRhZmQzNjU3NjJlODkxNzlhYjNjMGVlZDY2ZTU4N2QwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51bSBjbGFzcyBHZXRCeUtp
bmQgewogICAgIERpcmVjdAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtpbmQgeworICAgIE5vcm1h
bCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlTbG90
JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJRChK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1
dEtpbmQpOwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
JiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXBhdGNoSW5CeUlEKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwg
Ym9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
IHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1Zh
bHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdh
c0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENv
ZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5
UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5saW5rRm9yKFZNJiwgQ2FsbExpbmtJ
bmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5SUQo
Q29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXREZWxCeShDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeUlEKENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1
Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2Nr
KiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyMjU0ZmNjNDI5NjE3Y2U4Mzk3ZDI0ZTU1
MGUxYWNlYzY3YjYxNDQzLi5mYWNhN2JmNGUxNzhkNDI1ZmZiZWZmZTk1NGU4ZjMxZWIwMDIwNmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
QEAgLTkyNSw3ICs5MjUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5
X2lkKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWxCeUlkPigpOwogICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAg
ICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
Ym9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSksIHNsb3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
ICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKICAgICAg
ICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxl
dGVQcm9wZXJ0eUVycm9yKSk7CkBAIC0xMTA4LDcgKzExMDksOCBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOwogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgY291
bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHNsb3QpOwogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVjZjZmZDA4ZmZkMmJiODhiOWQ1ODdiYWVkMGZmNi4u
MTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2IwYzE1ZjI2NTg5NzkzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5s
aW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNo
ZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGluZSBD
YWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKEpTQ2VsbCogaWRlbnRpZmll
cikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChpZGVudGlmaWVyKSk7
CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggZmU2YzZiN2Q4NGM0N2VkZWUxMWFhYzExZjY0ODRh
NzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNjYmJkMjhkODAzMWRhOGExN2VlMDUzNzIxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTU5LDcgKzU5LDcg
QEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBQdXRCeUluZGV4RnVuY3Rpb25QdHIg
PSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9uUHRy
IE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUluZGV4KTsKIAotICAgIHVzaW5nIERlbGV0ZVByb3Bl
cnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCop
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShk
ZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlv
blB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5k
ZXggOTZhMzYzNWU2ODI3MzkzZWU4MzZkODA0Nzc3MjRhMjVkNTQ2YzI2MS4uZjY5OTllNzM0ODRl
MmFiZDg4MTQ1NGYxMTQ4MzEwYzAyZDRmMmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9v
bCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmEKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBDbG9uZWRBcmd1bWVu
dHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQ2xvbmVkQXJn
dW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50cyo+KGNlbGwpOwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBib29sIENs
b25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lm
TmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsK
IH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAppbmRl
eCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQwYmEwY2FkMTU3NjA1ZmY1Li4wMGM1MzQ3NTYwNWE3
M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSBjb25zdCB7IHJldHVy
biAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJhOTM1M2U3ZDc1MjFhODc5YmQxMmQ3
NDAwNjkuLjFkZTgyMzk1MDllMGM4ZDdhNTZhMzI0MTRmZmU4YTc0YTliNzhkZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
OTg1LDcgKzk4NSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAg
ICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlw
dC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigp
OwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJvcGVy
dHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNs
b3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYWQ2ZjZiNDgwMGVmNTc4NTYxY2FlZGM5ZGRiYmM4MmYyNTMyZTYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRl
UHJvcGVydHlTbG90LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb3BlcnR5
T2Zmc2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
ICAgIAorY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUg
OiB1aW50OF90IHsgVW5jYWNoZWFibGUsIERlbGV0ZUhpdCwgQ29uZmlndXJhYmxlRGVsZXRlTWlz
cywgTm9uY29uZmlndXJhYmxlIH07CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3QoKQorICAgICAg
ICA6IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCisgICAgICAgICwgbV9jYWNoZWFiaWxpdHkoQ2Fj
aGluZ0FsbG93ZWQpCisgICAgICAgICwgbV90eXBlKFVuY2FjaGVhYmxlKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZU1pc3MoKQorICAgIHsKKyAgICAgICAgbV90eXBl
ID0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsKKyAgICB9CisKKyAgICB2b2lkIHNldE5vbmNvbmZp
Z3VyYWJsZSgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBOb25jb25maWd1cmFibGU7CisgICAg
fQorCisgICAgdm9pZCBzZXRIaXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgbV90eXBlID0gRGVsZXRlSGl0OworICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKKyAgICB9
CisKKyAgICBib29sIGlzQ2FjaGVhYmxlRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFi
bGUoKSAmJiBtX3R5cGUgIT0gVW5jYWNoZWFibGU7IH0KKyAgICBib29sIGlzRGVsZXRlSGl0KCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IERlbGV0ZUhpdDsgfQorICAgIGJvb2wgaXNDb25maWd1
cmFibGVEZWxldGVNaXNzKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENvbmZpZ3VyYWJsZURl
bGV0ZU1pc3M7IH0KKyAgICBib29sIGlzTm9uY29uZmlndXJhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IE5vbmNvbmZpZ3VyYWJsZTsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVk
T2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICB9CisK
KyAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkKKyAgICB7CisgICAgICAgIG1fY2FjaGVhYmlsaXR5
ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgaXNDYWNo
ZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nQWxsb3dlZDsg
fQorCisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmlsaXR5VHlwZSBt
X2NhY2hlYWJpbGl0eTsKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9y
LmNwcAppbmRleCBmMTgyMWQ1NTZhM2Q0MDQ0OTM2NzVlYWUyNWZhMmU0NjY3M2VjNDNhLi42ODVj
N2FjYmMxMWM2MmQyMzM3N2QzMmM0ZGU5YTIwYjY1ODc4YThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtODcsNyArODcs
NyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9v
bCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVy
cm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBF
cnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9yQ29uc3RydWN0b3IqPihj
ZWxsKTsKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCkKICAgICAg
ICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51
bGxvcHQpOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yQ29uc3RydWN0b3IuaAppbmRleCA5M2Q1MjcxNDg2ZjY2ZmRlNzUzZTQ5YTQwMTZmMTY4Mzhl
OTc1NzIxLi45YTVhNDYzMjFiM2RiYjc2NGMyYTFiNTIxZDkyNjhmOGQxNDM1MzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC00
OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgRXJy
b3JQcm90b3R5cGUqKTsKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0ZToK
ICAgICBFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGZkNDhiYmYzNGMzMDQz
MGQyZTcwZGU1NzQ5OGU5YjUxZTZhYzI0NGQuLjFkNTBjZDE3NGZjNDdkOTIyMTcxODhlMzI1ZmY1
N2FlOGQxNWI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBib29sIEVycm9ySW5zdGFuY2U6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZQogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBFcnJvckluc3RhbmNlKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEVycm9ySW5zdGFuY2UqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6ZUVycm9y
SW5mb0lmTmVlZGVkKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggZjFmYWM1OTY4MmQ5ZTAyNjUw
OGNiNGZmOGM5YjI2N2I0ZWU3NmU4Ny4uNDAwNjA4ZDA4YTgzNGNkMzFlNjEyZTczYWI1MzFjYjBh
M2NhMTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuaApAQCAtOTksNyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0U3Ry
dWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKIAogICAgIHZvaWQgY29tcHV0ZUVycm9ySW5mbyhWTSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5kZXggY2UxMGY3
ZmU0ODczZTRhNDdiZTE0MWUyNTU2OWFkNjQ4YWZmOWQyOC4uNDcxMjE2NzMwMzY0ODI4ZmUyNzcw
ZTIzNDg2OWFjZTcwOTA4ZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmgKaW5kZXggYjgzN2VjMWJiNDMwZjZkNThiMWQ1YjExNWRhNTEzYzViY2MwYmY1My4uYTVh
OWVjYjMyMmEyMGRhOGZlMjQzM2ZmZDU0N2E3OGFmYzYwMmNmNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBA
IC0xMzksOCArMTM5LDEwIEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvCiAgICAgICAgIHRoaXNP
YmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3Qp
KTsKKworICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMTU4LDcgKzE2MCw3IEBAIGJvb2wgR2VuZXJpY0FyZ3Vt
ZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1ib29sIEdlbmVyaWNBcmd1bWVu
dHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5
cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSw3ICsxNzcsNyBAQCBib29sIEdlbmVyaWNBcmd1
bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbAogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlk
ZW50KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBHZW5lcmljQXJndW1lbnRz
PFR5cGU+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCAq
aW5kZXgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgc2xvdCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAwMzQ4N2Y2MWUw
ZjJmYzc1MWJhNzAzYjcwY2EzNmQwMjIyMTYzNGRlLi42MDFmMWU0OWYxNWNkNTAxYTBlMGE3NWVl
Mjg1MDZmMzJiMGRiM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJv
b2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
c3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsg
fQogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2Jq
ZWN0PiBtX2dldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
aW5kZXggNmQwNzU5MTcxMWVlZGJjMjhlMGU0ZGE3ODQ5ODIyYWI4ZDY2ZjVkMS4uYmNlMzY1NWEz
MTkyZWEyOTBmZTdmMDQwODI0YTM4ODZmNmIwNDgzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBib29sIEpTQXJyYXk6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dCh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KIAot
Ym9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0FycmF5KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEpT
QXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogc3RhdGljIGludCBjb21wYXJlS2V5c0Zv
clFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKaW5kZXggMzExNjViNWZmNDkyNTRjYzFhNmM0NzkwMmI3OTEwYWM0
YTdkOWJmZi4uY2RjMzliNTEyZDdlZTNhMTVjZjFhZWMyZTBhMmQ5M2Q5YWFhZDBmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmlu
ZGV4IGZlMDE4MGRkNjBjM2QxYmI2MGY4YjUzM2IxODYwNThlZWFkODFiNzUuLjU4NmFmM2ZhYjM3
OTUyZTNmZGUxY2U0NzBjOTlhYjFlZGM0YTc0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Q7CiBjbGFz
cyBKU0JpZ0ludDsKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2VsbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI3MTM1MmIyMTc0NzAzNTZkZjQwM2Zk
ZDljZGU2MGRlZjg4ODE2MDcuLjBlNjdmODY2NzZkNTg2NWFhODhmMDRmMzVhZGE3NDMyMWUwMmNm
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTI2LDEw
ICsxMjYsMTAgQEAgYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGUKICAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
aWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0NlbGw6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRp
ZmllciwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKIH0KIAogYm9vbCBKU0NlbGw6OmRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCmluZGV4IDY2NWQwODg5Y2Y0NDYxYzNhYjBhMmFmNGIwN2M2YTU4YzkwNDIxYzQuLjA2
MmU4M2RiMzlhYjM0YTZlZjRmZGEzNmZmYTUwZTRjMTExZDk3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0SW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RhdGlj
IEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCAxNDZhOTEz
MmQ0NzM1MjQyYzEwNmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJiMDllMzdmOGE0
NzQzMTliZjc2YzMyZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5l
T3duUHJvcGVydHkoCiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCi0gICAg
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0RhdGFWaWV3KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3ICsxNjAsNyBA
QCBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpT
RGF0YVZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4MmE2N2U5N2Vm
YmI0ZjMyZjFiYzEyZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVlNmNjN2I5Zjcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC03Miw3
ICs3Miw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggY2Q2ZWMxNWVlMDlhOWYzNGNhZjJm
Mjk0MDBmYzk2ZDlhNTlkNGRiYy4uNDM0NmFhYWVlYjZhOGVmNWY1MzI4NWUxZDVhYjZmNzcyMTFh
OTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
QEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCmluZGV4IGFkZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZhY2QuLjE4YWI0
NzU0M2ZkNzgyOTc4YWZlYTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcm90ZWN0ZWQ6
CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZjA4
Zjg1MjQ2OWJlZmQ2YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2NWNlMWMzNTY1
NTBlY2Q1OGI3N2ZlZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUsNyArMzA1LDcg
QEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAwY2Fm
YmQyNzZjZjc0ZDBjODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi41OGZiYjU3NTYyYjcxMDA3OWU2
NTE0MGY3ZTA5ZTcwODA0OGZhMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
NDM4LDcgKzQzOCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRl
ZmluZU93blByb3BlcnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KQEAgLTQ4NCw3ICs0ODQsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwg
cHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJu
IGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1NjZjNWQ0YTE4
YTkyODcxZjdlLi4wZjg5MDMwMGJlYjc4NGM3MTc5YTg3M2ZhY2ZjYjJhODRkMGM5ZTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0xMzE0LDcgKzEzMTQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgbWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApp
bmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45NzRiOTJiNTRl
MWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsMTMg
KzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0aGlzT2JqZWN0
LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
QmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggZDAx
M2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMyZGQ0OTNmZjdh
NGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJFX0lORk87
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAwYjcyOWY3Yzcz
ZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAK
QEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpTTW9kdWxlRW52
aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAo
cmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBl
OjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5kZXggZGFl
YWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2ZiOThiYjJhODJk
YWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJl
KiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggMmJkYjEz
MDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNhNjVhZDExOTAy
ZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5LDEyICsxOTks
MTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGlj
LW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAgIGlmIChwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJl
dHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9ydHMu
Y29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4IDhlZWY2
MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdhMTNlN2VmYmZj
ZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBw
dXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNmOWNiMDFlMmJm
MzIxYjA2ZWQ0MTk2YzkuLmVkYTJkNjIzNTA5OWVkMzAxYmIwYWUxMTQ1MTRmMzJlMTU0Y2I2MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC03
NTksOSArNzU5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVl
IHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0
KTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZlcihv
YmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFsdWUpOwogICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICAgICAg
aWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxPYmpl
Y3QsIHByb3ApOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoZmls
dGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgc2xvdCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXQob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgZmlsdGVyZWRW
YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGFjZDI5ZGVkODEzNTFmYjI4NGIy
MTU5YWQ0N2E2MzFjMzQ5NGYxZGYuLjM0NzMyZTFjMmJmMzZmZTVkNzk3N2MxYmRlMjVjZGFlZDYz
YWM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAKIC8vIEVDTUEg
OC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xOTk5LDggKzE5
OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJvcGVydHlJc1By
ZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAgICAgaWYgKGF0
dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9w
ZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
CisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
JiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdu
b3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJsZSgp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZpcmUo
dm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxp
ZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAg
ICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10gKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tl
ciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVkV2F0Y2hw
b2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5ICYmICFz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdI
ZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNldCk7Cisg
ICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhh
c0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRo
aXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5udWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLCBu
dWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRPZmZzZXQp
OwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgICAg
ICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5s
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTIwMzAsOCArMjAzNSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU09iamVjdCo+KGNlbGwpOwogICAgIAotICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKQot
ICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkpKTsKKyAg
ICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
KSwgc2xvdCk7CisgICAgfQogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdN
b2RlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAgLTM2MjUsNyAr
MzYzMiw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVyaWMgZGVzY3Jp
cHRvciBpcyBzaW1wbHkgY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJv
cGVydHkKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAg
ICAgaWYgKCFjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsK
LSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAg
cmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCksIGN1cnJlbnQpOwogICAgICAgICB9CkBAIC0zNjQxLDcgKzM2NDksOCBAQCBib29sIHZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNj
cmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRl
c2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsK
ICAgICB9CkBAIC0zNjY1LDcgKzM2NzQsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0
eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBw
dXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJy
ZW50KTsKICAgICB9CkBAIC0zNzE4LDcgKzM3MjgsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQ
cm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsKIAotICAgIG9iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIHVu
c2lnbmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3Vy
cmVudCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBlYzYzMDBl
YTliOTcyY2U5YmEwZmFkODE4MjU3YWZiMjBkODJhMmVkLi42OTNiZGJiOTk3ZDY0NDIwODA2NTFj
MjdlZGRlN2IwODhhMTQxNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRl
ICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXIuaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJIZWFwLmgi
CiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0Lmgi
CkBAIC02MjMsNyArNjI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzT3duUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRleCA5YzQ3
OTM0ZTRhM2Q5MTk5ZmE5ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEyZDIyMTkxMjdj
ZDk5YjMwMjA5MzA4ODcyMTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3h5LmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+
dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpT
UHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94eTo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0dXJu
IHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Byb3h5Ojppc0V4
dGVuc2libGUoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFlNjY4ZDI1OTBk
OWI5N2M4ZjRiYmEyYmZmYjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5NGMwYjI1ODk1
Nzk4ZmM1ZjllZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBA
IC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDYz
MGUxYjc4YmIyMDZlN2FmNjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMxNTBlOTZhZWNk
NTM3NDczMWZkYThkOWE3YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAg
dm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zeW1i
b2xUYWJsZSk7CiB9CiAKLWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N5bWJvbFRh
YmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjZWxs
KTsKICAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMocHJvcGVydHlO
YW1lLnVpZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNkZWQ5OGIzMzVk
ZjczNmIyMS4uYjU2OGU4ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAgCi0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNTeW1ib2xUYWJsZU9iamVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4MTU5OGZmZWYy
YTVlMTRhODBmZDRlNTRkYzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTllNWY5
MGM2NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
Y3BwCkBAIC02ODUsMTIgKzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHREZWxl
dGUgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzT2Jq
ZWN0LT50YXJnZXQoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUoZ2xvYmFs
T2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVj
dC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1EZWxldGUo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDE3Y2EyOWZi
MGEzZmRkYmE3MWViNjgyNDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgxOGE0Njc0YTUy
MmJmNjBhMmNhMDllYWMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUg
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
OworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNhMDljMDA0ODFh
NTE1MzgyNy4uMWNlMWI0YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmViYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03MSwx
MiArNzEsMTIgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQmFzZTo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRleCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBS
ZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVy
dHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2MzcxOTFhODlmMGI3
Yzk2YzVmYmI3MTQuLjg1N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNlMGIxODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90
V3JpdGFibGVGbGFnID0gKG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgfCBs
YXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAppbmRl
eCA1MTU3NTI3NjVlY2IwMmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRiYzY3YzU3Zjgx
NTYxZmE3OGQxOTRlZmFmMDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00MCw3ICs0MCw3
IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFjdGl2
YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2IxMDk2YjI2ZDE4
NzA3NGNiZjE3ZWI4M2MyOS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBmZGJiN2ExMDA3
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNj
b3BlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRl
eCA0NzdiOWNhZmIzZmEwMDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZkZDkyNzNiNzUw
NThhNDdmNzY5YTNmY2Y4Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFN0cmlu
Z09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0
cmluZ09iamVjdCo+KGNlbGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNh
bkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgU3RyaW5n
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2IzYTNlNGRhMzUy
ZjIyNzg2NTIzLi42OWYyNmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4ZDRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApp
bmRleCAxOTc3NTllYTc5Y2I4N2UyMTQwM2E4M2NmODM3MDVkZDJjZTE1NDc3Li44ZGQ3N2ZiOTk0
OTI1N2NlMTFjMTI4YzVlOTE4MDAzNjA3MDMyY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTU0NCw4ICs1NDQsNyBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAg
dm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAobmV3
U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01NTMsMTYgKzU1
MiwxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KikKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQog
ewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
aXNPYmplY3QoKSk7CiAKLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0cnVjdHVyZS0+
Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3RleHByIGJvb2wg
aXNBZGRpdGlvbiA9IGZhbHNlOworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgaWYg
KFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25U
YWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkgewog
ICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZz
ZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zm
c2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01NzIsMTEg
KzU2OCwyNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBudWxscHRyOwog
fQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXNDb21waWxh
dGlvblRocmVhZCgpKTsKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIHN0cnVjdHVyZS0+
Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcyk7CisgICAgcmV0
dXJuIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKK1N0cnVjdHVy
ZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgdW5zaWduZWQgYXR0cmlidXRl
czsKKyAgICBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5hbWUudWlkKCksIGF0
dHJpYnV0ZXMpOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xv
Y2spOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwor
fQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAg
QVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZSh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpKTsK
KyAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0
aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKIAogICAgIGlu
dCB0cmFuc2l0aW9uQ291bnQgPSAwOwogICAgIGZvciAoYXV0byogcyA9IHN0cnVjdHVyZTsgcyAm
JiB0cmFuc2l0aW9uQ291bnQgPD0gc19tYXhUcmFuc2l0aW9uTGVuZ3RoOyBzID0gcy0+cHJldmlv
dXNJRCgpKQpAQCAtMTIwNyw3ICsxMjE5LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1
cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9seVByb3QKIAog
dm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQu
cHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwg
eyIpOworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQb2ludGVyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkKCkpKSwgIiwgIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFt
ZSwgIiwgeyIpOwogICAgIAogICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggYjNkYjM4NTZlMzgxMWQwZWYx
YTE2NTNmZDdhYzFiOGFmZDIyMmJlZS4uNzQxMDBiMmMzMGMwMzZlYTA4YzFjZGJhNzJhZTk5ZDc1
NmVlNjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvbmN1
cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRl
ICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlND
YXN0LmgiCkBAIC0xOTEsNyArMTkyLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0
eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNp
dGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBz
dGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0
aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogcmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0
cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgSlNWYWx1
ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdl
VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwpAQCAtNDc3LDYgKzQ3OSw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBK
U0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0
Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCkBAIC03MTMsNiArNzE2LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsK
ICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0
aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0
dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYp
OwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFzIGEgdXNh
YmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFuZCB0aGUg
bGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRvIGl0LiBJ
ZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdmNzE0YzA1YjE1M2UwODEzOWU0OTFjZDhj
ZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUyMzIyYTQ2MDE3NWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yMjQs
MTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNv
bnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVk
QXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihjZWxs
KS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgU3RydWN0
dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3QKK3sK
KyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVz
KGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWlzVHlw
ZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJldHVybiB0cnVl
OworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJbmZv
KCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGljYWxH
bG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
aW5kZXggZGZmMWRmMTlhYzg0YTllZDM2NGI1OTdkNWRkOWQwNDFiZWM0NzhiMy4uZGFhYWNiMTRk
ZmMwYWM1YWY2NDEwODRhMTg5YjY2MmUzNTI0N2NkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9f
UkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTI4MjgsNiArMjgyOCwxNSBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldENvbmN1cnJlbnRseShKU0dsb2JhbE9i
amVjdCogZ2xvYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNPd25MZW5ndGhQcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU09iamVjdCogdGFy
Z2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGFyZ2V0
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdGlvbi0+YXJlTmFt
ZUFuZExlbmd0aE9yaWdpbmFsKHZtKSkpOworfQorCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpA
QCAtMjk1OSw2ICsyOTY4LDggQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCIsIEpT
RG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QsIDEpOwog
ICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0Q29uY3VycmVudGx5IiwgZnVuY3Rpb25HZXRDb25jdXJy
ZW50bHksIDIpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJoYXNPd25MZW5ndGhQcm9wZXJ0eSIs
IGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHksIDEpOworCiAgICAgbV9vYmplY3REb2luZ1Np
ZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaApp
bmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFj
N2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcwZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQy
LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5
cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
ICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBI
YXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXks
IGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBl
IGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAg
ICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBA
IC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1
cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVu
ZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5i
ZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAu
ZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMg
YSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBW
ZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlzdCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAg
ICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsg
KytpdGVyKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBp
dGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsg
fQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2sp
OworICAgICAgICBtX21hcC5jbGVhcigpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
ICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVt
b3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZh
bHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlB
bmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQog
ICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwg
Q291bnRlclR5cGU+IG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIwNTA2ZjhlY2ZhYzY1M2U1NWFkMDQ4MWRk
YTU2MGY1ZmQ3MmE1NGQuLmY3YTg5NTU3ZWQ1NmFjZWY5MTNhNGExZjZkNzI0Njc1MmUxNGNkNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKQEAgLTMxNCwxMyArMzE0LDEzIEBAIGJvb2wgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1
cm4gQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRl
eCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwog
ICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNh
bWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1Rv
RE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgVGhy
b3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTRE9NV2lu
ZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxZWYwNmMyNmVl
MjUyZGU2NjhjMWRlZGU5MWM1ZGRmNmEwZGRmZGU1Li44NGI5YTEzZTE5ZWExODlkZjMwNzQ3NjA2
NWRkMzczZTUxZTRmNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcApAQCAtMTYzLDEzICsxNjMsMTMgQEAgYm9vbCBKU0xvY2F0aW9uOjpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHUKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNMb2NhdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNMb2NhdGlvbjo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+
KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1l
IG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2luZG93
KCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBK
U0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IGUyZWVkZmQ1YjBjNWFhNzE4NzBkYTc2NTQzOTdlMzViOTlhODJjYWMuLjBjYjY3
ZWYyOWM2MmJmOGNjNDQ2YTBlY2UzMWM5ZmU1MzUxNTdhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTgy
LDcgKzgyLDcgQEAgYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSkKK2Jvb2wgSlNSZW1v
dGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAg
ICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZkNzIxYThkZjg3ODIyNjUzMzQ3ZGUy
ZjgyYmEyNTUyMjVlYzU5NzYuLjljMTk0YTFjZjUyYjBkZmQxMDQ1MmRjYTZlZGFjYjM4MDU0OTc0
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0
eQogICAgICMgVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVsZXRlIGZvciB0aGUKICAgICAjIGZvciB0aGUgZGVs
ZXRlUHJvcGVydHkgb3ZlcnJpZGUgaG9vay4KIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJv
b2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKVxuIik7
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xu
Iik7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogCiAg
ICAgIyBGSVhNRTogSW5zdGVhZCBvZiBjYWxsaW5nIGRvd24gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5LCBwZXJoYXBzIHdlIHNob3VsZCBpbXBsZW1lbnQKICAgICAjIHRoZSByZW1haW5lZCBvZiB0
aGUgYWxnb3JpdGhtIG91cnNlbHZlcy4KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0
dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9
CiAKQEAgLTI2OTYsNyArMjY5Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAg
IGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTtcbiIpOwogICAgIH0KIApAQCAtNDMy
NCw3ICs0MzI0LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0g
dHJ1ZTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTc1MDcsNyArNzUwOCw4IEBAIHN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgaWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwi
JG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwotICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvTlBfanNvYmplY3QuY3BwCmluZGV4IGZlZWJkZWY3YmM0NWU5OGM5MzA4ZmRmYmRlMTEwYjk5
ZmRkZGNhMmMuLjMyYzEzYjllYjQwNzA4MzVlYjI1ODM3MTk2ZDc4MzI1OGFjNTk3MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtMzkxLDggKzM5MSw5IEBAIGJvb2wg
X05QTl9SZW1vdmVQcm9wZXJ0eShOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CiAgICAgICAgIGlmIChpLT5pc1N0cmluZygpKQotICAgICAgICAgICAgb2Jq
LT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxH
bG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGktPnN0cmluZygpKSk7CisgICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmll
ckZyb21OUElkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpLCBzbG90
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHlCeUluZGV4KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5u
dW1iZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbQppbmRleCAyMmYwYjhkOWQ4ZmFlNGE3OWM2YjYzMWU5MzVjYjZhZGM3ZDk0ZmZmLi5kYmM2
ZDNiMWUxOWY5YzIxZDliNjBjMTdlZGZmOTcxNjAwNjdjMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC00NTcsOCArNDU3LDkgQEAgLSAo
dm9pZClyZW1vdmVXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0
OworICAgIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAKLSAgICBbc2VsZiBfaW1wXS0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nKGtleSkpKTsKKyAgICBb
c2VsZiBfaW1wXS0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nKGtl
eSkpLCBzbG90KTsKIAogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAg
ICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCA1ZWQyMWYxMzRlZjRhYWI1
ZGMwYzU1YTQ1ZGU2YTYzZDI3YzZiZTJlLi42MjI5NjM2OGViYjkwYzUwYjlkZTdmYTA3ODJjOWM2
ZmEyODU5MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApA
QCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxU
eXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUpOwogCiAgICAgYm9vbCB0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsg
Ly8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1
cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0
aGUgbG9uZ2VyIHRlcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KaW5kZXggMTllZDE5Y2JjN2FlM2VlNDY3Nzk2YjEwM2NiZmU3NjE2MDlhZDczMC4uNmU4Nzdk
MmViN2Y0NGQwM2EyOGUxNzEwODNiZDNkMGYwYmI5ODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIENhbGxUeXBlIE9i
amNGYWxsYmFja09iamVjdEltcDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1ib29sIE9iamNGYWxs
YmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwCmluZGV4IDRkMjk3YzcwZDZiMWI2YzFhZjg4ZjkxNGJlODVmNjBkZjAzY2M5YjEu
LmVjMzU4OGZjNTY1OTU1M2Y1MjcyODNjNThhNzM1ODAyMTMyOWFjNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIFJ1bnRp
bWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCkt
PnNldFZhbHVlQXQobGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKIH0KIAotYm9v
bCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKQorYm9vbCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmlu
ZGV4IGZjZjVlMzNmYjExNDAxODUxMDc5OTMwZmJkMTE3NjEzNTQ1MmM3ZTYuLjI5ODEyYTY2ZDZm
MDEyNGUzODM2MjVmOTU2MDE5Y2EzM2JjM2JkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgdW5zaWduZWQg
Z2V0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheS0+Z2V0TGVuZ3RoKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGEwMzZiNjY2MmQ0ODcyZjY4
ZGM1MjY0NWJhMWFmMmJhMTUzMzAzMmQuLjlkNWQ2MGRlZjM1NzU0YmUxZTBlMDYyMGU0MWVkYjk4
ZWZlMzllZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAt
MjAwLDcgKzIwMCw3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpCiB7CiAgICAgLy8gQ2FuIG5ldmVyIHJlbW92ZSBhIHByb3BlcnR5IG9mIGEgUnVu
dGltZU9iamVjdC4KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5oCmluZGV4IDZjYmY3YmY3OTZiMGE4OTQwNGI5NDIyNzVkNjUxZTYwZTczMjQ1ODIu
LjNjMTBkOGJkNTBmM2I3ZGFhNDg0MjIxNGI5ZTA0ZjA0M2FmZGYyZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5jcHAKaW5kZXggMmVmYjIyNTIzZjkyMWU5MmFiZDAyMTZlYjBjZDFmZmQxMDAzNjJiZS4uMDVk
MTI5MjkzOTU4MmYwNGM0MzJkMzBjMTQyZGJhNWRhYTBiZjExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCBib29sIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNO
UE9iamVjdCo+KGNlbGwpLT5kZWxldGVQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBucElk
ZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRl
eCA4NTU4ODk0OWEzMDYwNGM2OWY3N2NjYzNmNjBlNTQ2OTc3ZmZhYzZkLi40ODAzYzBiYzU3MWY5
NzdkZGMyNzIyYmJhYjk2YjZkMjdjMmE5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC05NSw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJv
cGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHAKaW5kZXggMzZmMjhlZTZmYjAxMDJkOGMxNzcxM2M2MDhiNjE0ZWFmODVkZGI3Ni4u
OGI5ZmNkZjMwODUyZDFkMjIyYTViM2JkNTkwNmRhNGJhZmU0M2E0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5j
cHAKQEAgLTIyOSw4ICsyMjksOSBAQCBib29sIE5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KE5Q
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG1fanNPYmpl
Y3QuZ2V0KCksIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworCisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG1fanNPYmplY3QuZ2V0KCksIGxleGljYWxHbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXIsIHNsb3QpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9qc09iamVj
dC0+aGFzUHJvcGVydHkobGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllclJlcC0+bnVtYmVy
KCkpKSB7CiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDMwMzJhZmEyODBmYTkyN2Q4NzczMjBl
YjgxY2JkOTA3MTAyNTU5N2UuLjEyY2U0MDljNTQzYzIyODgyMjc3MTliMmQ0MTA4YmYyYTg3OWQ0
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTExNDEs
OCArMTE0MSw5IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9w
ZXJ0eSh1aW50MzJfdCBvYmplY3RJRCwgY29uc3QgSWRlbnRpCiAgICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCi0gICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgc2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjllMTFiZDQ3OWJhMTUwNDc0OGY1ODNiYTZm
YTMxMjVlMzc4NDUzMS4uY2E3YTUxOWI5NGNhYjY4Y2JlMDdlMjNiMjhhODgwZGY5YTExM2YzMCAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0OSBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4g
YmFzZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBo
aWMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6Cisg
ICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5h
c3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtl
Rm9vNik6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5s
aW5lLmFzc2VydF9uZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6
CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChu
b0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQu
bm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwu
dGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2Fj
aGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9v
NCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RD
YWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVy
dHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qczoKKyAgICAgICAgKiBzdHJlc3MvZGVsZXRl
LXByb3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAobm9Jbmxp
bmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkLm1ha2VGb28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5s
aW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFi
bGVEZWxldGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFr
ZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RD
YWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJs
ZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleC5tYWtlRm9vNSk6CisgICAgICAgIChub0lubGluZS50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4KToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6
CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlW
YWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorCiAyMDIw
LTAyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQbGFjYXRl
IGV4Y2VwdGlvbiBjaGVjayB2YWxpZGF0b3IgaW4gR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0
KCkuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
ZnJvbS1wcm90b3R5cGUtY2hhaW4uanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKaW5kZXggNDlhMzFiN2YyNDdjMWJkMGFj
YTgyY2IyMmRmMjBlOGYxYmY2MWJkZC4uNTRiYmE4MmU2OTljNjJjY2NhODk0NTE2ZTYyYjdlNmNh
MWY1MTIwMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkg
bWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdh
dGNoLwogZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIpCiAgICAgICAgIHRocm93IG5l
dyBFcnJvcjsKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gZG9UZXN0KHpWYWwpIHsKIH0KIG5v
SW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7Citmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKICAgICBjb25zdCBYID0geyBpIH0KICAgICBDLnBy
b3RvdHlwZS56ID0gWAogICAgIGRvVGVzdChYKQpAQCAtMzYsNyArMzYsNyBAQCBmb3IgKGxldCBp
PTA7IGk8MTAwMDA7ICsraSkgewogCiBkZWxldGUgQy5wcm90b3R5cGUuegogCi1mb3IgKGxldCBp
PTA7IGk8MTAwMDAwMDsgKytpKSB7Citmb3IgKGxldCBpID0gMDsgaSA8IDIwMDAwMDA7ICsraSkg
ewogICAgIGdldFooe3o6IGl9KQogICAgIGRvVGVzdCh1bmRlZmluZWQpCiB9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBv
bHltb3JwaGljLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlu
bGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmFmZmFjOThlNTYzZDVmMzdm
NmVlMjA5MDg1ZDY0ODNjOTY4MWQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpAQCAt
MCwwICsxLDUzIEBACitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25k
aXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQor
CitmdW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOwor
fQorCitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBi
KTsKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFz
c2VydF9uZXEpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBm
dW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1si
YmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6
IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQor
CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2op
IHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAobGV0IGo9
MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
K2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAgIGFzc2Vy
dCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhp
Y0RlbEJ5VmFsKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDMwMDAwOyArK2kpIHsKKyAgICB0ZXN0
UG9seW1vcnBoaWNEZWxCeVZhbChpKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk5MTJk
YTRiYmJhYWQwNTIxZTU1MTI1YzkwN2U1ZmIyY2RjMTRlNAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAg
LTAsMCArMSwxNzQgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdhdGNoLworCitm
dW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlvbiBhc3Nl
cnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
ImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitmdW5jdGlvbiBh
c3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICB0cnkg
eworICAgICAgICBmdW4oKQorICAgIH0gY2F0Y2ggeworICAgICAgICB0aHJldyA9IHRydWUKKyAg
ICB9CisgICAgYXNzZXJ0KHRocmV3KQorfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNz
ZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25vSW5saW5lKGFzc2VydF90aHJvd3MpCisK
K2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VG
b28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9v
CisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTAp
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0g
bWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAy
KQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKworZnVuY3Rp
b24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28yKCkg
eworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9v
LmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJuIGZvbwor
ICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkK
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBt
YWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAy
KQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCkKKworZnVu
Y3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkK
KyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBu
b0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMygpCisg
ICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0
IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEo
ImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5i
YWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29b
ImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAg
ICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFi
bGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlz
cygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9Cisg
ICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9l
cShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6
LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisKKyAgICAg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAgICB2YWx1
ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsKKyAgICAg
ICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2Vx
KGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvby5mb29iYXIs
IDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb280KQor
CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5
cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkTWlzcykKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDsgKytpKSB7
CisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVC
eVZhbCgpCisgICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWRNaXNzKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzIGIvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1
cmUuanMKaW5kZXggNzc5NWRjNTgxNTc4ZTRjMzk4MWMyMmFjODc2YzQ1NTQxM2U2NGQzYy4uYTkz
OWFhZTNhYzhhY2NjMjIxNGRkN2U3ZDgwMjQ0MjFhODE2NDVkOSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1
cmUuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBz
LWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMKQEAgLTI0LDUgKzI0LDUgQEAgZnVuY3Rpb24gZG9UZXN0
KCkgewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwMDAwOyAr
K2kpIGRvVGVzdCgpCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7ICsraSkgZG9UZXN0KCkK
IApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNo
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGUwZGEwMTMxNTkxMTlmNjAzMDBmZDEwZTIxY2MxYTQ4Y2U3NmJiOQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anMKQEAgLTAsMCArMSw0MjEgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUJpZ0ludD10cnVlIikK
KworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24g
YXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF90aHJvd3MoZnVuKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAg
dHJ5IHsKKyAgICAgICAgZnVuKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcgPSB0cnVl
CisgICAgfQorICAgIGFzc2VydCh0aHJldykKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5l
KGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCitub0lubGluZShhc3NlcnRfdGhyb3dz
KQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBt
YWtlRm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAg
ICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJu
IGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3IEFycmF5
KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltq
XSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9
PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAg
ICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAg
ICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpCisKK2Z1
bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9v
MigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAg
IGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJldHVybiBm
b28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcgQXJyYXko
NTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pd
ID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9
PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAg
ICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAg
ICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisK
K2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24g
bWFrZUZvbzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQor
ICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRy
dWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9Cisg
ICAgbm9JbmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMo
KQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBj
b25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2Vy
dCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChm
b28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQo
Zm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2Fj
aGVhYmxlRW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJ
ZE1pc3MoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBmb28gPSB7
fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3Nl
cnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9v
LmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisg
ICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAg
dmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7Cisg
ICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2Vy
dF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShmb28uZm9v
YmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9v
NCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQor
CisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0
LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisg
ICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAg
IGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykK
KyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2Z1bmN0aW9uIHRlc3REZWxldGVJbmRleCgpIHsK
KyAgICBmdW5jdGlvbiBtYWtlRm9vNSgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGZvb1swXSA9IDIzCisg
ICAgICAgIGZvb1sxXSA9IDI1CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwgdHJ1
ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb29bMV0sIHRydWUpCisgICAgICAgIGRlbGV0
ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZv
bzUpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzUoKQorICAgIH0KKworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0K
KworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJh
ciIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1swXSwgMjMpCisgICAgICAgIGFzc2Vy
dF9lcShmb29bMV0sIHVuZGVmaW5lZCkKKyAgICAgICAgZm9vWzFdID0gMQorICAgICAgICBhc3Nl
cnRfZXEoZm9vWzFdLCAxKQorICAgIH0KK30KK25vSW5saW5lKHRlc3REZWxldGVJbmRleCkKKwor
ZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkgeworICAgIGZ1bmN0aW9uIG1ha2VG
b282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vWyJiYXoiK2ldID0gMQor
ICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiK2ldCisgICAgICAg
IHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzYpCisKKyAgICBhcnIgPSBu
ZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAg
ICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQo
Zm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3Ro
LCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5iYWcg
PSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpd
ID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0
KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHltb3JwaGlj
RGVsQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RCaWdpbnREZWxldGVCeVZhbCgpIHsKKyAgICBmdW5j
dGlvbiBtYWtlRm9vNygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1sxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbl0gPSAxCisgICAgICAgIGZvby5i
YXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MG5dCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFr
ZUZvbzcpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzcoKQorICAgIH0KKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJb
al0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9i
amVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0g
MQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9
IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCgh
KCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0QmlnaW50RGVsZXRlQnlW
YWwpCisKK2Z1bmN0aW9uIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpIHsKKyAgICBjb25zdCBzeW1i
b2wgPSBTeW1ib2woJ2ZvbycpOworCisgICAgZnVuY3Rpb24gbWFrZUZvbzgoKSB7CisgICAgICAg
IGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEKKyAgICAgICAgYXNzZXJ0KCEo
U3ltYm9sKCdmb28nKSBpbiBmb28pKQorICAgICAgICBhc3NlcnQoc3ltYm9sIGluIGZvbykKKyAg
ICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzgpCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzgoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEK
KyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAz
CisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFN5bWJvbERlbGV0ZUJ5VmFs
KQorCitmdW5jdGlvbiB0ZXN0T2JqRGVsZXRlQnlWYWwoKSB7CisgICAgY29uc3Qgc3ltYm9sID0g
eyBpOiAiZm9vIiB9OworCisgICAgZnVuY3Rpb24gbWFrZUZvbzkoKSB7CisgICAgICAgIGxldCBm
b28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEKKyAgICAgICAgYXNzZXJ0KHN5bWJvbCBp
biBmb28pCisgICAgICAgIGFzc2VydCghKHsgaTogImZvbyIgfSBpbiBmb28pKQorICAgICAgICBm
b28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5bWJvbF0KKyAgICAgICAgcmV0dXJuIGZv
bworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOSkKKworICAgIGFyciA9IG5ldyBBcnJheSg1
MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0g
PSBtYWtlRm9vOSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09
PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAg
ICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAg
ICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAg
ICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T2JqRGVsZXRlQnlWYWwpCisKK2Z1bmN0
aW9uIHRlc3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rpb24gbWFr
ZUZvbzEwKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAg
ICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVl
KQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisKKyAgICAgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAgICB2YWx1ZTogNDIs
CisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsKKyAgICAgICAgYXNz
ZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgZm9vLmZvb2JhcikKKyAgICAgICAgYXNzZXJ0X2VxKGZv
by5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1h
a2VGb28xMCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMTAoKQorICAgIH0KKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBh
cnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2Vx
KE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQor
ICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpd
ID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdE92ZXJyaWRlKCkgeworICAgIGFyciA9IG5l
dyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBhcnJbal0gPSBmdW5jdGlvbigpIHsgfQorICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxl
bmd0aFByb3BlcnR5KGFycltqXSksIHRydWUpCisgICAgICAgIGRlbGV0ZSBhcnJbal0ubGVuZ3Ro
CisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJvcGVydHkoYXJyW2pdKSwgZmFs
c2UpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RPdmVycmlkZSkK
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVh
YmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQor
ICAgIHRlc3REZWxldGVJbmRleCgpCisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKKyAg
ICB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKQorICAgIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpCisg
ICAgdGVzdFN0cmljdCgpCisgICAgdGVzdE92ZXJyaWRlKCkKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390690</attachid>
            <date>2020-02-13 14:51:24 -0800</date>
            <delta_ts>2020-02-14 17:05:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200213145123.patch</filename>
            <type>text/plain</type>
            <size>163421</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YzJmNGNhYjRhNTA3ODRkOGJhZmI3MDJkNjRlNjNiMDRmYWM0MGJlLi5mYzljMzIxOTUwNTFlZTIx
N2QwZDRlZmVjN2I3ZTZlNWQxM2E4MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMC0wMi0xMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9ubHku
IFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVzdGlu
Zy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBjb2Rl
IGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2FjaGVk
IGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3MgaXMg
YSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0gRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlzdHMs
IGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25kaXRp
b25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQgbXVz
dCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBUaGlz
IGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0cyB3aXRoIERGRyBkaXNh
YmxlZDoKKworICAgICAgICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZSAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAg
ICAgICAgZGVmaW5pdGVseSAxLjE2NTB4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLXBvbHltb3JwaGljICAobmV1dHJhbCkKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluICAgICAgKG5ldXRyYWwpCisKKyAgICAgICAgV2l0aCBE
RkcgZW5hYmxlZCwgZXZlcnl0aGluZyBpcyBuZXV0cmFsL3NsaWdodGx5IG5lZ2F0aXZlIGV4Y2Vw
dCBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLCB3aGljaCBpcyA2JSBzbG93ZXIuIFRoaXMg
cGF0Y2ggZG9lcyBub3QKKyAgICAgICAgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgREZHIGNvZGUsIGJ1
dCBsaWtlbHkgYWZmZWN0cyB0aGUgdGllciB1cCB0aW1pbmdzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpy
ZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChK
U0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklU
RGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxC
eSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL0NhY2hlYWJs
ZUlkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNhY2hlYWJsZUlkZW50aWZpZXI6
OkNhY2hlYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVO
ZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXAgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5kZXhpbmdI
ZWFkZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hl
YWRlciBjb25zdCk6CisKIDIwMjAtMDItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBvcHRpb25zIGZvciBkZWJ1Z2dpbmcgV0FTTSBjb2RlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAy
YzkxYzMwZTdlMDI2YzM3OGY2NzMxMDA4NjUyYzQwZDMxMjRlNDc5Li4zOGM0M2Y5YmQ5YzYxZjIx
MTZhNDUyZjQ2NjFhYTk1ZDJiOTMyMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAyLTEw
ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNlbGluZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3BlY3RydW0uaDoKKyAgICAg
ICAgKFdURjo6U3BlY3RydW06OmFkZCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpnZXQgY29u
c3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YnVpbGRMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdURjo6U3BlY3RydW06OmNsZWFyKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OnJlbW92ZUlm
KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6U3BlY3RydW06OmVuZCk6IERlbGV0ZWQuCisKIDIwMjAtMDItMTIgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJQIGltYWdlIGZvcm1h
dCBpcyBub3Qgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCmluZGV4IDAzNGIzNTdjMDczOGUzNDkxMjU4ODU4ZDcwNjk4OWZlZmNiNDgzM2Qu
LjkyY2E5MjQ3Nzk2MmJjMDRjN2E4ZWI4NmExZjQxNWQyYjE4N2YzNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC0yMDIsNyArMjAyLDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKIAogICAgIHN0YXRpYyBib29sIGN1
c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmgKaW5kZXggY2Q1MTFiZmQyODRhMDEzMjUyYTY0MDVhNjcwN2FhZDEzN2ExYmNjYi4uNGJl
YzMzYTcyZGMyODQ3N2E2MTM1NmZkYjkyMGE0NzY4NjJlZDcwMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3
Myw3ICszNzMsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYgog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBQYXJlbnQ6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KQEAgLTQyNiw3ICs0MjYsOCBAQCBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNr
T2JqZWN0Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
KHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNs
b3QpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBmN2Y5ZGFiM2YyOGFkYzBlYWJiMmJkZThiMjUwNjc3
MmFkMjVmZmNlLi45ZGY4NzhlNTg4ZmEyYWVmMDYyMmFjNjk1ODc4MWFiZTY3YTM3ZTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNDc5LDcgKzQ3OSw4
IEBAIGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleShKU0NvbnRleHRSZWYgY3R4LCBK
U09iamVjdFJlZiBvYmplY3QsIEpTVmFsdWVSCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVl
ZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVu
dCk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgc2xvdCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0
eCwgZXhjZXB0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTM0LDcgKzUzNSw4IEBA
IGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByCiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pT
KG9iamVjdCk7CiAKLSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZS0+aWRl
bnRpZmllcigmdm0pKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJl
c3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pLCBzbG90KTsKICAg
ICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmNDJjMmFl
OGZlNTkyYmY2ZDY4Mjg1Mzg5NzZkMGNmNmRhNmRiMWYuLmZiNzQ1NjUxN2Y4Zjc0YzY5ZjFjOWQ1
YmRjMjAyYzRmNmU0NDE4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4
LDYgKzExNzgsNyBAQAogCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwRUNBNjAxMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFG
REJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1
RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8q
IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzM0QjY1NTUyM0Y1QzEw
NDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0
ZVByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTczRTM3OTk0MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5
OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1
OTNDODk4QkU3MTRBNjRCRTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlF
MzY0RCAvKiBXYXNtQ29udGV4dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1v
ZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkw
MDgxMzcxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzk3MSw2ICszOTcyLDcgQEAKIAkJNzBF
Q0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8q
IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIz
UmVkdWNlTG9vcFN0cmVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
UmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyog
QjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3Ry
ZW5ndGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTky
QTM4RTFEQjMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcw
ODQsNiArNzA4Niw3IEBACiAJCQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90
b3R5cGUuY3BwICovLAogCQkJCUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90
eXBlLmggKi8sCiAJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5
QXR0cmlidXRlcy5oICovLAorCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQ
cm9wZXJ0eVNsb3QuaCAqLywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0
QXJndW1lbnRzLmNwcCAqLywKIAkJCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0
QXJndW1lbnRzLmggKi8sCiAJCQkJMEZFMDUwMEQxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFy
Z3VtZW50c09mZnNldC5jcHAgKi8sCkBAIC05MjA5LDYgKzkyMTIsNyBAQAogCQkJCUZFNTA2ODY1
MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVB
bGxDb2RlRWZmb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5
RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFE
NDE5MkNEMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzdBNDIzRTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY2Miw3ICsxMDY2Niw2IEBACiAJCTA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2pl
Y3Q7CiAJCQlhdHRyaWJ1dGVzID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJh
bGxlbCA9IFlFUzsKIAkJCQlEZWZhdWx0QnVpbGRTeXN0ZW1UeXBlRm9yV29ya3NwYWNlID0gT3Jp
Z2luYWw7CiAJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRl
Q2hlY2sgPSAxMDAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCmluZGV4IDJhZjQ4MGE5Y2U3ZDgwMjVjZTU4ODNkOGFkZjljOTg0MjY5YmE5NzUuLjk5
NmZiYmZlZTk5NzEzMjNmNTNmZjc3ZTY5ZDdiMzI2ZWE3MDZjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTczLDYgKzczLDggQEAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0
OgogICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAg
IGNhc2UgRGVsZXRlTWlzczoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheUxlbmd0aDoK
ICAgICBjYXNlIFN0cmluZ0xlbmd0aDoKQEAgLTEwNiw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZQogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25T
ZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNz
Q2hhaW4pCiB7CkBAIC0xMjMsNiArMTI1LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9m
ZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNz
Q2hhaW4pKSk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGVEZWxldGUoCisgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9s
ZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgaWYgKCFuZXdT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKSB7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ugc28gdGhh
dCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAgICAvLyBTZWUgdGhl
IERlbGV0ZSBjb2RlIGJlbG93LgorICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAg
ICAgICAgbmV3U3RydWN0dXJlLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tD
ZWxsKTsKKworICAgICAgICBpZiAobWF5TmVlZFRvQ2hlY2tDZWxsKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwg
bmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworfQorCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgp
CiB7CiB9CkBAIC0yNjIsNiArMjgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50
aWZpZXJOYW1lTWF0Y2goKSBjb25zdAogICAgIGNhc2UgTG9hZDoKICAgICAvLyBXZSBkb24ndCBj
dXJyZW50bHkgaGF2ZSBhIGJ5X3ZhbCBmb3IgdGhlc2UgcHV0cywgYnV0IHdlIGRvIGNhcmUgYWJv
dXQgdGhlIGlkZW50aWZpZXIuCiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoK
QEAgLTMwOSw2ICszMzAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0
eUNoZWNrKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgTG9hZDoKICAg
ICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25D
b25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAg
ICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzU2LDYgKzM4MCw5IEBAIGJv
b2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxl
dGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNz
OgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVy
OgpAQCAtNDQ3LDYgKzQ3NCw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENl
bGwoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAg
ICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNl
IERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNl
IEdldEdldHRlcjoKQEAgLTQ5Miw2ICs1MjIsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmRvZXNDYWxs
cyhWTSYgdm0sIFZlY3RvcjxKU0NlbGwqPiogY2VsbHNUb01hcmtJZkRvZXNDYWxscykgY29ucwog
ICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6CiAgICAgICAgIGRvZXNDYWxscyA9IHRydWU7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIExvYWQ6CiAgICAgY2Fz
ZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKQEAgLTYxNCw2ICs2NDcsOSBAQCBib29sIEFjY2Vz
c0Nhc2U6OmNhblJlcGxhY2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpIGNvbnN0CiAKICAgICBj
YXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNh
c2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNl
IFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNjYzLDcg
KzY5OSw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJwcm90b3R5cGUgYWNjZXNzIGNoYWluID0gIik7CiAg
ICAgICAgIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3RydWN0dXJlKCksIG91dCk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQorICAgICAgICBp
ZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSgp
KSwgIiAtPiAiLCBwb2ludGVyRHVtcChuZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICBlbHNlIGlm
IChtX3N0cnVjdHVyZSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9
ICIsIHBvaW50ZXJEdW1wKG1fc3RydWN0dXJlLmdldCgpKSk7CkBAIC03MDUsNiArNzQxLDcgQEAg
Ym9vbCBBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRv
cikgY29uc3QKIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUcmFuc2l0aW9uOgor
ICAgIGNhc2UgRGVsZXRlOgogICAgICAgICBpZiAodmlzaXRvci52bSgpLmhlYXAuaXNNYXJrZWQo
bV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKG1fc3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgZWxzZQpAQCAtMTg1MSw3ICsx
ODg4LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zy
b21TdGFja0ZvckNhbGwoc3BpbGxTdGF0ZSwgcmVzdWx0UmVnaXN0ZXJUb0V4Y2x1ZGUpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChpc0lubGluZU9m
ZnNldChtX29mZnNldCkpIHsKICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAg
ICAgICAgIHZhbHVlUmVncywKQEAgLTE4OTYsNiArMTkzMyw2NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2xvd1BhdGguZW1wdHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisKKyAgICBjYXNlIERlbGV0ZTogeworICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Ig
YWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOworICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5iYXNlUmVncygpKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdz
KTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CisgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7
CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNp
dGlvbigpKTsKKworICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0
YXRlIHByZXNlcnZlZFN0YXRlID0KKyAgICAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNl
ZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFT
dGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOworCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tD
ZWxsOworICAgICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gbmV3U3RydWN0dXJlKCktPm1h
eUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBXZSBk
byBub3QgY2FjaGUgdGhpcyBjYXNlIHlldCBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNr
IHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVy
IGFuZCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkuCisgICAgICAgIEFTU0VSVCghbWF5TmVlZFRv
Q2hlY2tDZWxsKTsKKyAgICAgICAgLy8gQ2xlYXIgdGhlIGJ1dHRlcmZseSBpZiB3ZSBoYXZlIG5v
IHByb3BlcnRpZXMsIHNpbmNlIG91ciBwdXQgY29kZSBleHBlY3RzIHRoaXMuCisgICAgICAgIGJv
b2wgc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5ID0gIW5ld1N0cnVjdHVyZSgp
LT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICYmICFoYXNJbmRleGluZ0hlYWRlcjsKKworICAgICAgICBqaXQubW92ZVZhbHVlKEpTVmFsdWUo
KSwgdmFsdWVSZWdzKTsKKworICAgICAgICBpZiAoc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFy
QnV0dGVyZmx5KSB7CisgICAgICAgICAgICBqaXQubnVrZVN0cnVjdHVyZUFuZFN0b3JlQnV0dGVy
Zmx5KHZtLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBiYXNlR1BSKTsKKyAgICAgICAgfSBlbHNl
IGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkpIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZh
bHVlKAorICAgICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGJhc2VHUFIsCisgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArCisgICAgICAgICAg
ICAgICAgICAgIG9mZnNldEluSW5saW5lU3RvcmFnZShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1
ZSkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZh
bHVlUmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
Uiwgb2Zmc2V0SW5CdXR0ZXJmbHkobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAg
ICAgIH0KKworICAgICAgICB1aW50MzJfdCBzdHJ1Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVp
bnQzMl90PihuZXdTdHJ1Y3R1cmUoKS0+aWQoKSk7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlQml0cyksCisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSk7CisKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc0Jvb2xlYW4odHJ1ZSksIHZh
bHVlUmVncyk7CisKKyAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBv
cHBpbmcoaml0LCBwcmVzZXJ2ZWRTdGF0ZSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7
CisgICAgICAgIGppdC5tb3ZlVmFsdWUoanNCb29sZWFuKGZhbHNlKSwgdmFsdWVSZWdzKTsKKyAg
ICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2Fz
ZSBEZWxldGVNaXNzOiB7CisgICAgICAgIGppdC5tb3ZlVmFsdWUoanNCb29sZWFuKHRydWUpLCB2
YWx1ZVJlZ3MpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlMZW5ndGg6IHsKICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmgKaW5kZXggNzlkMzEwMTU1ZTkzYTU0NTNkMjg2MWM0MzIyN2JhM2JhYzE5ZjI3Ny4u
YzZjODE4NDQ2MzQxZDBhNDNjNjdhZWM5MzE4MzMzNzQ3ODdkMTgzNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC04NSw2ICs4NSw5IEBAIHB1Ymxp
YzoKICAgICBlbnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgTG9hZCwKICAgICAg
ICAgVHJhbnNpdGlvbiwKKyAgICAgICAgRGVsZXRlLAorICAgICAgICBEZWxldGVOb25Db25maWd1
cmFibGUsCisgICAgICAgIERlbGV0ZU1pc3MsCiAgICAgICAgIFJlcGxhY2UsCiAgICAgICAgIE1p
c3MsCiAgICAgICAgIEdldEdldHRlciwKQEAgLTE0Niw4ICsxNDksMTEgQEAgcHVibGljOgogICAg
ICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOwogCiAgICAgLy8gVGhpcyBjcmVhdGUgbWV0aG9k
IHNob3VsZCBiZSB1c2VkIGZvciB0cmFuc2l0aW9ucy4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0Nl
bGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4pOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKQEAgLTE1Nyw3ICsxNjMsNyBAQCBwdWJsaWM6
CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAo
bV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8
fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5wcmV2
aW91c0lEKCk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CkBAIC0x
NjUsNyArMTcxLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBj
b25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uKTsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpOwogICAg
ICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAxMzI0
MDljMGE0NTEwYmRmYThlY2UzM2I3NDM0NzE2MDJkN2IwZTc5Li5iMTY2YzMwYzE4YTUyM2E3NjI1
ZjM5YWY2Yjc4OTUwNjdhYTVmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc5NSw2ICs3OTUsMTUgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUg
dHlwZSkKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmlu
dCgiVHJhbnNpdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpE
ZWxldGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlIik7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICAgICAgb3V0LnBy
aW50KCJEZWxldGVOb25Db25maWd1cmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
QWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVNaXNzIik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlJlcGxhY2U6CiAgICAgICAg
IG91dC5wcmludCgiUmVwbGFjZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA2MTc4
NzM3ZjlmOGE5Y2QwYjZkZGFkNTdmMWNmMTJlZmU0ZmNhNzA1Li45NmExYmFlY2JlNGNiYmI3NmRi
ZGVkYTgwNTY1YTJjNTk4NjU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Niw2ICsyNzYsMTIgQEAgdm9p
ZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CisgICAg
ICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgorICAgICAgICBy
ZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZGRjZTg1ZWMw
MjU1NTc2YzllMzQ1MWY2NDczNmQxMmMzODk0MjgwMy4uYjU3NWJkZDIxNjE5YzJkZmU0ZjE4MmZh
ZWQ5MGYyNjhlOWUyNjE5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU1LDcgKzU1LDkgQEAgZW51bSBjbGFzcyBBY2Nl
c3NUeXBlIDogaW50OF90IHsKICAgICBHZXRCeVZhbCwKICAgICBQdXQsCiAgICAgSW4sCi0gICAg
SW5zdGFuY2VPZgorICAgIEluc3RhbmNlT2YsCisgICAgRGVsZXRlQnlJRCwKKyAgICBEZWxldGVC
eVZhbAogfTsKIAogZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCmluZGV4IDI2ZTI4Mjkz
OWU5YWNhODg2NWMyMjE3NzNjMmE0MWUwMjgwOTRkZGEuLjQ4YjViODZmYTRiOWU4NjVlYTQ4ZGM5
OWE0OTNiZDk0OGQwNzRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJTY29wZS5jcHAKQEAgLTEyOSwxNCArMTI5LDE0IEBAIGJvb2wgRGVidWdnZXJT
Y29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVj
dC0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogfQogCi1ib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUg
PSBqc0Nhc3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxp
ZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUt
PmpzU2NvcGUoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9i
amVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2Jq
ZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmY0
Y2UxYjFkYTRiNTc5MGRlOGFkOTg4YTcxZjYwMmNkZjI2MTY3NC4uNDMyN2MxZjAyYzY5Mjc4NDUw
OGUwYTlhMWEyMTQ5Nzc1ZWRkODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1
YjRhZGU0NDRjNDNmNWFkZGYyMzE3ZjQyNjViNy4uOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYw
ZmM0ZDQyNjU2YzE0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0
YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTcwLDcg
KzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2Up
IFwKICAgICBtYWNybyhQdXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJ
ZFNlbGZQYXRjaCkgXAotICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkKKyAgICBtYWNybyhJbkJ5
SWRTZWxmUGF0Y2gpIFwKKyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAorICAgIG1h
Y3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5lcmljKQogCiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAwOTFjNGY3ODJhMDc4NGZjNDUyNWVkMjA3
OTY5Y2QxYjc4NzQ0ZTg2Li5jNmU2MWI4OWJmOWExYTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01MDAsNiArNTAwLDggQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4
ID0gMDsKICAgICBtX3B1dEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbkJ5SWRJbmRleCA9IDA7Cisg
ICAgbV9kZWxCeVZhbEluZGV4ID0gMDsKKyAgICBtX2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9p
bnN0YW5jZU9mSW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAg
ICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKQEAgLTU4MCw2ICs1ODIsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cHV0X2J5X2lkKQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2RlbF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlf
aWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2dldF9mcm9tX3Njb3BlKQpAQCAtODc1LDYgKzg3OSw4IEBAIENvbXBpbGF0aW9u
UmVzdWx0IEpJVDo6bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeVZhbHMs
IHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRo
aXMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBw
YXRjaEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxCeUlkcywgcGF0Y2hC
dWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBwYXRjaEJ1ZmZl
cik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBwYXRjaEJ1ZmZlcik7CiAg
ICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3YjQ0MDc0OTYzMzM2ZmNiODk0MWViZDA1YjU5NzMx
MjlhOWU4NjU1Li42NzE2NjYxZGY0ZmFjZWE1ZWZlZDVmNTEwODFmMDU5YjZkMjUzZDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUwMCw3ICs1MDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC05MTMsNiArOTE1LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+
IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+
IG1fcHV0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlk
czsKKyAgICAgICAgVmVjdG9yPEpJVERlbEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CisgICAg
ICAgIFZlY3RvcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZl
Y3RvcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOwogICAgICAgICBWZWN0
b3I8QnlWYWxDb21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAg
IFZlY3RvcjxDYWxsQ29tcGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CkBAIC05
MzQsNiArOTM4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJ
ZFdpdGhUaGlzSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJ
bmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5CeUlkSW5kZXggeyBVSU5U
X01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5kZXggeyBVSU5UX01BWCB9Owor
ICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVu
c2lnbmVkIG1faW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQg
bV9ieVZhbEluc3RydWN0aW9uSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBt
X2NhbGxMaW5rSW5mb0luZGV4IHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOTIwYjcyMDNl
M2NmNGJmMDZlZWQ0NTczYTM5Y2I1NmJjY2E2NWQ1YS4uYjYyZmY3N2Y5OWExOTE0MTY2MDNiMGNm
OWE4ZjQ5MWQ0MjdjZmU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTE2Miw2ICsxNjIsNjYgQEAgVl9KSVRP
cGVyYXRpb25fR1NzaUpKSSBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkK
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCitKSVRE
ZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkKKyAgICA6IEJhc2UoY29kZUJsb2Nr
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNl
ZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBm
YWxzZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIo
KSk7CisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1f
c3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CisgICAg
bV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7CisgICAgbV9zdHVi
SW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IHByb3BlcnR5LnRhZ0dQUigpOworI2VuZGlmCit9CisK
K3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0aEp1
bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOworfQor
Cit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVyJiBm
YXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3RhcnQuaXNT
ZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwg
ZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQor
CitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHJlc3VsdCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQoreworICAg
IG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CisgICAgQVNTRVJUKGJh
c2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgIG1fc3R1YkluZm8t
PmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3Bl
cnR5R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3Vs
dC5wYXlsb2FkR1BSKCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5i
YXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9
IHJlc3VsdC50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0gSW52
YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0Lmxh
YmVsKCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1f
ZG9uZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFs
aXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sK
KyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAg
ICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2Vu
ZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGJmYjkwMjE2YjI5YzI3ZmZkMGVkOGQ3ZjBm
NTg3ZTA4ZmU2ZTczMTYuLjM1NTVmZWM1ZGQzYTIwNGEyYThhYzNmY2VjYzM2MjVmYjYyMjZhODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmgKQEAgLTE0Miw2ICsxNDIsNTYgQEAgcHJpdmF0ZToKICAgICBQdXRLaW5kIG1fcHV0
S2luZDsKIH07CiAKK2NsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3I7CitwdWJsaWM6CisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERl
bEJ5VmFsR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0
dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAor
ICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQ
YXRoTGlua0J1ZmZlcik7CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImKTsKKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKK2Ns
YXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Ig
eworICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAg
ICBKSVREZWxCeUlkR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAor
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0KTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0
KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAg
IHZvaWQgZmluYWxpemUoCisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwg
TGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1Bh
dGhKdW1wOworfTsKKwogY2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRH
ZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0
YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0OGRjNjMzNC4uNGFlMmJhNmQ4OTAxMzZhOTEwYWEzYWVmYzc1
ZjU0YjUyYWZmMjQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC0yMTQyLDcgKzIxNDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVy
aWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldE93blByb3BlcnR5KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVC
eUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIApAQCAtMjE1MCwyMCArMjE1MCw0OCBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHVpZCkpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2Jq
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJu
IGNvdWxkRGVsZXRlOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5z
dHJ1Y3R1cmVPck51bGwoKTsKIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisgICAgYm9vbCBy
ZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFz
ZVZhbHVlLCB1aWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGNvbnN0
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisK
KyAgICAgICAgaWYgKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5z
dHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERlbEJ5KGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeUlkKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlk
KSkpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtMjE3MSwxMCArMjE5OSwxMSBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKUwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVy
biBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSwgdWlkKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBy
ZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSYgdm0sIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkpCitzdGF0aWMgYm9vbCBkZWxldGVCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0m
IHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkp
CiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMTkw
LDcgKzIyMTksNyBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgZWxzZSB7CiAgICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHkgPSBrZXkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIGNvdWxk
RGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2Jq
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2Jq
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwg
cHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKSkKQEAgLTIxOTgsMTIgKzIyMjcsNDIgQEAgc3RhdGljIGJvb2wgZGVsZXRl
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IFZNJgogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCAgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEtleSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJz
Y3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1
ZS5zdHJ1Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBp
ZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFi
bGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIg
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAg
ICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAg
cmVwYXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9s
ZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlW
YWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ocmVzdWx0KSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpKSk7CiB9CiAKIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5
KQpAQCAtMjIxMSw3ICsyMjcwLDggQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEoKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5
KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5j
b2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVmZjgyYTMwMGMu
LmI0YTcxYWRiY2QxOTBlZDUzNTMyNGZkNDQyOWZmOWFjNjQyMTQ5NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsOSArMjUxLDExIEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0
KSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFM
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCkg
V1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2Nv
cGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2Nv
cGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUyZjcxM2U4YWEw
YWZiNWU4MDVjN2NmM2YxZDM4ODM3MWMyZjYuLjgwNTcwNmU0ODIyYTkyOWEwM2ZiYjVhNWE0Nzdm
MDcyMGUxY2I0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCkBAIC0zODcsOSArMzg3LDM1IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgSklURGVsQnlJZEdlbmVy
YXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsK
KworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcERlbEJ5SWQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3By
b3BlcnR5KS5pbXBsKCk7CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5
SWRzW21fZGVsQnlJZEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRlbnRp
Zmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC0zOTgsOSArNDI0LDM5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCwgcHJvcGVydHkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90U3RyaW5nKHJl
Z1QwKSk7CisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVs
QnlWYWw+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBKSVREZWxCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOworCisgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdU
MSk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3Qs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1Qx
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA1
Y2M3ZGY5YzU0MTg5YzdjYjNkNDA5MWI1YzRmNGM4YmRhZWVmMTRjLi40ZmNiZGE1M2U5NjUyYjZk
MjBhNDg4MTZkN2NiZDY0OGQwYjNhYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2FkKGJhc2Us
IHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNS
ZXN1bHQsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBkc3QsIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwg
bV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKQEAgLTEzMyw5ICsxMzMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJv
cGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIGRzdCwgbV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikg
eyB9Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpIHsgfQorCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkxODIwNDE1NTRiZGM3NmMx
OTFjYjEzODVkMTNhOWM4MWZmZDQ1ZWIuLmJlNzUwMWVmMjJjMTgzM2U0ZmI3ZjA2YTlhYmUzYWFi
MDc2ZWRjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNjQxLDcg
KzY0MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3
U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsK
KyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2
bSwgY29kZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3Qu
aXNDYWNoZWFibGVTZXR0ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVD
dXN0b20oKSkgewpAQCAtNzM0LDYgKzczNCw3MiBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAg
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwg
cHV0S2luZCkpOwogfQogCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBEZWxCeUtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OworCisgICAgeworICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCk7CisKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9i
amVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAo
IWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhb2xkU3RydWN0dXJlIHx8ICFvbGRTdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkgfHwgIW9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgp
KQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFzbG90
LmlzQ2FjaGVhYmxlRGVsZXRlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsK
KworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKworICAgICAg
ICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBu
ZXdPZmZzZXQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVu
dGx5KG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQpOworICAgICAgICAgICAg
aWYgKCFuZXdTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRl
cjsKKyAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2Fj
aGVhYmxlKCkgfHwgbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdPZmZzZXQgPT0g
c2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5w
cmV2aW91c0lEKCkgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NF
UlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
T2Zmc2V0KG5ld09mZnNldCkpOworICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZURlbGV0ZSh2bSwgY29kZUJsb2NrLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFt
ZSksIG5ld09mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICB9IGVs
c2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xv
dC5pc05vbmNvbmZpZ3VyYWJsZSgpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3ND
YXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJh
YmxlLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9s
ZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nh
c2U6OkRlbGV0ZU1pc3MsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxp
ZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAg
ICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgcHJv
cGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVy
YXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2Rl
KCkpOworICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwg
b2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBJ
bmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8s
IGNvZGVCbG9jaywgcmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93
KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hE
ZWxCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5m
b09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LAogICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5MSw2ICsxNDU3LDE1IEBAIHZv
aWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCiAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5k
IGtpbmQpCit7CisgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIGVsc2UKKyAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1Yklu
Zm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBl
OGE5OTQ0YmI0ZjlmZTM5Li5jMWQ5OTU5YWRhZmQzNjU3NjJlODkxNzlhYjNjMGVlZDY2ZTU4N2Qw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51
bSBjbGFzcyBHZXRCeUtpbmQgewogICAgIERpcmVjdAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtp
bmQgeworICAgIE5vcm1hbCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJy
YXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNW
YWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xv
YmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29u
c3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCBy
ZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIFB1dEtpbmQpOwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCBy
ZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25z
dCBJZGVudGlmaWVyJiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0
dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1
YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENh
bGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5saW5rRm9y
KFZNJiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2b2lkIHJl
c2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9p
ZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVz
ZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lk
IHJlc2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0
SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyMjU0ZmNjNDI5
NjE3Y2U4Mzk3ZDI0ZTU1MGUxYWNlYzY3YjYxNDQzLi5mYWNhN2JmNGUxNzhkNDI1ZmZiZWZmZTk1
NGU4ZjMxZWIwMDIwNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTkyNSw3ICs5MjUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZGVsX2J5X2lkKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWxCeUlk
PigpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fYmFzZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSksIHNsb3QpOwogICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CkBAIC0xMTA4LDcgKzExMDksOCBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxl
SWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
YWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVjZjZmZDA4ZmZkMmJiODhi
OWQ1ODdiYWVkMGZmNi4uMTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2IwYzE1ZjI2NTg5NzkzOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpCiAKIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKEpT
Q2VsbCogaWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFibGVJZGVudGlmaWVyQ2Vs
bChpZGVudGlmaWVyKSk7CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmllcik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggZmU2YzZiN2Q4NGM0N2Vk
ZWUxMWFhYzExZjY0ODRhNzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNjYmJkMjhkODAzMWRhOGEx
N2VlMDUzNzIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgK
QEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBQdXRCeUlu
ZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJ
bmRleEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUluZGV4KTsKIAotICAgIHVz
aW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlv
blB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIE1FVEhP
RF9UQUJMRV9FTlRSWShkZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2luZyBEZWxldGVQcm9wZXJ0
eUJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xv
bmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHAKaW5kZXggOTZhMzYzNWU2ODI3MzkzZWU4MzZkODA0Nzc3MjRhMjVkNTQ2YzI2
MS4uZjY5OTllNzM0ODRlMmFiZDg4MTQ1NGYxMTQ4MzEwYzAyZDRmMmE3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0yMjAs
NyArMjIwLDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmEKICAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9v
bCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBDbG9uZWRBcmd1
bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50
cyo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyOSw3ICsy
MjksNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8fCBpZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJp
YWxpemVTcGVjaWFsc0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAgICAgCi0gICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOwor
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50LCBzbG90KTsKIH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBpZGVudCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuaAppbmRleCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQwYmEwY2FkMTU3NjA1ZmY1
Li4wMGM1MzQ3NTYwNWE3M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNzIsNyArNzIs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wg
cHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lhbHNNYXRlcmlhbGl6ZWQo
KSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJhOTM1M2U3
ZDc1MjFhODc5YmQxMmQ3NDAwNjkuLjFkZTgyMzk1MDllMGM4ZDdhNTZhMzI0MTRmZmU4YTc0YTli
NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtOTg1LDcgKzk4NSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWxfYnlfdmFsKQogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENI
RUNLX0VYQ0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERl
bGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIENIRUNLX0VY
Q0VQVElPTigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGVsZXRlUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWxldGVQcm9wZXJ0eVNsb3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWQ2ZjZiNDgwMGVmNTc4NTYxY2FlZGM5
ZGRiYmM4MmYyNTMyZTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisKK25h
bWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90IHsKK3B1YmxpYzoK
KyAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgVW5jYWNoZWFibGUsIERlbGV0ZUhpdCwgQ29uZmln
dXJhYmxlRGVsZXRlTWlzcywgTm9uY29uZmlndXJhYmxlIH07CisKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3QoKQorICAgICAgICA6IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCisgICAgICAgICwgbV9j
YWNoZWFiaWxpdHkoQ2FjaGluZ0FsbG93ZWQpCisgICAgICAgICwgbV90eXBlKFVuY2FjaGVhYmxl
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZU1pc3MoKQorICAgIHsK
KyAgICAgICAgbV90eXBlID0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsKKyAgICB9CisKKyAgICB2
b2lkIHNldE5vbmNvbmZpZ3VyYWJsZSgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBOb25jb25m
aWd1cmFibGU7CisgICAgfQorCisgICAgdm9pZCBzZXRIaXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV90eXBlID0gRGVsZXRlSGl0OworICAgICAgICBtX29mZnNldCA9
IG9mZnNldDsKKyAgICB9CisKKyAgICBib29sIGlzQ2FjaGVhYmxlRGVsZXRlKCkgY29uc3QgeyBy
ZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBtX3R5cGUgIT0gVW5jYWNoZWFibGU7IH0KKyAgICBib29s
IGlzRGVsZXRlSGl0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERlbGV0ZUhpdDsgfQorICAg
IGJvb2wgaXNDb25maWd1cmFibGVEZWxldGVNaXNzKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IENvbmZpZ3VyYWJsZURlbGV0ZU1pc3M7IH0KKyAgICBib29sIGlzTm9uY29uZmlndXJhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IE5vbmNvbmZpZ3VyYWJsZTsgfQorCisgICAgUHJvcGVy
dHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29m
ZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkKKyAgICB7CisgICAgICAg
IG1fY2FjaGVhYmlsaXR5ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBD
YWNoaW5nQWxsb3dlZDsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2Fj
aGVhYmlsaXR5VHlwZSBtX2NhY2hlYWJpbGl0eTsKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBmMTgyMWQ1NTZhM2Q0MDQ0OTM2NzVlYWUyNWZhMmU0
NjY3M2VjNDNhLi42ODVjN2FjYmMxMWM2MmQyMzM3N2QzMmM0ZGU5YTIwYjY1ODc4YThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNw
cApAQCAtODcsNyArODcsNyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TgogICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIH0KIAotYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9y
Q29uc3RydWN0b3IqPihjZWxsKTsKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVj
dG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJh
Y2VMaW1pdCkKICAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJh
Y2VMaW1pdChXVEY6Om51bGxvcHQpOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFz
ZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAppbmRleCA5M2Q1MjcxNDg2ZjY2ZmRlNzUz
ZTQ5YTQwMTZmMTY4MzhlOTc1NzIxLi45YTVhNDYzMjFiM2RiYjc2NGMyYTFiNTIxZDkyNjhmOGQx
NDM1MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5oCkBAIC00OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgRXJyb3JQcm90b3R5cGUqKTsKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKIAogcHJpdmF0ZToKICAgICBFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4
IGZkNDhiYmYzNGMzMDQzMGQyZTcwZGU1NzQ5OGU5YjUxZTZhYzI0NGQuLjFkNTBjZDE3NGZjNDdk
OTIyMTcxODhlMzI1ZmY1N2FlOGQxNWI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBib29sIEVy
cm9ySW5zdGFuY2U6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZQogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvckluc3Rh
bmNlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVycm9ySW5zdGFuY2U6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBFcnJvckluc3RhbmNlKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEVycm9ySW5zdGFuY2UqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5t
YXRlcmlhbGl6ZUVycm9ySW5mb0lmTmVlZGVkKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggZjFm
YWM1OTY4MmQ5ZTAyNjUwOGNiNGZmOGM5YjI2N2I0ZWU3NmU4Ny4uNDAwNjA4ZDA4YTgzNGNkMzFl
NjEyZTczYWI1MzFjYjBhM2NhMTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuaApAQCAtOTksNyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3Rh
dGljIHZvaWQgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHZvaWQgY29tcHV0ZUVycm9ySW5mbyhWTSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRz
LmgKaW5kZXggY2UxMGY3ZmU0ODczZTRhNDdiZTE0MWUyNTU2OWFkNjQ4YWZmOWQyOC4uNDcxMjE2
NzMwMzY0ODI4ZmUyNzcwZTIzNDg2OWFjZTcwOTA4ZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNTAsNyArNTAsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwog
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRl
eChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggYjgzN2VjMWJiNDMwZjZkNThiMWQ1YjExNWRhNTEz
YzViY2MwYmY1My4uYTVhOWVjYjMyMmEyMGRhOGZlMjQzM2ZmZDU0N2E3OGFmYzYwMmNmNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1l
bnRzSW5saW5lcy5oCkBAIC0xMzksOCArMTM5LDEwIEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxU
eXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
CiAgICAgICAgIHRoaXNPYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwg
dmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVu
dCwgdmFsdWUsIHNsb3QpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1
bHQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMTU4LDcgKzE2MCw3IEBAIGJv
b2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1ib29s
IEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBHZW5l
cmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwp
OwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSw3ICsxNzcsNyBAQCBi
b29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KGlkZW50KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBH
ZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCAqaW5kZXgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
QmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApp
bmRleCAwMzQ4N2Y2MWUwZjJmYzc1MWJhNzAzYjcwY2EzNmQwMjIyMTYzNGRlLi42MDFmMWU0OWYx
NWNkNTAxYTBlMGE3NWVlMjg1MDZmMzJiMGRiM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQsIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpIHsgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgV3Jp
dGVCYXJyaWVyPEpTT2JqZWN0PiBtX2dldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAKaW5kZXggNmQwNzU5MTcxMWVlZGJjMjhlMGU0ZGE3ODQ5ODIyYWI4ZDY2
ZjVkMS4uYmNlMzY1NWEzMTkyZWEyOTBmZTdmMDQwODI0YTM4ODZmNmIwNDgzNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBi
b29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNP
YmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKIH0KIAotYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
Citib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBK
U0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKQEAgLTMxNCw3ICsz
MTQsNyBAQCBib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogc3RhdGljIGlu
dCBjb21wYXJlS2V5c0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggMzExNjViNWZmNDkyNTRjYzFh
NmM0NzkwMmI3OTEwYWM0YTdkOWJmZi4uY2RjMzliNTEyZDdlZTNhMTVjZjFhZWMyZTBhMmQ5M2Q5
YWFhZDBmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTgy
LDcgKzE4Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCmluZGV4IGZlMDE4MGRkNjBjM2QxYmI2MGY4YjUzM2IxODYwNThlZWFkODFi
NzUuLjU4NmFmM2ZhYjM3OTUyZTNmZGUxY2U0NzBjOTlhYjFlZGM0YTc0MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CitjbGFzcyBEZWxldGVQcm9w
ZXJ0eVNsb3Q7CiBjbGFzcyBKU0JpZ0ludDsKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2Vs
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI3MTM1MmIy
MTc0NzAzNTZkZjQwM2ZkZDljZGU2MGRlZjg4ODE2MDcuLjBlNjdmODY2NzZkNTg2NWFhODhmMDRm
MzVhZGE3NDMyMWUwMmNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcApAQCAtMTI2LDEwICsxMjYsMTAgQEAgYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGUKICAgICBy
ZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9v
bCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgaWRlbnRpZmllciwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKIH0KIAog
Ym9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDY2NWQwODg5Y2Y0NDYxYzNhYjBhMmFmNGIwN2M2
YTU4YzkwNDIxYzQuLjA2MmU4M2RiMzlhYjM0YTZlZjRmZGEzNmZmYTUwZTRjMTExZDk3MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xODAsNyArMTgwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgIGJvb2wgcHV0SW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUp
OwogCiAgICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
RUNNQU1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNw
cAppbmRleCAxNDZhOTEzMmQ0NzM1MjQyYzEwNmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIz
Yzk4ZmJiMDllMzdmOGE0NzQzMTliZjc2YzMyZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNE
YXRhVmlldzo6ZGVmaW5lT3duUHJvcGVydHkoCiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRl
UHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAg
LTE2MCw3ICsxNjAsNyBAQCBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAg
ICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiB2b2lkIEpTRGF0YVZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFk
N2U5MWQ4MmE2N2U5N2VmYmI0ZjMyZjFiYzEyZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1
N2Y2NTVlNmNjN2I5ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oCkBAIC03Miw3ICs3Miw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggY2Q2ZWMx
NWVlMDlhOWYzNGNhZjJmMjk0MDBmYzk2ZDlhNTlkNGRiYy4uNDM0NmFhYWVlYjZhOGVmNWY1MzI4
NWUxZDVhYjZmNzcyMTFhOTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVu
Y3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQog
ICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGFkZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5
Y2ExZmZhY2QuLjE4YWI0NzU0M2ZkNzgyOTc4YWZlYTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzks
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgKaW5kZXggZjA4Zjg1MjQ2OWJlZmQ2YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3
YmJkZTc2NWNlMWMzNTY1NTBlY2Q1OGI3N2ZlZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBA
IC0zMDUsNyArMzA1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCAwY2FmYmQyNzZjZjc0ZDBjODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi41OGZi
YjU3NTYyYjcxMDA3OWU2NTE0MGY3ZTA5ZTcwODA0OGZhMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtNDM4LDcgKzQzOCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmRlZmluZU93blByb3BlcnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVy
dHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAg
aWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTQ4NCw3ICs0ODQsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2Vs
bCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVh
MTI0MGE1NjZjNWQ0YTE4YTkyODcxZjdlLi4wZjg5MDMwMGJlYjc4NGM3MTc5YTg3M2ZhY2ZjYjJh
ODRkMGM5ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0xMzE0LDcgKzEzMTQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojph
ZGRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmNwcAppbmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4
NzEzLi45NzRiOTJiNTRlMWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
Y3BwCkBAIC0xMjcsMTMgKzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJl
dHVybiB0aGlzT2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVu
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVu
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmgKaW5kZXggZDAxM2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVl
NGU2NWMyZGQ0OTNmZjdhNGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAs
NyArMTEwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAg
ICBERUNMQVJFX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNh
YTk0ODAwYjcyOWY3YzczZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgz
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1l
bnQ6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9k
dWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1
bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBi
b29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpS
ZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmly
b25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25t
ZW50LmgKaW5kZXggZGFlYWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEz
MGY4N2ZiOThiYjJhODJkYWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50
KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAKaW5kZXggMmJkYjEzMDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEy
NjViOGNhNjVhZDExOTAyZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApA
QCAtMTk5LDEyICsxOTksMTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1u
YW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwp
OwogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2Jq
ZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oCmluZGV4IDhlZWY2MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2
NGRkMTdhMTNlN2VmYmZjZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFk
ZWI4MzNmOWNiMDFlMmJmMzIxYjA2ZWQ0MTk2YzkuLmVkYTJkNjIzNTA5OWVkMzAxYmIwYWUxMTQ1
MTRmMzJlMTU0Y2I2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCkBAIC03NTksOSArNzU5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtl
cjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3Qob2JqZWN0KTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUg
PSBjYWxsUmV2aXZlcihvYmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFs
dWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVj
dCwgbV9nbG9iYWxPYmplY3QsIHByb3ApOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVj
dCwgcHJvcCwgc2xvdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwg
cHJvcCwgZmlsdGVyZWRWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGFjZDI5
ZGVkODEzNTFmYjI4NGIyMTU5YWQ0N2E2MzFjMzQ5NGYxZGYuLjM0NzMyZTFjMmJmMzZmZTVkNzk3
N2MxYmRlMjVjZGFlZDYzYWM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3Bl
cnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0
CiB9CiAKIC8vIEVDTUEgOC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQorYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CkBAIC0xOTk5LDggKzE5OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJv
b2wgcHJvcGVydHlJc1ByZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsK
LSAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAm
JiB2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5v
bmNvbmZpZ3VyYWJsZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAg
ICAgICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVk
V2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVyCiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10gKGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92
ZVByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwg
JmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1f
YnV0dGVyZmx5ICYmICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVy
ZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0
SGl0KG9mZnNldCk7CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAmJiB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYm
ICFzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0
aGlzT2JqZWN0LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmVJRCgpLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlk
T2Zmc2V0OwogICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09
IGludmFsaWRPZmZzZXQpOwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXIKIAogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAg
ICB0aGlzT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0K
KyAgICB9IGVsc2UKKyAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwMzAsOCArMjAzNSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIAotICAgIGlmIChpID4gTUFY
X0FSUkFZX0lOREVYKQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b20odm0sIGkpKTsKKyAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tKHZtLCBpKSwgc2xvdCk7CisgICAgfQogICAgIAogICAgIHN3aXRjaCAodGhpc09i
amVjdC0+aW5kZXhpbmdNb2RlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UzoKQEAgLTM2MjUsNyArMzYzMiw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVz
Y3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBB
IGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkgY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlw
dG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9y
KSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3Qs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGlu
Z0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgICAgICB9CkBAIC0zNjQxLDcgKzM2NDks
OCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAg
IHJldHVybiBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJl
bnQpLCBjdXJyZW50KTsKICAgICB9CkBAIC0zNjY1LDcgKzM2NzQsOCBAQCBib29sIHZhbGlkYXRl
QW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3Qp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50
KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CkBAIC0zNzE4LDcgKzM3MjgsOCBAQCBib29sIHZh
bGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqCiAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsKIAotICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOwogICAgIHVuc2lnbmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJp
ZGluZ0N1cnJlbnQoY3VycmVudCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0
cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAppbmRleCBlYzYzMDBlYTliOTcyY2U5YmEwZmFkODE4MjU3YWZiMjBkODJhMmVkLi42OTNiZGJi
OTk3ZDY0NDIwODA2NTFjMjdlZGRlN2IwODhhMTQxNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0lu
Zm8uaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRy
aWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNp
bmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDYXN0LmgiCkBAIC02MjMsNyArNjI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJv
b2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5
LmNwcAppbmRleCA5YzQ3OTM0ZTRhM2Q5MTk5ZmE5ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJi
YzJjNWEyZDIyMTkxMjdjZDk5YjMwMjA5MzA4ODcyMTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94
eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxl
KGdsb2JhbE9iamVjdC0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cp
OwogfQogCi1ib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2Vs
bCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxP
YmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9v
bCBKU1Byb3h5Ojppc0V4dGVuc2libGUoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRl
eCAzNTFlNjY4ZDI1OTBkOWI5N2M4ZjRiYmEyYmZmYjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4
YjMyYzc5NGMwYjI1ODk1Nzk4ZmM1ZjllZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm94eS5oCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuY3BwCmluZGV4IDYzMGUxYjc4YmIyMDZlN2FmNjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEy
NWY2YzMxNTBlOTZhZWNkNTM3NDczMWZkYThkOWE3YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00
NCwxMyArNDQsMTMgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9zeW1ib2xUYWJsZSk7CiB9CiAKLWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFi
bGVPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29u
dGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFi
bGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2
OGVlNjNkZWQ5OGIzMzVkZjczNmIyMS4uYjU2OGU4ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0
ZmU1OTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9
CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAg
ICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSlNTeW1ib2xUYWJsZU9iamVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUy
MDIyMWE4MTU5OGZmZWYyYTVlMTRhODBmZDRlNTRkYzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2
ZjQxMTA2ZWVlZTllNWY5MGM2NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCkBAIC02ODUsMTIgKzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVy
Zm9ybURlZmF1bHREZWxldGUgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0
YXJnZXQgPSB0aGlzT2JqZWN0LT50YXJnZXQoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0
aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRh
YmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnBlcmZvcm1EZWxldGUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0
RGVsZXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
CmluZGV4IDE3Y2EyOWZiMGEzZmRkYmE3MWViNjgyNDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1
OGNmYTgxOGE0Njc0YTUyMmJmNjBhMmNhMDllYWMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGlj
IENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7
Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRl
bnNpb25zKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4
dGVuc2libGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5
N2ViOTNhMDljMDA0ODFhNTE1MzgyNy4uMWNlMWI0YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdk
NjdhMmViYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCkBAIC03MSwxMiArNzEsMTIgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBy
ZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxh
c3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5
NDI2MzcxOTFhODlmMGI3Yzk2YzVmYmI3MTQuLjg1N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2Ew
N2VkODNlMGIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFu
ZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0gKG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RX
cml0YWJsZUZsYWcgfCBsYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3Rp
dmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3Rp
dmF0aW9uLmNwcAppbmRleCA1MTU3NTI3NjVlY2IwMmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3
Li41MWRiYzY3YzU3ZjgxNTYxZmE3OGQxOTRlZmFmMDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZh
dGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wg
U3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdl
NWZhN2IxMDk2YjI2ZDE4NzA3NGNiZjE3ZWI4M2MyOS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5
YjhmZTBmZGJiN2ExMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHNjb3BlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmNwcAppbmRleCA0NzdiOWNhZmIzZmEwMDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZl
Li40ODZkZDkyNzNiNzUwNThhNDdmNzY5YTNmY2Y4Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUs
NyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJv
b2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRl
cm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUy
NTBhY2IzYTNlNGRhMzUyZjIyNzg2NTIzLi42OWYyNmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3
ZmFmY2Y4ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAppbmRleCBlZGE0NDZiZmJlMjY3YWIwMWI4NTJlMTVmZGU5YzljMzBlNmY1
OGU2Li41MjA1ZGQ3MzgxY2MzMTVjODExNjM1NTBhYTFkY2EyMTlmMzVmY2ZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTU0MCw4ICs1NDAsNyBA
QCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVy
cmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0
KTsKICAgICBpZiAobmV3U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwog
CkBAIC01NDksMTYgKzU0OCwxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2
bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlKikKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9m
ZnNldCYgb2Zmc2V0KQogewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKICAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNT
RVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAKLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwot
ICAgIHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAg
Y29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IGZhbHNlOworICAgIG9mZnNldCA9IGludmFsaWRP
ZmZzZXQ7CiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJl
LT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBp
c0FkZGl0aW9uKSkgewogICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24t
PnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgp
KTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0
KCk7CkBAIC01NjgsMTEgKzU2NCwyNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFT
U0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwor
ICAgIHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmli
dXRlcyk7CisgICAgcmV0dXJuIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7
Cit9CisKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9t
RXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKKyAgICBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0
eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMpOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
c3RydWN0dXJlLT5tX2xvY2spOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25G
cm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBvZmZzZXQpOworfQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVy
dHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJh
bnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVy
ZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNP
YmplY3QoKSk7Ci0gICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bkZyb21FeGlzdGluZ1N0cnVjdHVyZSh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNl
dCwgZGVmZXJyZWQpKTsKKyAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQpKTsKIAogICAgIGludCB0cmFuc2l0aW9uQ291bnQgPSAwOwogICAgIGZvciAoYXV0byogcyA9
IHN0cnVjdHVyZTsgcyAmJiB0cmFuc2l0aW9uQ291bnQgPD0gc19tYXhUcmFuc2l0aW9uTGVuZ3Ro
OyBzID0gcy0+cHJldmlvdXNJRCgpKQpAQCAtMTIwMyw3ICsxMjE1LDcgQEAgUmVmPFN0cnVjdHVy
ZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSwgYm9vbCYg
c2F3UG9seVByb3QKIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIHsKLSAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSwgIiwgeyIpOworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsi
LCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkKCkpKSwgIiwgIiwgY2xhc3NJ
bmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwogICAgIAogICAgIENvbW1hUHJpbnRlciBjb21tYTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNTJj
ZDNjNzFkOTIwZjJmOGE5N2I0NjBiOTBlMGVjNzBkNWQ3MTFhZi4uYWUyMGFlOTZiYTQwMzJmNmFh
MWY5NGJlM2MxNzRiNzYzYzczZmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgog
I2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNs
b3QuaCIKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xOTEsNyArMTkyLDggQEAgcHVibGljOgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5l
d1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBu
dWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24o
Vk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAgc3RhdGlj
IFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
KFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGlj
IFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
Q29uY3VycmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3Ry
dWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSog
YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERl
ZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwpAQCAt
NDc3LDYgKzQ3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRleGlu
Z0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRleGluZ0hl
YWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCkBA
IC03MTYsNiArNzE5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRy
YW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZUltcGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
cm9wZXJ0eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0dXJl
IHRoYXQgaGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxlLAog
ICAgIC8vIGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUg
d2UgZ290IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdmNzE0YzA1YjE1
M2UwODEzOWU0OTFjZDhjZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUyMzIyYTQ2MDE3
NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oCkBAIC0yMjQsMTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0lu
ZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBpZiAoIWlz
VHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1
ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAoraW5s
aW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNr
Q2VsbCkgY29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYgKGhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgp
KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0cnVlOwor
ICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9iamVj
dCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKaW5kZXggZGZmMWRmMTlhYzg0YTllZDM2NGI1OTdkNWRkOWQwNDFiZWM0
NzhiMy4uZGFhYWNiMTRkZmMwYWM1YWY2NDEwODRhMTg5YjY2MmUzNTI0N2NkYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiAgICAgewogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTI4MjgsNiArMjgyOCwxNSBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldENvbmN1cnJl
bnRseShKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25I
YXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAg
ICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rp
b24qPih2bSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihm
dW5jdGlvbi0+YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFsKHZtKSkpOworfQorCiB2b2lkIEpTRG9s
bGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3Bl
IGFzc2VydFNjb3BlOwpAQCAtMjk1OSw2ICsyOTY4LDggQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRTdHJ1Y3R1cmVUcmFu
c2l0aW9uTGlzdCIsIEpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNp
dGlvbkxpc3QsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0Q29uY3VycmVudGx5IiwgZnVu
Y3Rpb25HZXRDb25jdXJyZW50bHksIDIpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJoYXNPd25M
ZW5ndGhQcm9wZXJ0eSIsIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHksIDEpOworCiAgICAg
bV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNs
b3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dURi93
dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4MWYwMDIzMTQ2ODQzMmZh
Y2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcwZWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVt
LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkKGNvbnN0IFQm
IGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
cihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9
IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIAog
ICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgeworICAgICAgICBM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21h
cC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIAotICAgIGl0ZXJhdG9y
IGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIHsg
cmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgog
ICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVz
dC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlzdCgpIGNvbnN0CiAgICAg
eworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFZlY3RvcjxLZXlBbmRD
b3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdGVyID0gYmVnaW4oKTsg
aXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoS2V5QW5kQ291
bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsxMDcsMjMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVhcigpIHsg
bV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5jbGVhcigpOworICAgIH0KICAgICAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3Vu
dGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOwogICAgICAgICAg
ICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwog
ICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIwNTA2ZjhlY2Zh
YzY1M2U1NWFkMDQ4MWRkYTU2MGY1ZmQ3MmE1NGQuLmY3YTg5NTU3ZWQ1NmFjZWY5MTNhNGExZjZk
NzI0Njc1MmUxNGNkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxNCwxMyArMzE0LDEzIEBAIGJvb2wgSlNET01XaW5kb3c6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdp
bmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01XaW5k
b3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBm
cmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3Qt
PndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCAxZWYwNmMyNmVlMjUyZGU2NjhjMWRlZGU5MWM1ZGRmNmEwZGRmZGU1Li44NGI5YTEzZTE5
ZWExODlkZjMwNzQ3NjA2NWRkMzczZTUxZTRmNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTYzLDEzICsxNjMsMTMgQEAgYm9v
bCBKU0xvY2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIHUKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2Vs
bCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAK
LWJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJh
bWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAogYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVE
T01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVE
T01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGUyZWVkZmQ1YjBjNWFhNzE4NzBkYTc2NTQzOTdlMzVi
OTlhODJjYWMuLjBjYjY3ZWYyOWM2MmJmOGNjNDQ2YTBlY2UzMWM5ZmU1MzUxNTdhNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1
c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6cHV0QnlJ
bmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZkNzIxYThk
Zjg3ODIyNjUzMzQ3ZGUyZjgyYmEyNTUyMjVlYzU5NzYuLmE3ZjI5OGNiYTQzZmViNzgwNTg3MzNi
MTBjYTk1ZDAwN2JmMGNjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBzdWIgR2VuZXJh
dGVEZWxldGVQcm9wZXJ0eQogICAgICMgVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vaGV5Y2FtLmdp
dGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVsZXRlIGZvciB0aGUKICAg
ICAjIGZvciB0aGUgZGVsZXRlUHJvcGVydHkgb3ZlcnJpZGUgaG9vay4KIAotICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFt
ZX06OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PCR7Y2xhc3NO
YW1lfSo+KGNlbGwpO1xuIik7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdWIgR2VuZXJhdGVEZWxl
dGVQcm9wZXJ0eQogCiAgICAgIyBGSVhNRTogSW5zdGVhZCBvZiBjYWxsaW5nIGRvd24gSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5LCBwZXJoYXBzIHdlIHNob3VsZCBpbXBsZW1lbnQKICAgICAjIHRo
ZSByZW1haW5lZCBvZiB0aGUgYWxnb3JpdGhtIG91cnNlbHZlcy4KLSAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIn1cblxuIik7CiB9CiAKQEAgLTI2OTYsNyArMjY5Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KCRpbnRl
cmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpO1xu
Iik7CiAgICAgfQogCkBAIC00MzI0LDcgKzQzMjQsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwi
JG5hbWVcIikpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtNzUwNyw3
ICs3NTA4LDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFs
U3RyaW5nfSkge1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CiAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7XG4iKTsK
KyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
O1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggZmVlYmRlZjdiYzQ1
ZTk4YzkzMDhmZGZiZGUxMTBiOTlmZGRkY2EyYy4uMzJjMTNiOWViNDA3MDgzNWViMjU4MzcxOTZk
NzgzMjU4YWM1OTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0z
OTEsOCArMzkxLDkgQEAgYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5KE5QUCwgTlBPYmplY3QqIG8s
IE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKGktPmlzU3RyaW5n
KCkpCi0gICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllckZyb21OUElkZW50aWZp
ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG9iai0+
aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBpLT5zdHJpbmcoKSksIHNsb3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmlt
cC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgob2JqLT5pbXAsIGxleGlj
YWxHbG9iYWxPYmplY3QsIGktPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDIyZjBiOGQ5ZDhmYWU0YTc5YzZiNjMxZTkz
NWNiNmFkYzdkOTRmZmYuLmRiYzZkM2IxZTE5ZjljMjFkOWI2MGMxN2VkZmY5NzE2MDA2N2MwNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAg
LTQ1Nyw4ICs0NTcsOSBAQCAtICh2b2lkKXJlbW92ZVdlYlNjcmlwdEtleTooTlNTdHJpbmcgKilr
ZXkKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
IAotICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxm
IF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBT
dHJpbmcoa2V5KSkpOworICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBTdHJpbmcoa2V5KSksIHNsb3QpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUobGV4aWNhbEds
b2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmlu
ZGV4IDVlZDIxZjEzNGVmNGFhYjVkYzBjNTVhNDVkZTZhNjNkMjdjNmJlMmUuLjYyMjk2MzY4ZWJi
OTBjNTBiOWRlN2ZhMDc4MmM5YzZmYTI4NTkxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICBib29sIHRvQm9vbGVhbihKU0ds
b2JhbE9iamVjdCopIGNvbnN0OyAvLyBGSVhNRTogQ3VycmVudGx5IHRoaXMgaXMgYnJva2VuIGJl
Y2F1c2Ugbm9uZSBvZiB0aGUgc3VwZXJjbGFzc2VzIGFyZSBtYXJrZWQgdmlydHVhbC4gV2UgbmVl
ZCB0byBzb2x2ZSB0aGlzIGluIHRoZSBsb25nZXIgdGVybS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCAxOWVkMTljYmM3YWUzZWU0Njc3OTZiMTAzY2Jm
ZTc2MTYwOWFkNzMwLi42ZTg3N2QyZWI3ZjQ0ZDAzYTI4ZTE3MTA4M2JkM2QwZjBiYjk4ODlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yOTAsNyAr
MjkwLDcgQEAgQ2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0Nl
bGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7
CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggNGQyOTdjNzBkNmIxYjZjMWFmODhm
OTE0YmU4NWY2MGRmMDNjYzliMS4uZWMzNTg4ZmM1NjU5NTUzZjUyNzI4M2M1OGE3MzU4MDIxMzI5
YWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtMTQ5LDcg
KzE0OSw3IEBAIGJvb2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRl
eCwgdmFsdWUpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFJ1bnRpbWVBcnJheTo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmgKaW5kZXggZmNmNWUzM2ZiMTE0MDE4NTEwNzk5MzBmYmQxMTc2MTM1
NDUyYzdlNi4uMjk4MTJhNjZkNmYwMTI0ZTM4MzYyNWY5NTYwMTljYTMzYmMzYmQ5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
ICAgICAKICAgICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5n
ZXRMZW5ndGgoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5k
ZXggYTAzNmI2NjYyZDQ4NzJmNjhkYzUyNjQ1YmExYWYyYmExNTMzMDMyZC4uOWQ1ZDYwZGVmMzU3
NTRiZTFlMGUwNjIwZTQxZWRiOThlZmUzOWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBSdW50
aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3Zl
IGEgcHJvcGVydHkgb2YgYSBSdW50aW1lT2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggNmNiZjdiZjc5NmIwYTg5NDA0Yjk0
MjI3NWQ2NTFlNjBlNzMyNDU4Mi4uM2MxMGQ4YmQ1MGYzYjdkYWE0ODQyMjE0YjllMDRmMDQzYWZk
ZjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUo
Y29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUp
OwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwog
ICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCAyZWZiMjI1MjNmOTIxZTkyYWJkMDIxNmVi
MGNkMWZmZDEwMDM2MmJlLi4wNWQxMjkyOTM5NTgyZjA0YzQzMmQzMGMxNDJkYmE1ZGFhMGJmMTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgSlNOUE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgcmV0dXJuIGpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCktPmRlbGV0ZVByb3BlcnR5KGxleGlj
YWxHbG9iYWxPYmplY3QsIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCmluZGV4IDg1NTg4OTQ5YTMwNjA0YzY5Zjc3Y2NjM2Y2MGU1NDY5Nzdm
ZmFjNmQuLjQ4MDNjMGJjNTcxZjk3N2RkYzI3MjJiYmFiOTZiNmQyN2MyYTljNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAg
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCosIE5QSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAzNmYyOGVlNmZiMDEwMmQ4YzE3NzEz
YzYwOGI2MTRlYWY4NWRkYjc2Li44YjlmY2RmMzA4NTJkMWQyMjJhNWIzYmQ1OTA2ZGE0YmFmZTQz
YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMjI5LDggKzIyOSw5IEBAIGJvb2wgTlBKU09iamVj
dDo6cmVtb3ZlUHJvcGVydHkoTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRp
Zmllcik7CisKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIG1fanNP
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgc2xvdCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKCFtX2pzT2JqZWN0LT5oYXNQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
ZGVudGlmaWVyUmVwLT5udW1iZXIoKSkpIHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAz
MmFmYTI4MGZhOTI3ZDg3NzMyMGViODFjYmQ5MDcxMDI1NTk3ZS4uMTJjZTQwOWM1NDNjMjI4ODIy
NzcxOWIyZDQxMDhiZjJhODc5ZDQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQpAQCAtMTE0MSw4ICsxMTQxLDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OnJlbW92ZVByb3BlcnR5KHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGkK
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworCisgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmOWUxMWJk
NDc5YmExNTA0NzQ4ZjU4M2JhNmZhMzEyNWUzNzg0NTMxLi5jYTdhNTE5Yjk0Y2FiNjhjYmUwN2Uy
M2IyOGE4ODBkZjlhMTEzZjMwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAyLTEwICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUg
ZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNlbGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlu
bGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAobm9Jbmxp
bmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lu
bGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZh
bCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAg
ICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVk
LgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3Nl
cnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9J
bmxpbmUuYXNzZXJ0X25lcS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAgICAg
ICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25l
cS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5
VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2Fj
aGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RD
YWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURl
bGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVF
bXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgICogbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzOgorICAg
ICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25l
cSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5l
LmFzc2VydF9uZXEudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChu
b0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURl
bGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6
CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJs
ZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlE
ZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4Lm1ha2VGb281KToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRl
SW5kZXgpOgorICAgICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhp
Y0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50
ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBo
aWNEZWxCeVZhbCk6CisKIDIwMjAtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFBsYWNhdGUgZXhjZXB0aW9uIGNoZWNrIHZhbGlkYXRvciBpbiBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoKS4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwppbmRl
eCA0OWEzMWI3ZjI0N2MxYmQwYWNhODJjYjIyZGYyMGU4ZjFiZjYxYmRkLi41NGJiYTgyZTY5OWM2
MmNjY2E4OTQ1MTZlNjJiN2U2Y2ExZjUxMjAyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKKysrIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWlu
LmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBT
ZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJlc3MtdGVzdC5weQorLy9AIHNraXAgaWYg
JG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICgh
YikKICAgICAgICAgdGhyb3cgbmV3IEVycm9yOwpAQCAtMjgsNyArMjgsNyBAQCBmdW5jdGlvbiBk
b1Rlc3QoelZhbCkgewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEw
MDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewogICAgIGNvbnN0
IFggPSB7IGkgfQogICAgIEMucHJvdG90eXBlLnogPSBYCiAgICAgZG9UZXN0KFgpCkBAIC0zNiw3
ICszNiw3IEBAIGZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7CiAKIGRlbGV0ZSBDLnByb3Rv
dHlwZS56CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMjAwMDAwMDsgKytpKSB7CiAgICAgZ2V0Wih7ejogaX0pCiAgICAgZG9UZXN0KHVuZGVm
aW5lZCkKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9w
ZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZiYWZmYWM5OGU1NjNkNWYzN2Y2ZWUyMDkwODVkNjQ4M2M5NjgxZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hl
LXBvbHltb3JwaGljLmpzCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRp
b24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3Nl
cnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYg
KGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiAr
IGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAg
IGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6
ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNz
ZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGlj
RGVsQnlWYWwoaSkgeworICAgIGZ1bmN0aW9uIG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9v
ID0ge30KKyAgICAgICAgZm9vWyJiYXoiK2ldID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAg
ICAgICBkZWxldGUgZm9vWyJiYXoiK2ldCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUobWFrZUZvbzYpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAg
fQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0g
YXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9l
cShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBp
biBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAx
KQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9J
bmxpbmUodGVzdFBvbHltb3JwaGljRGVsQnlWYWwpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMzAw
MDA7ICsraSkgeworICAgIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpCit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40OTkxMmRhNGJiYmFhZDA1MjFlNTUxMjVjOTA3ZTVmYjJjZGMxNGU0Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDE3NCBAQAorLy9AIHNraXAgaWYgJG1vZGVsID1+
IC9eQXBwbGUgV2F0Y2gvCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAo
IWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsg
Yik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0g
IiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJl
dyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAg
ICAgIHRocmV3ID0gdHJ1ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShh
c3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9Jbmxp
bmUoYXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7
CisgICAgZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAg
IGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBhcnJbal0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAg
ZnVuY3Rpb24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28u
YmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQor
ICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAg
YXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJs
ZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkg
eworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1
cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFy
cmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyAr
K2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9i
amVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28p
KQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAg
ICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9
IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3Nl
cnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9v
LmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFy
JywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNl
CisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNl
KQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBh
c3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQor
ICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25z
dCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAg
YXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJh
ZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1si
YnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQor
fQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmb3IgKGxldCBpID0g
MDsgaSA8IDIwMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAg
dGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVC
eUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2Vl
cHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwppbmRleCA3Nzk1ZGM1ODE1NzhlNGMzOTgxYzIyYWM4
NzZjNDU1NDEzZTY0ZDNjLi5hOTM5YWFlM2FjOGFjY2MyMjE0ZGQ3ZTdkODAyNDQyMWE4MTY0NWQ5
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2Vl
cHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwpAQCAtMjQsNSArMjQs
NSBAQCBmdW5jdGlvbiBkb1Rlc3QoKSB7CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxl
dCBpPTA7IGk8MTAwMDAwMDA7ICsraSkgZG9UZXN0KCkKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAw
MDAwMDsgKytpKSBkb1Rlc3QoKQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUt
cHJvcGVydHktaW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5
LWlubGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTBkYTAxMzE1OTExOWY2MDMwMGZkMTBlMjFj
YzFhNDhjZTc2YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXBy
b3BlcnR5LWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDQyMSBAQAorLy9AIHJ1bkRlZmF1bHQo
Ii0tdXNlQmlnSW50PXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAg
aWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxl
ZCIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0g
IiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0g
YikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIg
IT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQg
dGhyZXcgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW4oKQorICAgIH0gY2F0Y2ggewor
ICAgICAgICB0aHJldyA9IHRydWUKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KQorfQorbm9Jbmxp
bmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25v
SW5saW5lKGFzc2VydF90aHJvd3MpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlk
KCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAg
ICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9v
LmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisK
KyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyAr
K2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAg
ICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1si
YnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgewor
ICAgIGZ1bmN0aW9uIG1ha2VGb28yKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAg
Zm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6
Il0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKwor
ICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsr
aikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAg
ICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1si
YnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9Cisg
ICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9l
cShkZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAg
cmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5l
dyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBhcnJbal0gPSBtYWtlRm9vMygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9l
cShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4g
Zm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9
IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0g
PSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0K
K30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsK
KyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5i
YXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAg
YXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRl
IGZvby5iYXosIHRydWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zv
b2JhcicsIHsKKyAgICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBm
YWxzZQorICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBm
YWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAg
ICAgYXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAg
ICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0
KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZv
by5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChm
b29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
IH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKworZnVuY3Rpb24g
dGVzdERlbGV0ZUluZGV4KCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb281KCkgeworICAgICAgICBs
ZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAg
ICAgICAgZm9vWzBdID0gMjMKKyAgICAgICAgZm9vWzFdID0gMjUKKyAgICAgICAgYXNzZXJ0X2Vx
KGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvb1sxXSwg
dHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0K
KyAgICBub0lubGluZShtYWtlRm9vNSkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9v
NSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNz
ZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0
KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2Vy
dChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBhc3NlcnRfZXEoZm9vWzBd
LCAyMykKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgdW5kZWZpbmVkKQorICAgICAgICBmb29b
MV0gPSAxCisgICAgICAgIGFzc2VydF9lcShmb29bMV0sIDEpCisgICAgfQorfQorbm9JbmxpbmUo
dGVzdERlbGV0ZUluZGV4KQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7
CisgICAgZnVuY3Rpb24gbWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAg
ICBmb29bImJheiIraV0gPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBm
b29bImJheiIraV0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtl
Rm9vNikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAgfQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltq
XQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2Jq
ZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9v
KSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAg
ICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9
PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lu
bGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCkKKworZnVuY3Rpb24gdGVzdEJpZ2ludERlbGV0
ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb283KCkgeworICAgICAgICBsZXQgZm9vID0g
e30KKyAgICAgICAgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBu
XSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1sxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbl0KKyAgICAgICAgcmV0dXJuIGZvbworICAg
IH0KKyAgICBub0lubGluZShtYWtlRm9vNykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtl
Rm9vNygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQor
ICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFz
c2VydCghKDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5l
KHRlc3RCaWdpbnREZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdFN5bWJvbERlbGV0ZUJ5VmFs
KCkgeworICAgIGNvbnN0IHN5bWJvbCA9IFN5bWJvbCgnZm9vJyk7CisKKyAgICBmdW5jdGlvbiBt
YWtlRm9vOCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0g
MQorICAgICAgICBhc3NlcnQoIShTeW1ib2woJ2ZvbycpIGluIGZvbykpCisgICAgICAgIGFzc2Vy
dChzeW1ib2wgaW4gZm9vKQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9v
W3N5bWJvbF0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9v
OCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vOCgpCisgICAgfQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQor
CisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0
LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQor
ICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAg
ICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0U3ltYm9sRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RPYmpEZWxldGVCeVZhbCgpIHsK
KyAgICBjb25zdCBzeW1ib2wgPSB7IGk6ICJmb28iIH07CisKKyAgICBmdW5jdGlvbiBtYWtlRm9v
OSgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0gMQorICAg
ICAgICBhc3NlcnQoc3ltYm9sIGluIGZvbykKKyAgICAgICAgYXNzZXJ0KCEoeyBpOiAiZm9vIiB9
IGluIGZvbykpCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9s
XQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb285KQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb285KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhm
b28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAg
IGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1si
YnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RPYmpE
ZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdFN0cmljdCgpIHsKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vMTAoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAg
ICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEo
ZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwg
dHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgewor
ICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAg
ICAgIH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBmb28uZm9vYmFyKQor
ICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzEwKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQor
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1h
a2VGb28xMCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAy
KQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0T3ZlcnJp
ZGUoKSB7CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IGZ1bmN0aW9uKCkgeyB9CisgICAgICAgIGFz
c2VydF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJvcGVydHkoYXJyW2pdKSwgdHJ1ZSkKKyAgICAgICAg
ZGVsZXRlIGFycltqXS5sZW5ndGgKKyAgICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNPd25MZW5ndGhQ
cm9wZXJ0eShhcnJbal0pLCBmYWxzZSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAx
KQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiAr
IGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9J
bmxpbmUodGVzdE92ZXJyaWRlKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgewor
ICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlW
YWwoKQorICAgIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkTWlzcygpCisgICAgdGVzdERlbGV0ZUluZGV4KCkKKyAgICB0ZXN0UG9seW1v
cnBoaWNEZWxCeVZhbChpKQorICAgIHRlc3RCaWdpbnREZWxldGVCeVZhbCgpCisgICAgdGVzdFN5
bWJvbERlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0U3RyaWN0KCkKKyAgICB0ZXN0T3ZlcnJpZGUoKQor
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390837</attachid>
            <date>2020-02-14 17:05:36 -0800</date>
            <delta_ts>2020-02-14 17:26:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200214170535.patch</filename>
            <type>text/plain</type>
            <size>213559</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YzJmNGNhYjRhNTA3ODRkOGJhZmI3MDJkNjRlNjNiMDRmYWM0MGJlLi45ZjQ2MDM0YTMwM2Y3NjJl
NTAzYWI5NDFiZWNjNzE4NTVkZmQ3OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsIGluIGJh
c2VsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBhZGQgaW5saW5lIGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5
LiBXZSBhbHNvIGZpeCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3Rp
bmcuCisgICAgICAgIFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29k
ZSBpcyBlbWl0dGVkIGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hl
ZCBkZWxldGUgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlz
IGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3Rz
LCBidXQgc2hvdWxkIG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0
aW9ucyByZXF1aXJlZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11
c3QgY2hhbmdlIGFuZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhp
cyBnaXZlcyB0aGUgZm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAg
ZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAg
ICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkg
MS4yOHggZmFzdGVyCisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1v
cnBoaWMgIChuZXV0cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUt
Y2hhaW4gICAgICAobmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAg
ICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9w
ZXJ0eUZvcktleSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpj
cmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRl
KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNo
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5
Q2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBj
b25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NDYXNlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFn
YXRlVHJhbnNpdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
bmV3U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNj
b3BlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5o
OgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVE
ZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURl
bGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAg
ICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6Omxpbmsp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlW
YWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJh
dGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxC
eVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRE
ZWxCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklU
RGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAg
IChKU0M6OnJlcGF0Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAg
ICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRl
bnRpZmllcik6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50
aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6
ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNz
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUp
OgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChK
U0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3Qp
OgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToK
KyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJy
b3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JD
b25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAg
ICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dl
dHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXku
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6
OkpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAg
IChKU0M6OnZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAg
ICAoSlNDOjpKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1By
b3h5Lmg6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0
aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZh
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJ
bXBsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25G
cm9tRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xz
L0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIw
LTAyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgb3B0
aW9ucyBmb3IgZGVidWdnaW5nIFdBU00gY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMmM5MWMzMGU3ZTAyNmMzNzhmNjcz
MTAwODY1MmM0MGQzMTI0ZTQ3OS4uODEwOTYyN2UyZjk0ZTdiMzRiNWFhZjlhOGE5YTUyOGZjZjUy
YTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0xNCAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBi
eSBpZC92YWwgaW4gYmFzZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjph
ZGQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6
U3BlY3RydW06OmJ1aWxkTGlzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVh
cik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNw
ZWN0cnVtOjpiZWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBE
ZWxldGVkLgorCiAyMDIwLTAyLTEyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViUCBpbWFnZSBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDNkNTVkOTE5Yjg5MTBmOGQwNTFmNTVlNmU3OWJjOGQ0ODRhODcwZTEuLjdj
NzkyZTViZWNkMzk4NGZiYTEwMzgyNDE3NDAwOTE0Yjc2ZmI3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wMi0xNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwgaW4gYmFz
ZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3Bl
cnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVEZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAg
ICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgor
ICAgICAgICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2Vi
U2NyaXB0T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBicmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChK
U0M6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAyMC0wMi0xMyAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24gdG8gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkMDAxNGI2NDA2M2M3OTYxZWQ1NGNhMzdiZGRkOGEwMjlmZTJiNWRmLi4wYjk4YjE4Y2I3
M2U1NzMyZDAxMmM0YTZiMWE2NDdiYWYzMDBmNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4K
KworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNlbGluZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6cmVtb3ZlUHJv
cGVydHkpOgorCiAyMDIwLTAyLTEzICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBDaGVjayBpZiBQSVAgaXMgc3VwcG9ydGVkIGluIHRoZSBVSSBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTYwNzQ0ZmY0YjI3MzEwZDAy
ZmUwMmI5MTdkZjA5NDUyMzRlYTNjMC4uYzAxODRlMTc0M2ZmMWY5NzM3MDdhZmE1ZDk1MmUxMjIx
NWVmOGZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNlbGluZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyNTUxNTgsIDI1NTQwNSBhbmQgcjI1NTQ4NgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAwMzRiMzU3YzA3MzhlMzQ5MTI1
ODg1OGQ3MDY5ODlmZWZjYjQ4MzNkLi45MmNhOTI0Nzc5NjJiYzA0YzdhOGViODZhMWY0MTVkMmIx
ODdmMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aApAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
OworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7
CiAKICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IGNkNTExYmZkMjg0YTAxMzI1MmE2NDA1
YTY3MDdhYWQxMzdhMWJjY2IuLjRiZWMzM2E3MmRjMjg0NzdhNjEzNTZmZGI5MjBhNDc2ODYyZWQ3
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2IKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00MTgsNyArNDE4LDcgQEAgYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBQYXJl
bnQ6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+
CkBAIC00MjYsNyArNDI2LDggQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWMKIHsKICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
KHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggZjdmOWRhYjNm
MjhhZGMwZWFiYjJiZGU4YjI1MDY3NzJhZDI1ZmZjZS4uOWRmODc4ZTU4OGZhMmFlZjA2MjJhYzY5
NTg3ODFhYmU2N2EzN2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKQEAgLTQ3OSw3ICs0NzksOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlGb3JL
ZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUgogICAgIGlm
IChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4Y2Vw
dGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wg
cmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIGhhbmRsZUV4Y2Vw
dGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTUzNCw3ICs1MzUsOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcgogCiAgICAgSlNP
YmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSk7CisgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50
aWZpZXIoJnZtKSwgc2xvdCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0
eCwgZXhjZXB0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDkxZTQyN2MzMGM1MTE2M2VkZDlmMTA2ZDQyZjk1ZTA5ZDAyYmU5
YzQuLjc1NTZlOTU2ZmM2MzJmN2UyYjlkMGUxYWRiZjdjYTgxZjhlOGYwNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxNSw2ICs4MTUsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNl
LmgKICAgICBydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgKICAgICBydW50aW1lL0RlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oCisgICAgcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaAogICAg
IHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhZjQyYzJhZThmZTU5MmJmNmQ2ODI4NTM4OTc2ZDBjZjZkYTZkYjFm
Li5mYjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIwMmM0ZjZlNDQxODVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTE3OCw2ICsxMTc4LDcgQEAKIAkJNzBFQ0E2MDYxQUZEQkVB
MjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3Mzkg
LyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
QUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgg
Ki87IH07CisJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczNEI2NTU0
MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1
NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxv
b3BTdHJlbmd0aC5oICovOyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyogV2FzbUNv
bnRleHRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkwMDgxMzkx
RTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9k
dWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTM5NzEsNiArMzk3Miw3IEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
QUFGN0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQzFE
MEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAv
KiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGVsZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3
OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBwYXRoID0gYjMv
QjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNF
Mzc5OTUyMkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsg
cGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDg0LDYgKzcwODYsNyBAQAogCQkJCUJDRDIwMzQ3MEUx
NzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcx
MzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCTE2OTk0OEVERTY4RDQwNTRC
MDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywKKwkJCQk3MzRCNjU1NDIz
RjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8sCiAJCQkJMEZFMDUwMEYx
QUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJMEZFMDUwMTAx
QUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDBEMUFB
OTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuY3BwICovLApAQCAtOTIwOSw2
ICs5MjEyLDcgQEAKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3Vy
Y2VEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyog
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJCNzNCQjFE
RUY4NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fi
c3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDMxN0EwQkFBODAwNkJBNTU0
IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2NjIsNyAr
MTA2NjYsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYXR0cmlidXRlcyA9IHsKLQkJCQlCdWls
ZEluZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CiAJCQkJRGVmYXVsdEJ1aWxkU3lz
dGVtVHlwZUZvcldvcmtzcGFjZSA9IE9yaWdpbmFsOwogCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNr
ID0gMDcwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAyYWY0ODBhOWNlN2Q4MDI1Y2U1
ODgzZDhhZGY5Yzk4NDI2OWJhOTc1Li5jNGYxNjcxZTUwMTRiNWQ0N2NkZWViOTEwZGYyMzk2ZGU4
MjFiNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCkBAIC03Myw2ICs3Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3ND
YXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5ndGg6CkBAIC0xMDYs
NyArMTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVB
Y2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZSgKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAtMTIzLDYgKzEyNSwyMiBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBU
cmFuc2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAorICAgIFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2
aW91c0lEKCkpOworICAgIGlmICghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYm
IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAvLyBXZSBkbyBu
b3QgY2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpz
Y2VsbC4KKyAgICAgICAgLy8gU2VlIHRoZSBEZWxldGUgY29kZSBiZWxvdy4KKyAgICAgICAgYm9v
bCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIG5ld1N0cnVjdHVyZS0+bWF5SGF2ZUluZGV4
aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisKKyAgICAgICAgaWYgKG1heU5lZWRUb0No
ZWNrQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVs
ZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKK30KKwog
QWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjYyLDYgKzI4MCw5IEBAIGJvb2wg
QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkgY29uc3QKICAgICBjYXNl
IExvYWQ6CiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBieV92YWwgZm9yIHRoZXNl
IHB1dHMsIGJ1dCB3ZSBkbyBjYXJlIGFib3V0IHRoZSBpZGVudGlmaWVyLgogICAgIGNhc2UgVHJh
bnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJs
ZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1p
c3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zMDksNiArMzMwLDkgQEAgYm9vbCBBY2Nlc3ND
YXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjaygpIGNvbnN0CiAgICAgc3dpdGNoIChtX3R5
cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVs
ZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlz
czoKICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRl
cjoKQEAgLTM1Niw2ICszODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigp
IGNvbnN0CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBU
cmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJh
YmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2Ug
TWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTQ0Nyw2ICs0NzQsOSBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikgY29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgogICAgIGNhc2UgTG9hZDoK
ICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVO
b25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToK
ICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00OTIsNiArNTIyLDkgQEAg
Ym9vbCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxsKj4qIGNlbGxz
VG9NYXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgog
ICAgICAgICBkb2VzQ2FsbHMgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERlbGV0
ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6
CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CkBAIC02
MTQsNiArNjQ3LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFjY2Vzc0Nh
c2UmIG90aGVyKSBjb25zdAogCiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoK
KyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBj
YXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBj
YXNlIEdldEdldHRlcjoKQEAgLTY2Myw3ICs2OTksNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90
eXBlIGFjY2VzcyBjaGFpbiA9ICIpOwogICAgICAgICBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLT5k
dW1wKHN0cnVjdHVyZSgpLCBvdXQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3R5cGUg
PT0gVHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlw
ZSA9PSBEZWxldGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAi
LCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9pbnRlckR1bXAobmV3U3RydWN0
dXJlKCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUpCiAgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChtX3N0cnVjdHVyZS5nZXQo
KSkpOwpAQCAtNzA1LDYgKzc0MSw3IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNp
dGlvbnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKICAgICAgICAgaWYgKHZp
c2l0b3Iudm0oKS5oZWFwLmlzTWFya2VkKG1fc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpKQogICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX3N0cnVjdHVyZS5nZXQoKSk7CiAg
ICAgICAgIGVsc2UKQEAgLTE4NTEsNyArMTg4OCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgc3Rh
dGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUsIHJlc3Vs
dFJlZ2lzdGVyVG9FeGNsdWRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CiAgICAgICAgICAgICBq
aXQuc3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCkBAIC0xODk2LDYgKzE5
MzMsNjcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNsb3dQYXRoLmVtcHR5KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBEZWxldGU6IHsKKyAgICAgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJz
KTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CisgICAgICAg
IGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0
Y2hHUFIpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50
U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCkt
PmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisKKyAgICAgICAgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9CisgICAgICAgICAg
ICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKworICAg
ICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hl
YWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hl
Y2tDZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSB5ZXQgc28gdGhh
dCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAgICAvLyBTZWUgU3Ry
dWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5Lgor
ICAgICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIENsZWFyIHRo
ZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUg
ZXhwZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1
dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdIZWFkZXI7CisKKyAgICAg
ICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CisKKyAgICAgICAgaWYgKHNo
b3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSkgeworICAgICAgICAgICAgaml0Lm51
a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwg
YmFzZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7
CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3Ms
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAgICAgICAgICAgICAg
ICAgICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAgICBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAgICBvZmZzZXRJbklubGluZVN0b3JhZ2Uo
bV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQuc3RvcmVW
YWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAq
IHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgc3RydWN0
dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3RydWN0dXJlKCktPmlkKCkpOwor
ICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAgICAgIGppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVncy5wYXlsb2FkR1BS
KCkpOworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5n
KGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZTogeworICAg
ICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGZhbHNlKSwgdmFsdWVS
ZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlzczogeworICAgICAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigp
KTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
ICAgICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBz
Y3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5o
CmluZGV4IDc5ZDMxMDE1NWU5M2E1NDUzZDI4NjFjNDMyMjdiYTNiYWMxOWYyNzcuLmM2YzgxODQ0
NjM0MWQwYTQzYzY3YWVjOTMxODMzMzc0Nzg3ZDE4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6CiAgICAg
ZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExvYWQsCiAgICAgICAgIFRyYW5z
aXRpb24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAgRGVsZXRlTm9uQ29uZmlndXJhYmxlLAor
ICAgICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBsYWNlLAogICAgICAgICBNaXNzLAogICAg
ICAgICBHZXRHZXR0ZXIsCkBAIC0xNDYsOCArMTQ5LDExIEBAIHB1YmxpYzoKICAgICAgICAgU3Ry
dWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gPSBudWxscHRyKTsKIAogICAgIC8vIFRoaXMgY3JlYXRlIG1ldGhvZCBzaG91bGQg
YmUgdXNlZCBmb3IgdHJhbnNpdGlvbnMuCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
KTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRl
KFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3Ry
dWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0xNTcsNyArMTYzLDcgQEAgcHVibGljOgogCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9
PSBUcmFuc2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBl
ID09IERlbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgp
OwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQpAQCAtMTY1LDcgKzE3
MSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbik7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKTsKICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMTMyNDA5YzBhNDUx
MGJkZmE4ZWNlMzNiNzQzNDcxNjAyZDdiMGU3OS4uYjE2NmMzMGMxOGE1MjNhNzYyNWYzOWFmNmI3
ODk1MDY3YWE1ZjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC03OTUsNiArNzk1LDE1IEBAIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBY2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGUpCiAg
ICAgY2FzZSBBY2Nlc3NDYXNlOjpUcmFuc2l0aW9uOgogICAgICAgICBvdXQucHJpbnQoIlRyYW5z
aXRpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlOgor
ICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
Y2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgICAgIG91dC5wcmludCgiRGVs
ZXRlTm9uQ29uZmlndXJhYmxlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nh
c2U6OkRlbGV0ZU1pc3M6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlTWlzcyIpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpSZXBsYWNlOgogICAgICAgICBvdXQucHJp
bnQoIlJlcGxhY2UiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNjE3ODczN2Y5Zjhh
OWNkMGI2ZGRhZDU3ZjFjZjEyZWZlNGZjYTcwNS4uOTZhMWJhZWNiZTRjYmJiNzZkYmRlZGE4MDU2
NWEyYzU5ODY1NTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNzYsNiArMjc2LDEyIEBAIHZvaWQgU3RydWN0
dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGNhc2UgQWNjZXNz
VHlwZTo6SW5zdGFuY2VPZjoKICAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgorICAgICAgICByZXNl
dERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKKyAgICAgICAgcmVzZXREZWxC
eShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAogICAgIGRlcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IGRkY2U4NWVjMDI1NTU3NmM5
ZTM0NTFmNjQ3MzZkMTJjMzg5NDI4MDMuLmI1NzViZGQyMTYxOWMyZGZlNGYxODJmYWVkOTBmMjY4
ZTllMjYxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCkBAIC01NSw3ICs1NSw5IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6
IGludDhfdCB7CiAgICAgR2V0QnlWYWwsCiAgICAgUHV0LAogICAgIEluLAotICAgIEluc3RhbmNl
T2YKKyAgICBJbnN0YW5jZU9mLAorICAgIERlbGV0ZUJ5SUQsCisgICAgRGVsZXRlQnlWYWwKIH07
CiAKIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCAyNmUyODI5MzllOWFjYTg4
NjVjMjIxNzczYzJhNDFlMDI4MDk0ZGRhLi40OGI1Yjg2ZmE0YjllODY1ZWE0OGRjOTlhNDkzYmQ5
NDhkMDc0ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuY3BwCkBAIC0xMjksMTQgKzEyOSwxNCBAQCBib29sIERlYnVnZ2VyU2NvcGU6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkp
LT5wdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKIH0KIAotYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
Citib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0
PERlYnVnZ2VyU2NvcGUqPihjZWxsKTsKICAgICBBU1NFUlQoc2NvcGUtPmlzVmFsaWQoKSk7CiAg
ICAgaWYgKCFzY29wZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3Bl
KCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZt
KCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogdm9pZCBEZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZmNGNlMWIxZGE0
YjU3OTBkZThhZDk4OGE3MWY2MDJjZGYyNjE2NzQuLjQzMjdjMWYwMmM2OTI3ODQ1MDhlMGE5YTFh
MjE0OTc3NWVkZDgwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyU2NvcGUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmlu
ZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGUz
ZTIwOGQyZGExY2Q3MzliZmFjYzhjMzRjNTQ5N2NjNTYyZGI5MzYuLjM4NzE1OTE3ODkwMzEyMGE2
MTI2NDVlNGEyMzQzNTEzYmE1ZGJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCkBAIC0yNDYsNiArMjQ2LDggQEAgdm9pZCBKSVRDb21waWxlcjo6
bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
Z2V0QnlJZHNXaXRoVGhpcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9nZXRCeVZhbHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0
QnlJZHMsIGxpbmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMs
IGxpbmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5r
QnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIp
OwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggNDg4MDg3
NGMyODVhYjdkNDQ3ZWI4OTNhNmU4YjRiYmYwMTA3MzFkNC4uMmZiNmFkOGY2MmY5NWEyNmU2Y2Ri
ODI2YWE2ZDFjZDY3ZjE5NDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaApAQCAtMTkxLDcgKzE5MSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBt
X3B1dEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4o
Z2VuLCBzbG93UGF0aCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgYWRkRGVsQnlJZChjb25z
dCBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkK
KyAgICB7CisgICAgICAgIG1fZGVsQnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRE
ZWxCeUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGRE
ZWxCeVZhbChjb25zdCBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRv
ciogc2xvd1BhdGgpCisgICAgeworICAgICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoSW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVERlbEJ5VmFsR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQor
CiAgICAgdm9pZCBhZGRJbnN0YW5jZU9mKGNvbnN0IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdl
biwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgbV9pbnN0YW5j
ZU9mcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+KGdl
biwgc2xvd1BhdGgpKTsKQEAgLTM0OCw2ICszNTgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxJ
bmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiwgND4gbV9nZXRC
eUlkc1dpdGhUaGlzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlWYWxH
ZW5lcmF0b3I+LCA0PiBtX2dldEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVy
PEpJVFB1dEJ5SWRHZW5lcmF0b3I+LCA0PiBtX3B1dEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVD
YWNoZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlJZHM7CisgICAgVmVj
dG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlW
YWxzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwg
ND4gbV9pbkJ5SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VP
ZkdlbmVyYXRvcj4sIDQ+IG1faW5zdGFuY2VPZnM7CiAgICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwg
ND4gbV9qc0NhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCA2NDJiMTYzNTZmOTBlOWMzODYwMmViYzU3ZmQ5ZTA0YTBmNDViNTI4
Li44NTNkYzg5MmFhYjUyNjA0YmQ4MmQyY2QzMzIzZjUwZWQ2YTgxZTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTE0OCwzOCAr
MTE0OCw3MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2Rl
KQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHsK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CiAKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgYXV0byogcHJvcGVy
dHkgPSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CiAKLSAgICB2YWx1
ZS51c2UoKTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5k
R2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0
cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRlbGV0ZUJ5SWQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsK
LSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBz
bG93Q2FzZXM7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlw
ZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKHZhbHVlUmVncykpOwogCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIs
IG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgSklURGVsQnlJZEdlbmVy
YXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgdmFsdWVSZWdzLCByZXN1bHRHUFIpOworCisgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvcGVydHkpOworCisgICAgbV9qaXQuYWRk
RGVsQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihX
VEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChO
b2RlKiBub2RlKQogewogICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CiAKICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3Mo
KTsKICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIGJhc2UudXNlKCk7Ci0gICAga2V5
LnVzZSgpOworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
YzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRH
ZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3Ry
ZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2Vk
UmVnaXN0ZXJzKCk7CiAKLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlWYWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWdzLCBrZXlSZWdzKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisgICAgaWYgKCFtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIAotICAgIHVuYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBi
YXNlUmVncywga2V5UmVncywgcmVzdWx0R1BSKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUsCisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
YmFzZVJlZ3MsIGtleVJlZ3MpOworCisgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0
aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwor
CisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRkMzQyN2Jj
ODJlOGM5YjI0N2FjODcxYTAyMDAwMWJiMjM4MjlmMjYuLjdjZGYyNmJkZjYyNDc3ODllYThmNjIw
YTZkMDNlYzAzZGRhNTZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTUxNDQsMjAgKzUxNDQsMTA5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0LmNv
bnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTxEZWxCeUtpbmQga2luZD4KKyAgICB2b2lkIGNvbXBpbGVEZWxCeSgp
CisgICAgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQ7CisgICAgICAgIGF1
dG8gYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQ7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6
Ok5vcm1hbCkgeworICAgICAgICAgICAgdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBtX291dC5w
YXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdp
c3RlcihiYXNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gc3Vic2NyaXB0
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQg
PSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVS
ZWdpc3RlcihzdWJzY3JpcHQpOworICAgICAgICB9CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworCisg
ICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUg
PQorICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQp
OworCisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBu
b2RlID0gbV9ub2RlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAg
ICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21t
b24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAg
ICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQorICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBh
cmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVl
UmVncyhwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0g
cGFyYW1zWzBdLmdwcigpOworCisgICAgICAgICAgICAgICAgY29uc3RleHByIGF1dG8gb3B0aW1p
emF0aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4
cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBh
dXRvIHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
a2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1sy
XS5ncHIoKSk7CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3Qg
YXV0byBnZW5lcmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5HUFIp
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2Fs
bFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3Jp
cHQsIHJldHVybkdQUik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
KCk7CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsK
KyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsK
KworICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAg
ICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4g
PSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwg
bGlua0J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0Qm9vbGVhbihtX291
dC5ub3RaZXJvNjQocGF0Y2hwb2ludCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZURlbGV0
ZUJ5SWQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAg
TFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBhdXRv
IHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07
Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uRGVsZXRlQnlJZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgbV9vdXQuY29u
c3RJbnRQdHIodWlkKSkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFs
PigpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKCkKICAgICB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVy
bzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWwsIHdlYWtQb2ludGVyKGdsb2Jh
bE9iamVjdCksIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5
S2luZDo6Tm9ybWFsQnlWYWw+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5
UHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0
YWRlNDQ0YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZj
NGQ0MjY1NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3
MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBc
CiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRT
ZWxmUGF0Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlk
U2VsZlBhdGNoKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNy
byhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2
OWNkMWI3ODc0NGU4Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9
IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOworICAg
IG1fZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5z
dGFuY2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAg
bV9jYWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1
dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9kZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lk
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBw
YXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlz
LCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0
Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVm
ZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIp
OwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5
YTllODY1NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBt
X2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBt
X3B1dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7
CisgICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAg
ICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0
b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9y
PEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBW
ZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0
LDYgKzkzOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRX
aXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5k
ZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9N
QVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAg
ICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNp
Z25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1f
YnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9j
YWxsTGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNj
ZjRiZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLjhlZGFmOTkxM2JjOTVjYTQyYzU4ZTZiZWRl
ZDYwY2U5MjczMzAwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY2IEBAIFZfSklUT3Bl
cmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAg
ICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVs
QnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2Nr
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVP
cmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0
ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwor
ICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8t
PmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3Bl
cnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BS
ID0gcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRh
Z0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50
YWdHUFIoKTsKKyNlbmRpZgorfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJl
bCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2Rv
bmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxp
emUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQorewor
ICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAg
ICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdl
bmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ss
IGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRS
ZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1
ZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJ
bmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5w
cm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBy
ZXN1bHQ7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BS
ID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7
CisjZW5kaWYKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAg
IG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQu
bGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBM
aW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJU
KG1fc3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRo
LCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9z
dGFydCkpOworfQorCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaAppbmRleCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3
MzE2Li43NTUwODZhOGQ5YWJlMWJmMTAxNGM0ZTU5ZDE2ZWNiNjc3NjQxNzI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBA
IC0xNDIsNiArMTQyLDU2IEBAIHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9Owog
CitjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGlj
OgorICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVy
YXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9z
bG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1
bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExpbmtCdWZm
ZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsK
KworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRl
OgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKworY2xhc3MgSklURGVsQnlJZEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFz
ZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5SWRHZW5l
cmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KTsKKworICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4g
bV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAg
ICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhM
aW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYp
OworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogY2xhc3Mg
SklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgog
ICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0
OGRjNjMzNC4uN2JkZjFmNzMyYmY0ZTA1ZDliODU2OTZlZjQ2ODQ3ZjNiNTYxMDc2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTQyLDcgKzIx
NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRl
eCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwog
fQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1MCwzMSArMjE1
MCw1MSBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVp
ZCkpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
ICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJs
ZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi0K
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUu
c3RydWN0dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZh
bHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNh
Y2hpbmcodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAg
ICAgICAgICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJh
c2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5k
OjpOb3JtYWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQp
OworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxldGVCeUlkKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKSwgdWlkKTsKIH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNl
LCBKU1ZhbHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKIHsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxOTAsNyArMjIxMCw3IEBAIHN0YXRp
YyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBWTSYKICAgICBlbHNlIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eSA9IGtleS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJv
cGVydHkpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAg
ICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNv
dWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQpAQCAt
MjE5OCwyMCArMjIxOCw0MiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgcmV0dXJuIGNv
dWxkRGVsZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKSkpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJz
Y3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1
ZS5zdHJ1Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBp
ZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFi
bGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIg
cHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAg
ICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAg
cmVwYXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9s
ZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlW
YWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRLZXkpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlW
YWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwg
dm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkU3Vic2NyaXB0KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVu
dFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhj
ZDQzZWVmZjgyYTMwMGMuLjYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsMTAg
KzI1MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFs
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3Bl
cnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZf
SU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdU
Rl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
YmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCog
Y3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0
KiBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRQTmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYWJm
NTJmNzEzZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJmNi4uYzczMmUyODcyN2FlN2ZkNzVj
OGNiMDIzNGYzMTdjN2U2NTJjNzQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICszODcsMzkgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7
CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBKSVRE
ZWxCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1Qx
KSwgcmVnVDApOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CisK
KyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisK
KyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCk7
CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZElu
ZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSku
aW1wbCgpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgcmVnVDAsIHVpZCk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC0zOTgsOSArNDI4LDQyIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9w
ZXJ0eTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChyZWdUMCwgcHJvcGVydHkpOworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZWdUMCk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Ry
eV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CmluZGV4IDVjYzdkZjljNTQxODljN2NiM2Q0MDkxYjVjNGY0YzhiZGFlZWYxNGMuLjk4MDQwZmEx
MWY0N2ExNmQ0MzQyYmY2YmUxOGMyZTgwNjk3ZmFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTIzLDcgKzEy
Myw5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOwogICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExv
YWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBs
KCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlZ1Qw
LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1Qx
LCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAg
IGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzMsOSArMTM1LDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVt
aXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMikpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlW
YWxHZW5lcmljLCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpIHsgfQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKSB7IH0KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAppbmRleCA5MTgyMDQxNTU0YmRjNzZjMTkxY2IxMzg1ZDEzYTljODFmZmQ0NWViLi5i
ZTc1MDFlZjIyYzE4MzNlNGZiN2YwNmE5YWJlM2FhYjA3NmVkYzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTY0MSw3ICs2NDEsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBp
ZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9
IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNl
dCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNs
b3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpIHsKICAg
ICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsKQEAgLTczNCw2ICs3MzQs
NzIgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlh
dGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAorc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1
ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0IHJlc3VsdDsKKworICAgIHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApOworCisgICAg
ICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkgfHwgIW9s
ZFN0cnVjdHVyZSB8fCAhb2xkU3RydWN0dXJlLT5pc09iamVjdCgpIHx8ICFvbGRTdHJ1Y3R1cmUt
PnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOworCisgICAgICAgIGlmICghc2xvdC5pc0NhY2hlYWJsZURlbGV0ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisKKyAgICAgICAgaWYgKHNsb3QuaXNEZWxldGVIaXQoKSkg
eworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0OworICAgICAgICAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgbmV3T2Zmc2V0KTsKKyAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CisgICAgICAgICAgICBpZiAoIW5ld1N0
cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpIHx8IG5ld1N0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Cisg
ICAgICAgICAgICBBU1NFUlQobmV3T2Zmc2V0ID09IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworICAg
ICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpID09IG9sZFN0cnVjdHVy
ZSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25U
cmFuc2l0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3Qo
KSk7CisgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQpKTsKKyAgICAg
ICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywg
Q2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVy
ZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKKyAg
ICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ss
IEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwgQ2FjaGVhYmxlSWRlbnRpZmllcihw
cm9wZXJ0eU5hbWUpLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9
LCBudWxscHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFj
Y2Vzc0Nhc2UobG9ja2VyLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNl
KSk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIExPR19JQygo
SUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IHByb3BlcnR5TmFtZSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVz
dWx0LmNvZGUoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5k
Q2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAg
ICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5
Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwg
SlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5k
IGtpbmQpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OworCisgICAgaWYgKHRyeUNhY2hlRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3Qs
IGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kKSA9
PSBHaXZlVXBPbkNhY2hlKSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNl
V2l0aEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgp
KSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFs
KQorICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYyk7CisgICAgfQorfQorCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5
SUQoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwKICAgICBib29sIHdh
c0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKQEAgLTEzOTEsNiArMTQ1NywxNSBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsKIH0KIAordm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIGlmIChraW5kID09
IERlbEJ5S2luZDo6Tm9ybWFsKQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplKTsKKyAgICBlbHNlCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkIHJl
c2V0UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
aW5kZXggNmYwZjI2NDExZWNkZWExOTJiNzA2MjEwZThhOTk0NGJiNGY5ZmUzOS4uYzFkOTk1OWFk
YWZkMzY1NzYyZTg5MTc5YWIzYzBlZWQ2NmU1ODdkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKQEAgLTQxLDkgKzQxLDE1IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBE
aXJlY3QKIH07CiAKK2VudW0gY2xhc3MgRGVsQnlLaW5kIHsKKyAgICBOb3JtYWwsCisgICAgTm9y
bWFsQnlWYWwKK307CisKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJ
bmZvJik7CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpT
VmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKK3Zv
aWQgcmVwYXRjaERlbEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRlUHJvcGVy
dHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91
bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0
Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwg
SlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2
b2lkIGxpbmtGb3IoVk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBK
U09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpA
QCAtNTMsNiArNTksNyBAQCB2b2lkIHVubGlua0ZvcihWTSYsIENhbGxMaW5rSW5mbyYpOwogdm9p
ZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgQ2FsbExp
bmtJbmZvJiwgQ2FsbFZhcmlhbnQpOwogdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayos
IFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1Yklu
Zm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2Nh
dGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
bmV3Q2FsbGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKaW5kZXggMjI1NGZjYzQyOTYxN2NlODM5N2QyNGU1NTBlMWFjZWM2N2I2
MTQ0My4uZmFjYTdiZjRlMTc4ZDQyNWZmYmVmZmU5NTRlOGYzMWViMDAyMDZkYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC05MjUsNyAr
OTI1LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVsQnlJZD4oKTsKICAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYm9vbCBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFz
ZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9w
cm9wZXJ0eSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJvb2wgY291bGRE
ZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmplY3QsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpLCBzbG90KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNv
dWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlF
cnJvcikpOwpAQCAtMTEwOCw3ICsxMTA5LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2RlbF9ieV92YWwpCiAgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgICAg
ICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0g
YmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAg
ICB9CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCmlu
ZGV4IGZmYjNlYjlkMDA1Y2Y2ZmQwOGZmZDJiYjg4YjlkNTg3YmFlZDBmZjYuLjEwN2I1ZDYwNzIw
MzcwNTFmNmE3YzFlOWNiMGMxNWYyNjU4OTc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaApAQCAt
NDIsNiArNDIsNyBAQCBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRp
Zmllcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogCiBpbmxpbmUgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihKU0NlbGwqIGlkZW50aWZpZXIpCiB7CisgICAg
QVNTRVJUKGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoaWRlbnRpZmllcikpOwogICAgIHNldENl
bGxCaXRzKGlkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbGFzc0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oCmluZGV4IGZlNmM2YjdkODRjNDdlZGVlMTFhYWMxMWY2NDg0YTcyZDQxN2JjNDYu
LjdhNTliOGZkYjBjMjJjY2JiZDI4ZDgwMzFkYThhMTdlZTA1MzcyMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBN
ZXRob2RUYWJsZSB7CiAgICAgdXNpbmcgUHV0QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKiko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBNRVRIT0RfVEFC
TEVfRU5UUlkocHV0QnlJbmRleCk7CiAKLSAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9u
UHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
RGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZGVsZXRlUHJvcGVy
dHkpOwogCiAgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlCeUluZGV4RnVuY3Rpb25QdHIgPSBib29s
ICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IDk2YTM2MzVl
NjgyNzM5M2VlODM2ZDgwNDc3NzI0YTI1ZDU0NmMyNjEuLmY2OTk5ZTczNDg0ZTJhYmQ4ODE0NTRm
MTE0ODMxMGMwMmQ0ZjJhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ2xvbmVkQXJn
dW1lbnRzOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBpZGVudCkKK2Jvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVu
dCwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENsb25lZEFyZ3VtZW50cyogdGhp
c09iamVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihjZWxsKTsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yMjksNyArMjI5LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVu
dHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wpCiAgICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vzc2FyeShn
bG9iYWxPYmplY3QpOwogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiB9CiAKIGJvb2wg
Q2xvbmVkQXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKaW5kZXggZmQzYTI3YmY3
MzU1NGQ1ZWU0YTZlMzFkMGJhMGNhZDE1NzYwNWZmNS4uMDBjNTM0NzU2MDVhNzNiMmIzZWIzOGQz
Y2Y4MTMyODgzNGZmMWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAK
ICAgICBib29sIHNwZWNpYWxzTWF0ZXJpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCAwZTJiYzNhMjcxOWMyYTkzNTNlN2Q3NTIxYTg3OWJkMTJkNzQwMDY5Li4xZGU4
MjM5NTA5ZTBjOGQ3YTU2YTMyNDE0ZmZlOGE3NGE5Yjc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTk4NSw3ICs5ODUs
OCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0
eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOwogICAgIH0KICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGFkNmY2YjQ4MDBlZjU3ODU2MWNhZWRjOWRkYmJjODJmMjUzMmU2MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xv
dC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgor
I2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNz
IERlbGV0ZVByb3BlcnR5U2xvdCB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIDogdWludDhfdCB7
IFVuY2FjaGVhYmxlLCBEZWxldGVIaXQsIENvbmZpZ3VyYWJsZURlbGV0ZU1pc3MsIE5vbmNvbmZp
Z3VyYWJsZSB9OworCisgICAgRGVsZXRlUHJvcGVydHlTbG90KCkKKyAgICAgICAgOiBtX29mZnNl
dChpbnZhbGlkT2Zmc2V0KQorICAgICAgICAsIG1fY2FjaGVhYmlsaXR5KENhY2hpbmdBbGxvd2Vk
KQorICAgICAgICAsIG1fdHlwZShVbmNhY2hlYWJsZSkKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCBzZXRDb25maWd1cmFibGVNaXNzKCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IENvbmZpZ3Vy
YWJsZURlbGV0ZU1pc3M7CisgICAgfQorCisgICAgdm9pZCBzZXROb25jb25maWd1cmFibGUoKQor
ICAgIHsKKyAgICAgICAgbV90eXBlID0gTm9uY29uZmlndXJhYmxlOworICAgIH0KKworICAgIHZv
aWQgc2V0SGl0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9
IERlbGV0ZUhpdDsKKyAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgYm9v
bCBpc0NhY2hlYWJsZURlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgbV90
eXBlICE9IFVuY2FjaGVhYmxlOyB9CisgICAgYm9vbCBpc0RlbGV0ZUhpdCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBEZWxldGVIaXQ7IH0KKyAgICBib29sIGlzQ29uZmlndXJhYmxlRGVsZXRl
TWlzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDb25maWd1cmFibGVEZWxldGVNaXNzOyB9
CisgICAgYm9vbCBpc05vbmNvbmZpZ3VyYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBO
b25jb25maWd1cmFibGU7IH0KKworICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBk
aXNhYmxlQ2FjaGluZygpCisgICAgeworICAgICAgICBtX2NhY2hlYWJpbGl0eSA9IENhY2hpbmdE
aXNhbGxvd2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0FsbG93ZWQ7IH0KKworICAgIFBy
b3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OworICAgIENhY2hlYWJpbGl0eVR5cGUgbV9jYWNoZWFiaWxp
dHk7CisgICAgVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZjE4MjFkNTU2YTNkNDA0NDkzNjc1ZWFlMjVmYTJlNDY2NzNlYzQzYS4uNjg1YzdhY2JjMTFjNjJk
MjMzNzdkMzJjNGRlOWEyMGI2NTg3OGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBF
cnJvckNvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU4KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JDb25z
dHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBFcnJvckNvbnN0cnVj
dG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgRXJyb3JDb25zdHJ1
Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CkBAIC05
NSw3ICs5NSw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQpCiAgICAgICAgIHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKIAot
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmgKaW5kZXggOTNkNTI3MTQ4NmY2NmZkZTc1M2U0OWE0MDE2ZjE2ODM4ZTk3NTcyMS4uOWE1
YTQ2MzIxYjNkYmI3NjRjMmExYjUyMWQ5MjY4ZjhkMTQzNTMzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaApAQCAtNDksNyArNDksNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEVycm9yUHJvdG90eXBl
Kik7CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKIHByaXZhdGU6CiAgICAgRXJyb3JD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBmZDQ4YmJmMzRjMzA0MzBkMmU3MGRlNTc0
OThlOWI1MWU2YWMyNDRkLi4xZDUwY2QxNzRmYzQ3ZDkyMjE3MTg4ZTMyNWZmNTdhZThkMTViODFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cApAQCAtMjk3LDEyICsyOTcsMTIgQEAgYm9vbCBFcnJvckluc3RhbmNlOjpwdXQoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1
cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JJbnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgRXJyb3JJbnN0YW5jZSogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckluc3Rh
bmNlKj4oY2VsbCk7CiAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVFcnJvckluZm9JZk5lZWRl
ZCh2bSwgcHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5oCmluZGV4IGYxZmFjNTk2ODJkOWUwMjY1MDhjYjRmZjhjOWIy
NjdiNGVlNzZlODcuLjQwMDYwOGQwOGE4MzRjZDMxZTYxMmU3M2FiNTMxY2IwYTNjYTExZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKQEAgLTk5
LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAK
ICAgICB2b2lkIGNvbXB1dGVFcnJvckluZm8oVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4IGNlMTBmN2ZlNDg3M2U0YTQ3
YmUxNDFlMjU1NjlhZDY0OGFmZjlkMjguLjQ3MTIxNjczMDM2NDgyOGZlMjc3MGUyMzQ4NjlhY2U3
MDkwOGQxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4
IGI4MzdlYzFiYjQzMGY2ZDU4YjFkNWIxMTVkYTUxM2M1YmNjMGJmNTMuLmE1YTllY2IzMjJhMjBk
YThmZTI0MzNmZmQ1NDdhNzhhZmM2MDJjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtMTM5LDggKzEz
OSwxMCBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBybwogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJ
bmRleFF1aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KSk7CisKKyAgICBh
dXRvIHJlc3VsdCA9IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2
YWx1ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4KQEAgLTE1OCw3ICsxNjAsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBpZGVudCkKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBUeXBlKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CkBAIC0xNzUsNyArMTc3LDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCiAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgKmluZGV4KSk7CiAK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQs
IHNsb3QpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggMDM0ODdmNjFlMGYyZmM3NTFiYTcw
M2I3MGNhMzZkMDIyMjE2MzRkZS4uNjAxZjFlNDlmMTVjZDUwMWEwZTBhNzVlZTI4NTA2ZjMyYjBk
YjNhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgK
QEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sKSB7IFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29s
IHNldFByb3RvdHlwZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCkg
eyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSB7IFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9nZXR0
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDZkMDc1
OTE3MTFlZWRiYzI4ZTBlNGRhNzg0OTgyMmFiOGQ2NmY1ZDEuLmJjZTM2NTVhMzE5MmVhMjkwZmU3
ZjA0MDgyNGEzODg2ZjZiMDQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJvb2wgSlNBcnJh
eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0FycmF5OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0FycmF5Kj4oY2VsbCk7CkBAIC0zMTQsNyArMzE0LDcgQEAgYm9vbCBKU0FycmF5OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnQKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJu
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFyZUtleXNGb3JRU29ydChjb25z
dCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCmluZGV4IDMxMTY1YjVmZjQ5MjU0Y2MxYTZjNDc5MDJiNzkxMGFjNGE3ZDliZmYuLmNk
YzM5YjUxMmQ3ZWUzYTE1Y2YxYWVjMmUwYTJkOTNkOWFhYWQwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTE4Miw3ICsxODIsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBmZTAxODBk
ZDYwYzNkMWJiNjBmOGI1MzNiMTg2MDU4ZWVhZDgxYjc1Li41ODZhZjNmYWIzNzk1MmUzZmRlMWNl
NDcwYzk5YWIxZWRjNGE3NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXNz
ZW1ibHlIZWxwZXJzOworY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90OwogY2xhc3MgSlNCaWdJbnQ7
CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0NlbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyNzEzNTJiMjE3NDcwMzU2ZGY0MDNmZGQ5Y2RlNjBkZWY4
ODgxNjA3Li4wZTY3Zjg2Njc2ZDU4NjVhYTg4ZjA0ZjM1YWRhNzQzMjFlMDJjZjA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTEyNiwxMCArMTI2LDEwIEBA
IGJvb2wgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgaWRlCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIs
IHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBp
ZGVudGlmaWVyKQorYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwt
PnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaWRlbnRpZmllcik7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgaWRlbnRpZmllciwgc2xvdCk7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRl
eCA2NjVkMDg4OWNmNDQ2MWMzYWIwYTJhZjRiMDdjNmE1OGM5MDQyMWM0Li4wNjJlODNkYjM5YWIz
NGE2ZWY0ZmRhMzZmZmE1MGU0YzExMWQ5NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaApAQCAtMTgwLDcgKzE4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBib29sIHB1dElubGluZShKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
ICAgIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIHN0YXRpYyBKU1ZhbHVlIHRv
VGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggMTQ2YTkxMzJkNDczNTI0MmMx
MDZlNjU1NjQ3NzhlMTdlZDdiYWI4Yy4uMWIyNTUyM2M5OGZiYjA5ZTM3ZjhhNDc0MzE5YmY3NmMz
MmQ4YThiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5j
cHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIEpTRGF0YVZpZXc6OmRlZmluZU93blByb3BlcnR5
KAogfQogCiBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAotICAgIEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKKyAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0RhdGFWaWV3Kj4oY2VsbCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBKU0Rh
dGFWaWV3OjpkZWxldGVQcm9wZXJ0eSgKICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPmJ5dGVPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBKU0RhdGFWaWV3Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmgKaW5kZXggODY0MTBlNjFhZDdlOTFkODJhNjdlOTdlZmJiNGYzMmYxYmMx
MmU3OC4uOThhOGNjOGIzOThmZmRkN2ExYzk0YmU2NTdmNjU1ZTZjYzdiOWY3MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtNzIsNyArNzIsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbklu
ZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGNkNmVjMTVlZTA5YTlmMzRjYWYyZjI5NDAwZmM5NmQ5
YTU5ZDRkYmMuLjQzNDZhYWFlZWI2YThlZjVmNTMyODVlMWQ1YWI2Zjc3MjExYTk0ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01ODYsNyAr
NTg2LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpKTsKIH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02MTcs
NyArNjE3LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3AKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIH0KICAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
OwogfQogCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2Vw
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCBh
ZGRkZTJhYzAzYTQxMGM3MDhhNzkzNGI1YTVkMDY4OWNhMWZmYWNkLi4xOGFiNDc1NDNmZDc4Mjk3
OGFmZWE5NzJjOGM5YWM2ZDg3MDJjYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGYwOGY4NTI0NjliZWZk
NmM1YWQ0M2FmMmE1MDA5MmJlZWZlMmIzOWEuLjNiN2JiZGU3NjVjZTFjMzU2NTUwZWNkNThiNzdm
ZWQ5ZDYxMDZmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
cHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggMGNhZmJkMjc2Y2Y3NGQw
Yzg1ZWY4YmU3ZGJlNDAzZDNjNzY0YjM0Mi4uNThmYmI1NzU2MmI3MTAwNzllNjUxNDBmN2UwOWU3
MDgwNDhmYTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQzOCw3ICs0Mzgs
NyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWZpbmVPd25Qcm9w
ZXJ0eSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAotICAgIEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAg
ICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAogICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkBAIC00ODQs
NyArNDg0LDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KAogICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFt
ZSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBjZWxsLT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggYjNjOTgwYTQ2NjJhZWVlYTEyNDBhNTY2YzVkNGExOGE5Mjg3MWY3ZS4u
MGY4OTAzMDBiZWI3ODRjNzE3OWE4NzNmYWNmY2IyYTg0ZDBjOWU5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTMxNCw3ICsx
MzE0LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgIG1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIG1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IGFkZEdsb2JhbFZhcihwcm9wZXJ0eU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggZjM0NWM1
MDI3YWJhOTQwODQ0NzFlMzFiN2I4ZDdlZTJhMmY4ODcxMy4uOTc0YjkyYjU0ZTFhMzM4MzE2OWRl
ZmFiMmE5YTdkZGU2NDZkYTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTI3LDEzICsxMjcsMTMgQEAg
Ym9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGUKICAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0T3duRGF0
YVByb3BlcnR5KGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKLWJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFy
Z3VtZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4g
QmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IGQwMTNiNTFlZmEyOTdl
YmYwM2NhNDI0MDAxN2E2N2FjYzEzYjkzOTcuLjA1ZTRlNjVjMmRkNDkzZmY3YTRlMzFhNDgyNmI3
MGMyNTBjNTc5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
CmluZGV4IGZlYjU1MTA4NzQ4MDM5MGQzNDA5ZTZjYWE5NDgwMGI3MjlmN2M3M2QuLjg1OGE5NDJm
ZTczNTVjZjhjMTE4MDVhOGQwNWUwNjUzZjhhMjE4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsNyAr
MTI3LDcgQEAgYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpKTsKIH0KIAotYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBKU01vZHVsZUVudmlyb25tZW50Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKHJlc29sdXRpb24u
dHlwZSA9PSBBYnN0cmFjdE1vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCmluZGV4IGRhZWFiNjYyZmMwNGRh
YmRkMjZkMTQxNDVmMzZlYjE3ZTI3OTJhNzkuLjAxMzBmODdmYjk4YmIyYTgyZGFhMjlhNTk2MzUy
ZTcxOWJiN2VmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKIHBy
aXZhdGU6CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUq
LCBTeW1ib2xUYWJsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCmluZGV4IDJiZGIxMzA1ZWIwYzRiZTk2
MDgwNjViZDM0ODU5YzdhZjE0OGIyYTEuLjFmYzZhMjY1YjhjYTY1YWQxMTkwMmY1ZDAxM2VkNjVk
ODY1NjE4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTE5OSwxMiArMTk5LDEyIEBAIGJvb2wg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRl
bGV0ZS1wCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIAogICAgIHJldHVybiAhdGhpc09iamVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHBy
b3BlcnR5TmFtZS51aWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAppbmRleCA4ZWVmNjIxZTNiODRmYTY2
MjhjZmEyZjgxNGRhNjI4ZjA2Nzg3ZDFkLi44MTEzNjRkZDE3YTEzZTdlZmJmY2YxYzllMjg2MzBl
MjQyYTcxMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmNwcAppbmRleCBkMGQxNzIxY2YxZGViODMzZjljYjAxZTJiZjMyMWIwNmVkNDE5
NmM5Li5lZGEyZDYyMzUwOTllZDMwMWJiMGFlMTE0NTE0ZjMyZTE1NGNiNjI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNzU5LDkgKzc1OSwx
MCBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVk
KQogICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAgICAgICAg
ICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIob2JqZWN0LCBqc1N0
cmluZyh2bSwgcHJvcC5zdHJpbmcoKSksIG91dFZhbHVlKTsKICAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJl
ZFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9wKTsK
LSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUu
aXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3AsIHNsb3QpOworICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+cHV0KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3AsIGZpbHRlcmVkVmFsdWUsIHNsb3Qp
OwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
ICAgICAgICAgICAgaW5kZXhTdGFjay5sYXN0KCkrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhY2QyOWRlZDgxMzUxZmIyODRiMjE1OWFkNDdhNjMx
YzM0OTRmMWRmLi4zNDczMmUxYzJiZjM2ZmU1ZDc5NzdjMWJkZTI1Y2RhZWQ2M2FjOWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xOTcyLDcgKzE5
NzIsNyBAQCBib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydAogfQogCiAvLyBFQ01BIDguNi4yLjUKLWJv
b2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTk5OSw4ICsxOTk5LDEwIEBAIGJv
b2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVyCiAKICAgICBib29sIHByb3BlcnR5SXNQcmVzZW50ID0gaXNW
YWxpZE9mZnNldChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSk7
CiAgICAgaWYgKHByb3BlcnR5SXNQcmVzZW50KSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkg
IT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKQorICAgICAgICBp
ZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlICYmIHZtLmRlbGV0
ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSkgeworICAgICAgICAgICAgc2xvdC5zZXROb25jb25maWd1cmFibGUoKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBEZWZlcnJlZFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1
cmUpOwogCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBA
IC0yMDA4LDcgKzIwMTAsOSBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgICAgICAgICAg
b2Zmc2V0ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBw
cm9wZXJ0eU5hbWUsIFtdIChjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBQcm9wZXJ0
eU9mZnNldCwgUHJvcGVydHlPZmZzZXQpIHsgfSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsK
LSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSAmJiAhc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNP
YmplY3QpKSB7CisgICAgICAgICAgICBzbG90LnNldEhpdChvZmZzZXQpOworICAgICAgICAgICAg
aWYgKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0
dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hl
YWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5t
X2J1dHRlcmZseSk7CiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFu
ZFNldEJ1dHRlcmZseSh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7CiAg
ICAgICAgICAgICAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgICAgICBB
U1NFUlQoc3RydWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKQEAgLTIwMjAs
NyArMjAyNCw4IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAKICAgICAgICAgaWYgKG9mZnNl
dCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgdGhpc09iamVjdC0+bG9jYXRpb25Gb3JP
ZmZzZXQob2Zmc2V0KS0+Y2xlYXIoKTsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHNsb3Qu
c2V0Q29uZmlndXJhYmxlTWlzcygpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDMwLDgg
KzIwMzUsMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihjZWxsKTsKICAgICAKLSAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpKSk7CisgICAgaWYgKGkgPiBN
QVhfQVJSQVlfSU5ERVgpIHsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSksIHNsb3QpOwor
ICAgIH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nTW9kZSgpKSB7CiAg
ICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CkBAIC0zNjI1LDcgKzM2MzIsOCBAQCBi
b29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgLy8gQSBnZW5lcmljIGRlc2NyaXB0b3IgaXMgc2lt
cGx5IGNoYW5naW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CiAgICAg
aWYgKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3Vy
cmVudC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYgb2JqZWN0KSB7Ci0gICAgICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShv
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBwdXRE
ZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Is
IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50
KTsKICAgICAgICAgfQpAQCAtMzY0MSw3ICszNjQ5LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KgogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9i
YWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0
dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQpAQCAt
MzY2NSw3ICszNjc0LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShv
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRv
cihnbG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlw
dG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAg
fQpAQCAtMzcxOCw3ICszNzI4LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNj
cmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogCiAgICAgR2V0
dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnZXR0ZXIsIHNldHRlcik7CiAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICB1bnNpZ25lZCBhdHRy
cyA9IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAg
IG9iamVjdC0+cHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdl
dHRlclNldHRlciwgYXR0cnMgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZWM2MzAwZWE5Yjk3MmNlOWJh
MGZhZDgxODI1N2FmYjIwZDgyYTJlZC4uNjkzYmRiYjk5N2Q2NDQyMDgwNjUxYzI3ZWRkZTdiMDg4
YTE0MTU2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCisjaW5j
bHVkZSAiRGVsZXRlUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUg
IkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAtNjIzLDcg
KzYyNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBib29sIGhhc093blByb3BlcnR5KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQpIGNvbnN0OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKaW5kZXggOWM0NzkzNGU0YTNkOTE5
OWZhOTg0MmRkMDUyY2U4OGQyNDE1MmFjMS4uZDBiYmMyYzVhMmQyMjE5MTI3Y2Q5OWIzMDIwOTMw
ODg3MjEyM2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAK
QEAgLTkxLDEwICs5MSwxMCBAQCBib29sIEpTUHJveHk6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRo
aXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWZp
bmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU1Byb3h5OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0
LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+
dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNQcm94eTo6aXNFeHRlbnNpYmxlKEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMzUxZTY2OGQyNTkwZDliOTdjOGY0YmJh
MmJmZmI0MDBkYjNmMjEwOS4uNWJlN2JmMGQyZTVhOGIzMmM3OTRjMGIyNTg5NTc5OGZjNWY5ZWY4
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtOTMsNyArOTMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQs
IFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCA2MzBlMWI3OGJiMjA2
ZTdhZjYxN2MzYzY4MmMzNGY1ZTE3NTVmNWQ1Li4xMjVmNmMzMTUwZTk2YWVjZDUzNzQ3MzFmZGE4
ZDlhN2JhZmJhMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIHZvaWQgSlNTeW1i
b2xUYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwog
fQogCi1ib29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNTeW1ib2xUYWJsZU9iamVjdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCmluZGV4IGM3YzFlMjBhNjU0NzZiYzcwNjhlZTYzZGVkOThiMzM1ZGY3MzZiMjEuLmI1
NjhlOGY5MmE5ODNmYjRjYzIwM2E3YTA2MjE4MGFlNGZlNTkwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQogICAgIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlN5bWJvbFRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3ltYm9sVGFi
bGVPYmplY3QsIG1fc3ltYm9sVGFibGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggYjY1MjAyMjFhODE1OThmZmVmMmE1ZTE0YTgwZmQ0
ZTU0ZGM2OWM2ZS4uYjA3ZTBhMDI5MzMyODI2MTAzNmY0MTEwNmVlZWU5ZTVmOTBjNjY2MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNjg1
LDEyICs2ODUsMTIgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJv
eHlPYmplY3QqPihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0RGVsZXRlID0gWyZdICgp
IC0+IGJvb2wgewogICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpc09iamVjdC0+dGFyZ2V0
KCk7Ci0gICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9OwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wZXJmb3JtRGVsZXRlKGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdERlbGV0ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCAxN2NhMjlmYjBhM2ZkZGJhNzFl
YjY4MjQ5YzA5OWNhMjhhM2Q2MmVkLi5lZTViZDkwNThjZmE4MThhNDY3NGE1MjJiZjYwYTJjYTA5
ZWFjMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgK
QEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCmluZGV4IDQ2ZGNiNzUwNmRhNTcwZTRjOTdlYjkzYTA5YzAwNDgxYTUxNTM4MjcuLjFj
ZTFiNGMzM2FhZjFhNDVkZjA3MjQxZjRkZDMwYzY3ZDY3YTJlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtNzEsMTIgKzcxLDEyIEBA
IGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5
U2xvdChvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9v
bCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUmVnRXhw
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sYXN0SW5kZXgpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaAppbmRleCA1ZTk5ZWIzOGI3MTNhOTQyNjM3MTkxYTg5ZjBiN2M5NmM1ZmJiNzE0
Li44NTdjYTJlNzJhZjM0MGVhZTM2NTcwMWQ1NWNhMDdlZDgzZTBiMTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtMTQ0LDcgKzE0NCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgbV9yZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxh
ZyA9IChtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnIHwgbGFzdEluZGV4SXNO
b3RXcml0YWJsZUZsYWcpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdl
dEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKaW5kZXggNTE1NzUyNzY1
ZWNiMDJkMTljMDQwZTlmMjFiOTY0OWY3NTE3Yjk0Ny4uNTFkYmM2N2M1N2Y4MTU2MWZhNzhkMTk0
ZWZhZjA0OWMwN2E4YWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBTdHJpY3RF
dmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNTY29wZQogewogfQogCi1ib29sIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wg
U3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBm
YWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlj
dEV2YWxBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RF
dmFsQWN0aXZhdGlvbi5oCmluZGV4IGNkY2MyMWI3ZTVmYTdiMTA5NmIyNmQxODcwNzRjYmYxN2Vi
ODNjMjkuLjI0MTU0NWU4MTY5MzYyYmY2OTIwYTkxOWI4ZmUwZmRiYjdhMTAwNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24u
aApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzY29wZTsKICAgICB9
CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDc3YjljYWZi
M2ZhMDA4ZjBmNzA1NjhiNmRiNmY0YTE1MTg2ZDA2ZS4uNDg2ZGQ5MjczYjc1MDU4YTQ3Zjc2OWEz
ZmNmODc3NWU2OTBjZDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKSk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3Qq
PihjZWxsKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcgogICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoaW5kZXggJiYgdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChp
bmRleC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIFN0cmluZ09iamVjdDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgKaW5kZXggYTM0MDU4MTc4OTM0ZDg1MjUwYWNiM2EzZTRkYTM1MmYyMjc4NjUyMy4u
NjlmMjZiN2Q3MjRiYmVmNzMyMzMxOTQ3ZTgwYjdjN2ZhZmNmOGQ0YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggZWRhNDQ2
YmZiZTI2N2FiMDFiODUyZTE1ZmRlOWM5YzMwZTZmNThlNi4uNTIwNWRkNzM4MWNjMzE1YzgxMTYz
NTUwYWExZGNhMjE5ZjM1ZmNmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCkBAIC01NDAsOCArNTQwLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFk
ZE5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm8K
IAogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSogZGVmZXJyZWQpCiB7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSByZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoCi0gICAgICAgIHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7CisgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUo
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKG5ld1N0cnVjdHVyZSkK
ICAgICAgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKIApAQCAtNTQ5LDE2ICs1NDgsMTMgQEAgU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm8KICAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBvZmZzZXQsIGRlZmVycmVkKTsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zm
c2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopCitTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlSW1wbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBBU1NF
UlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkp
OwogCi0gICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKLQogICAgIGNvbnN0ZXhwciBib29sIGlzQWRkaXRpb24g
PSBmYWxzZTsKKyAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgIGlmIChTdHJ1Y3R1cmUq
IGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHBy
b3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcywgaXNBZGRpdGlvbikpIHsKICAgICAgICAgdmFs
aWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0
aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0
aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNTY4LDExICs1NjQsMjcgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZShWTSYgdm0sIFN0cnUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQo
KSk7CisgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICBzdHJ1Y3R1cmUtPmdldENvbmN1cnJl
bnRseShwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMpOworICAgIHJldHVybiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQorCitTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVu
dGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgc3Ry
dWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKTsK
KyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICBy
ZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChz
dHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKwogU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNl
dCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVm
ZXJyZWQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5
KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0s
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJU
KCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CiAKICAgICBpbnQgdHJhbnNpdGlv
bkNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlv
bkNvdW50IDw9IHNfbWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZpb3VzSUQoKSkKQEAg
LTEyMDMsNyArMTIxNSw3IEBAIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVj
dHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUsIGJvb2wmIHNhd1BvbHlQcm90CiAKIHZvaWQgU3RydWN0
dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KFJhd1Bv
aW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKKyAgICBv
dXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9j
YXN0PHZvaWQqPihpZCgpKSksICIsICIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsK
ICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDUyY2QzYzcxZDkyMGYyZjhhOTdiNDYwYjkwZTBl
YzcwZDVkNzExYWYuLmFlMjBhZTk2YmE0MDMyZjZhYTFmOTRiZTNjMTc0Yjc2M2M3M2ZhZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2Nr
LmgiCisjaW5jbHVkZSAiRGVsZXRlUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdU
eXBlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAt
MTkxLDcgKzE5Miw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
dWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hh
bmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBl
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24o
Vk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFy
eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKQEAgLTQ3Nyw2ICs0NzksNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29u
c3Q7CisgICAgYm9vbCBtYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkg
Y29uc3Q7CiAgICAgCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIApAQCAtNzE2LDYgKzcxOSw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKIAogICAgIC8v
IFRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0
eSB0YWJsZSwgdGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3Ry
dWN0dXJlcyB0aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0dXJu
cyBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgKaW5kZXggMGNkOThkNTJhY2M3ZjcxNGMwNWIxNTNlMDgxMzllNDkxY2Q4Y2Y4Yy4uZmUyODU4
NzQwOTRkYWMzMDcwNzVkMmM3NjFlMjMyMmE0NjAxNzVmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjI0LDEwICsyMjQsMjMg
QEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwq
IGNlbGwpIGNvbnN0CiAgICAgCiAgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZv
clR5cGUobV9ibG9iLnR5cGUoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAg
ICByZXR1cm4ganNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9
PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7CiB9CiAKK2lubGluZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2
ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0Cit7CisgICAgbXVzdENo
ZWNrQ2VsbCA9IGZhbHNlOworICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5
cGUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBl
ZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtdXN0Q2hlY2tDZWxsID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW5s
aW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoKSAmJiBnbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGRmZjFk
ZjE5YWM4NGE5ZWQzNjRiNTk3ZDVkZDlkMDQxYmVjNDc4YjMuLmRhYWFjYjE0ZGZjMGFjNWFmNjQx
MDg0YTE4OWI2NjJlMzUyNDdjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSkKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CkBAIC0yODI4LDYgKzI4MjgsMTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHkoSlNHbG9iYWxPYmplY3QqIGdsb2IK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2Jq
ZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHRhcmdldCk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rpb24tPmFyZU5hbWVBbmRMZW5ndGhP
cmlnaW5hbCh2bSkpKTsKK30KKwogdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTI5NTksNiAr
Mjk2OCw4IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QiLCBKU0RvbGxhclZNSGVs
cGVyOjpmdW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0LCAxKTsKICAgICBhZGRGdW5j
dGlvbih2bSwgImdldENvbmN1cnJlbnRseSIsIGZ1bmN0aW9uR2V0Q29uY3VycmVudGx5LCAyKTsK
IAorICAgIGFkZEZ1bmN0aW9uKHZtLCAiaGFzT3duTGVuZ3RoUHJvcGVydHkiLCBmdW5jdGlvbkhh
c093bkxlbmd0aFByb3BlcnR5LCAxKTsKKwogICAgIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0
V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqZWN0RG9p
bmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggY2I4ZDNi
YjAzMDUyODkxMDhhOGQ4ODFmMDAyMzE0Njg0MzJmYWNmMC4uNDU4NWIxMDBhYzdkYTk0ODIxNGFk
OGM4ZmZiYjIxOTRhYWM3MGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3BlY3RydW0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0g
MSkKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgaWYgKCFj
b3VudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBD
b3VudGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CkBA
IC01OCw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBDb3VudGVyVHlwZSBnZXQoY29uc3Qg
VCYga2V5KSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
ICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAo
aXRlciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjYsOCArNjgs
NiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21h
cC5zaXplKCk7IH0KICAgICAKLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJl
Z2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAg
IGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQog
ICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAg
ICAgCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRl
cmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCiAgICAgVmVjdG9yPEtleUFu
ZENvdW50PiBidWlsZExpc3QoKSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciht
X2xvY2spOwogICAgICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGxpc3Q7CiAgICAgICAgIGZvciAo
Y29uc3RfaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikKICAg
ICAgICAgICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50KGl0ZXItPmtleSwgaXRlci0+dmFsdWUp
KTsKQEAgLTEwNiwxNyArMTA3LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0KKyAgICB2b2lk
IGNsZWFyKCkKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
bV9tYXAuY2xlYXIoKTsKKyAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAg
ICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fbWFwLnJlbW92ZUlmKFsmZnVu
Y3Rvcl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBl
JiBwYWlyKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFp
ci5rZXksIHBhaXIudmFsdWUpKTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAKIHByaXZh
dGU6CisgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBIYXNoTWFwPFQsIENvdW50ZXJUeXBl
PiBtX21hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAppbmRleCAyMDUwNmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJh
NTRkLi5mN2E4OTU1N2VkNTZhY2VmOTEzYTRhMWY2ZDcyNDY3NTJlMTRjZDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zMTQs
MTMgKzMxNCwxMyBAQCBib29sIEpTRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEJhc2U6OnB1
dEJ5SW5kZXgodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5k
b3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBPbmx5
IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4K
ICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIFRocm93U2VjdXJpdHlF
cnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggMWVmMDZjMjZlZTI1MmRlNjY4YzFk
ZWRlOTFjNWRkZjZhMGRkZmRlNS4uODRiOWExM2UxOWVhMTg5ZGYzMDc0NzYwNjVkZDM3M2U1MWU0
ZjY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAKQEAgLTE2MywxMyArMTYzLDEzIEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1CiAgICAg
cmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGlu
ZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxsKTsKICAg
ICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCiAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLndpbmRvdygpLCBUaHJvd1Nl
Y3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvbjo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBl
MmVlZGZkNWIwYzVhYTcxODcwZGE3NjU0Mzk3ZTM1Yjk5YTgyY2FjLi4wY2I2N2VmMjljNjJiZjhj
YzQ0NmEwZWNlMzFjOWZlNTM1MTU3YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCkBAIC04Miw3ICs4Miw3IEBA
IGJvb2wgSlNSZW1vdGVET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNS
ZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUpCitib29sIEpTUmVtb3RlRE9NV2luZG93
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIFZNJiB2bSA9
IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQppbmRleCA2ZDcyMWE4ZGY4NzgyMjY1MzM0N2RlMmY4MmJhMjU1MjI1
ZWM1OTc2Li5hN2YyOThjYmE0M2ZlYjc4MDU4NzMzYjEwY2E5NWQwMDdiZjBjY2I4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtMTMwMSw3ICsxMzAxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKICAgICAjIFRo
aXMgaW1wbGVtZW50cyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxh
dGZvcm0tb2JqZWN0LWRlbGV0ZSBmb3IgdGhlCiAgICAgIyBmb3IgdGhlIGRlbGV0ZVByb3BlcnR5
IG92ZXJyaWRlIGhvb2suCiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xhc3NO
YW1lfTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRv
JiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwpAQCAtMTMy
MSw3ICsxMzIxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKIAogICAgICMgRklYTUU6
IEluc3RlYWQgb2YgY2FsbGluZyBkb3duIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSwgcGVyaGFw
cyB3ZSBzaG91bGQgaW1wbGVtZW50CiAgICAgIyB0aGUgcmVtYWluZWQgb2YgdGhlIGFsZ29yaXRo
bSBvdXJzZWx2ZXMuCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogfQogCkBAIC0yNjk2
LDcgKzI2OTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9CiAKICAgICBpZiAoSW5zdGFu
Y2VPdmVycmlkZXNEZWxldGVQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Qzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OkRlbGV0ZVByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTtcbiIpOwogICAgIH0KIApAQCAtNDMyNCw3ICs0
MzI0LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtc
biIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTc1MDcsNyArNzUwOCw4IEBAIHN1YiBHZW5lcmF0ZUNv
bnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
aWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVc
IiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRp
ZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmNwcAppbmRleCAzMDU0ODg3N2E1Y2U0NDM2ZTVhZTc4M2NkMDdiOTliNWU3YjQy
NzI4Li5hY2UxMzQ1Mjk3NTYxNWQ4ZGI1NmQyMjQ0NzA1MmVjYTZjZTMwN2UzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0xMzcsNyArMTM3LDggQEAgdm9pZCBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJs
ZWRCeVNldHRpbmdPcGVyYXRpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCkBA
IC0xNDUsNyArMTQ2LDggQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGlu
Z0F0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgog
ICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0Rp
Y3Rpb25hcnkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRl
eCBkZWU5NmNlZDFmZjkyNjAwZTIyOTJlZmEzZjk0MWQ0ZGQ3N2FjNjVhLi5lYzNiODZjOTVmZWU5
MmFlYjhmYWY4ZDEzY2M2MzkzMDk4OTI1ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCkBAIC0xMDgsNyArMTA4LDggQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiYVNlY3JldEF0dHJpYnV0ZSIpLCBzdHJsZW4oImFTZWNyZXRBdHRyaWJ1dGUiKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBp
ZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggZmUyODk1ZjdiZDU4
ZTEzY2RhYTc5OWI5MGU0OGQ5YjgyODYxZDU2Ni4uMjllYzg0Y2I3NzQzY2VjMzRmMWE5ZDY2NDVk
MDM2MDQyZjBlNjBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllci5jcHAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xv
CiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNP
YmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcio+KGNlbGwpOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBpZiAoaXNWaXNpYmxl
TmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRl
TmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9
Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAog
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
aAppbmRleCAwZWE0YmIxMWI4NjA1MzAxMTY1N2ZkNmVhNjNmMjQ2ZDRkODJlNTBhLi4xMzhkNGMx
OGY4ZjQ2YmMzNDMzMTA5YmQwMzIzOTU2MzdkMGFjMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Qzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IDUxZDEwMDMzNmM5MjYxZmI1
MDlkY2FlN2VmYzQyNDlhZmE3ZWIwYTQuLmE4ZGFjYjM3ZDVjODhlMmRhOTBhMDY1NjU5N2I4ZTYy
YzYzYTc2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpA
QCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaApp
bmRleCA3OTFiZTE4MmViMWIzNjk2OTIxZGU5NzY5NTI3MjlmMGI0ZjBiMzRhLi4wNTVkM2RmOTIz
ODE4YzAwNzY3ZjE4OTVkZjY3MjVmNWJjMGVkZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYs
IEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Qzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA0YTgwZmY1ODgwNmU3NWEy
MzczNzk1MDgyYTgxMDc5YjlmMmVhYmU3Li5mNmM5MDFiYTE3YmRkOWEyZTBkNzQ5NTExYmQ2YjU3
ZTcwNmU5YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTRwog
ICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhp
c09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqPihjZWxs
KTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamUKICAgICAgICAgaW1wbC5uYW1lZERlbGV0ZXIo
cHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5oCmluZGV4IDU0ZTAyNTQ3OGUxZGMzOTkwNzA3MzNlNDk5YjAxNjMxNDkw
MTI0OWUuLmE4NThhMjcxNTRiZDNjNjM2NGZjNDVhNjQ3ZmY0MmI2YjQ3MjUwNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgp
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4
IDk1MzkwMGMyMWUyZjM2ODllYzVkNWJmYjk4YWNiYTIxNTNhMjgzZjEuLmQ1MTU5MGNiNjQ4ZDFk
NmFiYWIwZTE5ZWRmOGEwMmM5MDJiNzRiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZv
aWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1i
b29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPCiAgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAg
ICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSk7CiAgICAgfQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4g
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKaW5kZXggYTk5NDViYWZjNjEx
NDNlNTc2ZmZkNjBmZWM4ZWVlNjk2NGI5ZjAzMC4uMmZlYThkOTBmNGY0YTE4NDJjOGUxOTJhZjM1
ZDg1YzdkMTg2ODllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IGExNDJjMDcyYmZkY2YyODQzYzRl
M2M2MmMzZDAyNzNiOGIyZDYwOWQuLjM5YTY3NTcyYWUwYjBjMWNkZTU0NzRkODZmMTcyMDNjZTIz
N2QwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTE1NSw0NSArMTU1LDUyIEBAIHZvaWQgSlNUZXN0Tm9k
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNh
bGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAg
IGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQo
KSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJl
RW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9v
bGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9y
RW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW50cmllcyIpLCBzdHJsZW4oImVudHJp
ZXMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9t
SXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJrZXlzIiksIHN0cmxlbigi
a2V5cyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5k
b21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInZhbHVlcyIpLCBzdHJs
ZW4oInZhbHVlcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZvckVhY2gi
KSwgc3RybGVuKCJmb3JFYWNoIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
JiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFy
eU9iamVjdCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGQyZjdlOTg3MWZlNDNlZWRmNDMzZWE4YWM0YWFl
NDIxMmFiMzFkNjUuLjliMTQwZTJkYzg1ZmQ4MDVlNGQxZWU4ZDk3YzA3Zjk5MWMzMWM0MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC0xOTgyLDE0ICsxOTgyLDE2IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RG
ZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVk
QXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZVN0YXRpYyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgp
KSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRp
ZgogfQpAQCAtMjM0NSw5MCArMjM0NywxMDQgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAg
ICAgaWYgKCEod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNvbWVXb3JsZCgpICYmIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVh
dHVyZUVuYWJsZWQiKSwgc3RybGVuKCJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVG
ZWF0dXJlRW5hYmxlZCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogICAgIGlmICghd29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNvbWVXb3Js
ZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigid29ybGRTcGVjaWZpY01ldGhvZCIpLCBzdHJsZW4o
IndvcmxkU3BlY2lmaWNNZXRob2QiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRl
eHQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJs
ZW4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJl
Q29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJs
ZW4oImdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICgh
KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJl
R2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVu
dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1
bmN0aW9uIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAg
ICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIiksIHN0cmxlbigi
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCEoanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFsbG93c01lZGlhRGV2aWNlcygp
KSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1lZGlhRGV2aWNlcyIpLCBzdHJsZW4oIm1lZGlhRGV2
aWNlcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKXx8IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5oYXNTZXJ2aWNlV29ya2VyU2NoZW1lKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigic2Vy
dmljZVdvcmtlcnMiKSwgc3RybGVuKCJzZXJ2aWNlV29ya2VycyIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCiAgICAgaWYgKCEoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS50ZXN0RmVhdHVyZUVuYWJsZWQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlMUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJl
bmFibGVkQXRSdW50aW1lQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogI2VuZGlmCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicnVudGlt
ZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiKSwgc3RybGVuKCJydW50aW1lQ29uZGl0
aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1l
bnQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dB
dHRyaWJ1dGUiKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRl
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAg
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpLCBzdHJs
ZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICAvLyBBZGRpbmcg
YmFjayBhdHRyaWJ1dGUsIGJ1dCBhcyByZWFkb25seSwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHJlYWQt
d3JpdGUgdmFyaWFudCBhYm92ZS4gCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9O
UF9qc29iamVjdC5jcHAKaW5kZXggZmVlYmRlZjdiYzQ1ZTk4YzkzMDhmZGZiZGUxMTBiOTlmZGRk
Y2EyYy4uMzJjMTNiOWViNDA3MDgzNWViMjU4MzcxOTZkNzgzMjU4YWM1OTczMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0zOTEsOCArMzkxLDkgQEAgYm9vbCBfTlBO
X1JlbW92ZVByb3BlcnR5KE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKICAgICAgICAgaWYgKGktPmlzU3RyaW5nKCkpCi0gICAgICAgICAgICBvYmotPmlt
cC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmotPmltcCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCwg
aS0+c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJv
bU5QSWRlbnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSksIHNsb3QpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgob2JqLT5pbXAsIGxleGljYWxHbG9iYWxPYmplY3QsIGktPm51bWJl
cigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1t
CmluZGV4IDIyZjBiOGQ5ZDhmYWU0YTc5YzZiNjMxZTkzNWNiNmFkYzdkOTRmZmYuLmRiYzZkM2Ix
ZTE5ZjljMjFkOWI2MGMxN2VkZmY5NzE2MDA2N2MwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTQ1Nyw4ICs0NTcsOSBAQCAtICh2b2lk
KXJlbW92ZVdlYlNjcmlwdEtleTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7Cisg
ICAgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKIAotICAgIFtzZWxmIF9pbXBdLT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmcoa2V5KSkpOworICAgIFtzZWxm
IF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmcoa2V5KSks
IHNsb3QpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAg
ICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IDVlZDIxZjEzNGVmNGFhYjVkYzBj
NTVhNDVkZTZhNjNkMjdjNmJlMmUuLjYyMjk2MzY4ZWJiOTBjNTBiOWRlN2ZhMDc4MmM5YzZmYTI4
NTkxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC0x
MzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRW
YWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSk7CiAKICAgICBib29sIHRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCopIGNvbnN0OyAvLyBG
SVhNRTogQ3VycmVudGx5IHRoaXMgaXMgYnJva2VuIGJlY2F1c2Ugbm9uZSBvZiB0aGUgc3VwZXJj
bGFzc2VzIGFyZSBtYXJrZWQgdmlydHVhbC4gV2UgbmVlZCB0byBzb2x2ZSB0aGlzIGluIHRoZSBs
b25nZXIgdGVybS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpp
bmRleCAxOWVkMTljYmM3YWUzZWU0Njc3OTZiMTAzY2JmZTc2MTYwOWFkNzMwLi42ZTg3N2QyZWI3
ZjQ0ZDAzYTI4ZTE3MTA4M2JkM2QwZjBiYjk4ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgQ2FsbFR5cGUgT2JqY0Zh
bGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxs
RGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikK
IHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKaW5kZXggNGQyOTdjNzBkNmIxYjZjMWFmODhmOTE0YmU4NWY2MGRmMDNjYzliMS4uZWMz
NTg4ZmM1NjU5NTUzZjUyNzI4M2M1OGE3MzU4MDIxMzI5YWM1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgUnVudGltZUFy
cmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0
VmFsdWVBdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUpOwogfQogCi1ib29sIFJ1
bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpCitib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXgg
ZmNmNWUzM2ZiMTE0MDE4NTEwNzk5MzBmYmQxMTc2MTM1NDUyYzdlNi4uMjk4MTJhNjZkNmYwMTI0
ZTM4MzYyNWY5NTYwMTljYTMzYmMzYmQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAKICAgICB1bnNpZ25lZCBnZXRM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5nZXRMZW5ndGgoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggYTAzNmI2NjYyZDQ4NzJmNjhkYzUy
NjQ1YmExYWYyYmExNTMzMDMyZC4uOWQ1ZDYwZGVmMzU3NTRiZTFlMGUwNjIwZTQxZWRiOThlZmUz
OWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0yMDAs
NyArMjAwLDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGUKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1ib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JikKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEgcHJvcGVydHkgb2YgYSBSdW50aW1l
T2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmgKaW5kZXggNmNiZjdiZjc5NmIwYTg5NDA0Yjk0MjI3NWQ2NTFlNjBlNzMyNDU4Mi4uM2Mx
MGQ4YmQ1MGYzYjdkYWE0ODQyMjE0YjllMDRmMDQzYWZkZjJmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNw
cAppbmRleCAyZWZiMjI1MjNmOTIxZTkyYWJkMDIxNmViMGNkMWZmZDEwMDM2MmJlLi4wNWQxMjky
OTM5NTgyZjA0YzQzMmQzMGMxNDJkYmE1ZGFhMGJmMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAt
MzYxLDcgKzM2MSw3IEBAIGJvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxKU05QT2Jq
ZWN0Kj4oY2VsbCktPmRlbGV0ZVByb3BlcnR5KGxleGljYWxHbG9iYWxPYmplY3QsIG5wSWRlbnRp
ZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCmluZGV4IDg1
NTg4OTQ5YTMwNjA0YzY5Zjc3Y2NjM2Y2MGU1NDY5NzdmZmFjNmQuLjQ4MDNjMGJjNTcxZjk3N2Rk
YzI3MjJiYmFiOTZiNmQyN2MyYTljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTk1LDcgKzk1LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0
eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
OjpKU0dsb2JhbE9iamVjdCosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0
LmNwcAppbmRleCAzNmYyOGVlNmZiMDEwMmQ4YzE3NzEzYzYwOGI2MTRlYWY4NWRkYjc2Li44Yjlm
Y2RmMzA4NTJkMWQyMjJhNWIzYmQ1OTA2ZGE0YmFmZTQzYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApA
QCAtMjI5LDggKzIyOSw5IEBAIGJvb2wgTlBKU09iamVjdDo6cmVtb3ZlUHJvcGVydHkoTlBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5n
ZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRl
bnRpZmllciwgc2xvdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2pzT2JqZWN0LT5o
YXNQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSkp
IHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAzMmFmYTI4MGZhOTI3ZDg3NzMyMGViODFj
YmQ5MDcxMDI1NTk3ZS4uMTJjZTQwOWM1NDNjMjI4ODIyNzcxOWIyZDQxMDhiZjJhODc5ZDQ5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTE0MSw4ICsx
MTQxLDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJlbW92ZVByb3BlcnR5
KHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGkKICAgICAgICAgc2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmOWUxMWJkNDc5YmExNTA0NzQ4ZjU4M2JhNmZhMzEy
NWUzNzg0NTMxLi44MWI5Y2VkYThiZDllN2Y2ZWI1ZjMwMTI3Y2IzZTFiN2ZkMTg0NTBmIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYzIEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFw
cGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbCBpbiBiYXNl
bGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzOgor
ICAgICAgICAoZGVsZXRlLkMucHJvdG90eXBlLnopOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25l
cSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5l
LmFzc2VydF9uZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwubWFrZUZvbzYpOgorICAgICAgICAo
bm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRl
c3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhp
Y0RlbEJ5VmFsKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlu
bGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0
X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0X3Rocm93cyk6Cisg
ICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2Vy
dF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtl
Rm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9Jbmxp
bmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQu
bWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRl
c3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hl
YWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQp
OgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURl
bGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanM6CisgICAgICAgICogc3RyZXNzL2RlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAg
ICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKGFzc2VydF90
aHJvd3MpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lu
bGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0
X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJ
ZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlE
ZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxl
dGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNz
Lm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5
SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RD
YWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgubWFrZUZvbzUpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleCk6
CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlW
YWwubWFrZUZvbzYpOgorICAgICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5
VmFsLnRlc3RCaWdpbnREZWxldGVCeVZhbC5tYWtlRm9vNyk6CisgICAgICAgIChub0lubGluZS50
ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC50ZXN0QmlnaW50RGVsZXRlQnlWYWwpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxldGVCeVZhbC5tYWtl
Rm9vOCk6CisgICAgICAgIChub0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJv
bERlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xEZWxldGVCeVZhbC50
ZXN0T2JqRGVsZXRlQnlWYWwubWFrZUZvbzkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN5bWJv
bERlbGV0ZUJ5VmFsLnRlc3RPYmpEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0
T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdC5tYWtlRm9vMTApOgorICAgICAgICAobm9JbmxpbmUu
dGVzdE9iakRlbGV0ZUJ5VmFsLnRlc3RTdHJpY3QpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN0
cmljdC50ZXN0T3ZlcnJpZGUuYXJyLmopOgorICAgICAgICAobm9JbmxpbmUudGVzdFN0cmljdC50
ZXN0T3ZlcnJpZGUpOgorICAgICAgICAobm9JbmxpbmUudGVzdE92ZXJyaWRlKToKKwogMjAyMC0w
Mi0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUGxhY2F0ZSBl
eGNlcHRpb24gY2hlY2sgdmFsaWRhdG9yIGluIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCgp
LgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZy
b20tcHJvdG90eXBlLWNoYWluLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXBy
b3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCmluZGV4IDQ5YTMxYjdmMjQ3YzFiZDBhY2E4
MmNiMjJkZjIwZThmMWJmNjFiZGQuLjU0YmJhODJlNjk5YzYyY2NjYTg5NDUxNmU2MmI3ZTZjYTFm
NTEyMDIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0
eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKQEAgLTEsNCArMSw0IEBACi0v
L0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIGFkZGVkIGJ5IG1h
cmstanNjLXN0cmVzcy10ZXN0LnB5CisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRj
aC8KIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgaWYgKCFiKQogICAgICAgICB0aHJvdyBuZXcg
RXJyb3I7CkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGRvVGVzdCh6VmFsKSB7CiB9CiBub0lu
bGluZShkb1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDA7ICsraSkgeworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CiAgICAgY29uc3QgWCA9IHsgaSB9CiAgICAgQy5wcm90
b3R5cGUueiA9IFgKICAgICBkb1Rlc3QoWCkKQEAgLTM2LDcgKzM2LDcgQEAgZm9yIChsZXQgaT0w
OyBpPDEwMDAwOyArK2kpIHsKIAogZGVsZXRlIEMucHJvdG90eXBlLnoKIAotZm9yIChsZXQgaT0w
OyBpPDEwMDAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyArK2kpIHsK
ICAgICBnZXRaKHt6OiBpfSkKICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5
bW9ycGhpYy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxp
bmUtY2FjaGUtcG9seW1vcnBoaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhZmZhYzk4ZTU2M2Q1ZjM3ZjZl
ZTIwOTA4NWQ2NDgzYzk2ODFkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAs
MCArMSw1MyBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0
aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7
Cit9Citub0lubGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3Nl
cnRfbmVxKQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJh
eiIraV0gPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIr
aV0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKwor
ICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7
CisgICAgICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7
IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3Nl
cnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVu
Z3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitq
XSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNE
ZWxCeVZhbCkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAzMDAwMDsgKytpKSB7CisgICAgdGVzdFBv
bHltb3JwaGljRGVsQnlWYWwoaSkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5OTEyZGE0
YmJiYWFkMDUyMWU1NTEyNWM5MDdlNWZiMmNkYzE0ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0w
LDAgKzEsMTc0IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KKworZnVu
Y3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0
X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJh
c3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF90aHJvd3MoZnVuKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcgPSB0cnVlCisgICAg
fQorICAgIGFzc2VydCh0aHJldykKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2Vy
dF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCitub0lubGluZShhc3NlcnRfdGhyb3dzKQorCitm
dW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9v
KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAg
Zm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbwor
ICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQor
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1h
a2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikK
KyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3Nl
cnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNz
ZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9u
IHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMigpIHsK
KyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5i
YXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFr
ZUZvbzIoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikK
KyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3Nl
cnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNz
ZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0
aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZv
bzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisg
ICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9J
bmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAg
IH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBm
b28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgs
IDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJi
YXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFn
ID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJi
dWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAg
YXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxl
RW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3Mo
KSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAg
ICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEo
ZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwg
dHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6
IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0
MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNCkKKwor
ICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsr
aikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAg
ICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1si
YnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZE1pc3MpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDA7ICsraSkgewor
ICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlW
YWwoKQorICAgIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkTWlzcygpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJl
LmpzCmluZGV4IDc3OTVkYzU4MTU3OGU0YzM5ODFjMjJhYzg3NmM0NTU0MTNlNjRkM2MuLmE5Mzlh
YWUzYWM4YWNjYzIyMTRkZDdlN2Q4MDI0NDIxYTgxNjQ1ZDkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJl
LmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1j
YWNoZWFibGUtc3RydWN0dXJlLmpzCkBAIC0yNCw1ICsyNCw1IEBAIGZ1bmN0aW9uIGRvVGVzdCgp
IHsKIH0KIG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwMDsgKytp
KSBkb1Rlc3QoKQorZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyArK2kpIGRvVGVzdCgpCiAK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBlMGRhMDEzMTU5MTE5ZjYwMzAwZmQxMGUyMWNjMWE0OGNlNzZiYjkKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpz
CkBAIC0wLDAgKzEsNDIxIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIpCisK
K2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorCitmdW5j
dGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRy
eSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHRocmV3ID0gdHJ1ZQor
ICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShhc3NlcnQpCitub0lubGluZShh
c3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9JbmxpbmUoYXNzZXJ0X3Rocm93cykK
KworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFr
ZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBm
b28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBBcnJheSg1
MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0g
PSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09
IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAg
YXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAg
IGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitmdW5j
dGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzIo
KSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBm
b28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4gZm9v
CisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUw
KQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9
IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09
IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAg
YXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAg
IGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQorCitm
dW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1h
a2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAg
ICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVl
KQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAg
IG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28zKCkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVu
Z3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQo
ISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9v
LmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZv
b1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
ICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hl
YWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRN
aXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0
X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAg
ICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAgIHZh
bHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOworICAg
ICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRf
ZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2Jh
ciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzQp
CisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0ZXN0RGVsZXRlSW5kZXgoKSB7Cisg
ICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBm
b28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBmb29bMF0gPSAyMworICAg
ICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUp
CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0cnVlKQorICAgICAgICBkZWxldGUg
Zm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb281
KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb281KCkKKyAgICB9CisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisK
KyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQor
ICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAg
ICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIi
IGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0sIDIzKQorICAgICAgICBhc3NlcnRf
ZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sxXSA9IDEKKyAgICAgICAgYXNzZXJ0
X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0RGVsZXRlSW5kZXgpCisKK2Z1
bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9v
NigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1siYmF6IitpXSA9IDEKKyAg
ICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6IitpXQorICAgICAgICBy
ZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQorCisgICAgYXJyID0gbmV3
IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZv
by5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwg
MSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0g
MQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9
IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCgh
KCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhpY0Rl
bEJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rp
b24gbWFrZUZvbzcoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dID0gMQorICAgICAgICBmb28uYmFy
ID0gMgorICAgICAgICBkZWxldGUgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTBuXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b283KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb283KCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pd
CisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmpl
Y3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG4gaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEK
KyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAz
CisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdEJpZ2ludERlbGV0ZUJ5VmFs
KQorCitmdW5jdGlvbiB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwoKSB7CisgICAgY29uc3Qgc3ltYm9s
ID0gU3ltYm9sKCdmb28nKTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb284KCkgeworICAgICAgICBs
ZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydCghKFN5
bWJvbCgnZm9vJykgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KHN5bWJvbCBpbiBmb28pCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQorICAgICAgICByZXR1
cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb284KQorCisgICAgYXJyID0gbmV3IEFy
cmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IG1ha2VGb284KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyAr
K2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5i
YXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkK
KyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisg
ICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMwor
ICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RTeW1ib2xEZWxldGVCeVZhbCkK
KworZnVuY3Rpb24gdGVzdE9iakRlbGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0IHN5bWJvbCA9IHsg
aTogImZvbyIgfTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb285KCkgeworICAgICAgICBsZXQgZm9v
ID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydChzeW1ib2wgaW4g
Zm9vKQorICAgICAgICBhc3NlcnQoISh7IGk6ICJmb28iIH0gaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisgICAgICAgIHJldHVybiBmb28K
KyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzkpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTAp
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0g
bWFrZUZvbzkoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0g
MikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAg
ICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAg
YXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAg
IGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdE9iakRlbGV0ZUJ5VmFsKQorCitmdW5jdGlv
biB0ZXN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIG1ha2VG
b28xMCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAor
ICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2Vy
dF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvby5mb29iYXIpCisgICAgICAgIGFzc2VydF9lcShmb28u
Zm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtl
Rm9vMTApCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzEwKCkKKyAgICB9CisKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJy
W2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShP
YmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAg
ICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9
PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5l
KHRlc3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RPdmVycmlkZSgpIHsKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gZnVuY3Rpb24oKSB7IH0KKyAgICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNPd25MZW5n
dGhQcm9wZXJ0eShhcnJbal0pLCB0cnVlKQorICAgICAgICBkZWxldGUgYXJyW2pdLmxlbmd0aAor
ICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIGZhbHNl
KQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBj
b25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiAr
IGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T3ZlcnJpZGUpCisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpCisgICAgdGVzdENhY2hlYWJs
ZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkKKyAg
ICB0ZXN0RGVsZXRlSW5kZXgoKQorICAgIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpCisgICAg
dGVzdEJpZ2ludERlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwoKQorICAg
IHRlc3RTdHJpY3QoKQorICAgIHRlc3RPdmVycmlkZSgpCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390841</attachid>
            <date>2020-02-14 17:27:00 -0800</date>
            <delta_ts>2020-02-14 17:41:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200214172659.patch</filename>
            <type>text/plain</type>
            <size>213567</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YzJmNGNhYjRhNTA3ODRkOGJhZmI3MDJkNjRlNjNiMDRmYWM0MGJlLi5iYWYyNjAwMmUxODBhNTFk
NWI0Y2YwZDk2NTc4NjYzMTAzNmYzY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTEyICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgb3B0aW9ucyBmb3IgZGVi
dWdnaW5nIFdBU00gY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMmM5MWMzMGU3ZTAyNmMzNzhmNjczMTAwODY1MmM0MGQz
MTI0ZTQ3OS4uZWVmNDhlNTZhYmI5M2JjMGJjNGE1ZmMzODI5M2IxNDEzM2VkMTBkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMC0wMi0xNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwZWN0
cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVj
dHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJ1aWxkTGlzdCBjb25z
dCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjpyZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpiZWdpbik6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVkLgorCiAyMDIwLTAyLTEyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
UCBpbWFnZSBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNkNTVkOTE5Yjg5
MTBmOGQwNTFmNTVlNmU3OWJjOGQ0ODRhODcwZTEuLmMyNDFkOWE1ODczMTY1NWQ2YTM5NmIxZDEz
ZjZmMzNhOTkxYTYwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAyMC0wMi0xNCAg
SnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5s
aW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
TG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90
ZURPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlbW90ZURPTVdpbmRv
dzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChH
ZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5vZGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBicmlk
Z2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToK
KyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9h
cnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAy
MC0wMi0xMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24gdG8gU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkMDAxNGI2NDA2M2M3OTYxZWQ1NGNhMzdiZGRkOGEw
MjlmZTJiNWRmLi45MTlmY2VjOGMzYTI1MGMxZTI2YzQ5OGVlNjNiNWI2MmU1OWI3OTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlk
L3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6
cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTEzICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDaGVjayBpZiBQSVAgaXMgc3VwcG9ydGVkIGlu
IHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTYwNzQ0ZmY0
YjI3MzEwZDAyZmUwMmI5MTdkZjA5NDUyMzRlYTNjMC4uNDNlYWNlMjBmMzA4YTRjZmM4NDlmYjg3
N2E5NWIyYjIzMjQxZTNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxl
LmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyNTUxNTgsIDI1NTQwNSBhbmQgcjI1NTQ4NgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAwMzRiMzU3YzA3MzhlMzQ5MTI1ODg1
OGQ3MDY5ODlmZWZjYjQ4MzNkLi45MmNhOTI0Nzc5NjJiYzA0YzdhOGViODZhMWY0MTVkMmIxODdm
MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApA
QCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAK
ICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IGNkNTExYmZkMjg0YTAxMzI1MmE2NDA1YTY3
MDdhYWQxMzdhMWJjY2IuLjRiZWMzM2E3MmRjMjg0NzdhNjEzNTZmZGI5MjBhNDc2ODYyZWQ3MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00MTgsNyArNDE4LDcgQEAgYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBQYXJlbnQ6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBA
IC00MjYsNyArNDI2LDggQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZt
LCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggZjdmOWRhYjNmMjhh
ZGMwZWFiYjJiZGU4YjI1MDY3NzJhZDI1ZmZjZS4uOWRmODc4ZTU4OGZhMmFlZjA2MjJhYzY5NTg3
ODFhYmU2N2EzN2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5j
cHAKQEAgLTQ3OSw3ICs0NzksOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlGb3JLZXko
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUgogICAgIGlmICho
YW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4Y2VwdGlv
blN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgcmVz
dWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
IGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
anNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTUzNCw3ICs1MzUsOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcgogCiAgICAgSlNPYmpl
Y3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZp
ZXIoJnZtKSwgc2xvdCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwg
ZXhjZXB0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDkxZTQyN2MzMGM1MTE2M2VkZDlmMTA2ZDQyZjk1ZTA5ZDAyYmU5YzQu
Ljc1NTZlOTU2ZmM2MzJmN2UyYjlkMGUxYWRiZjdjYTgxZjhlOGYwNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxNSw2ICs4MTUsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmgK
ICAgICBydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgKICAgICBydW50aW1lL0RlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oCisgICAgcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaAogICAgIHJ1
bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50aW1lL0RpcmVjdEV2YWxFeGVj
dXRhYmxlLmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhZjQyYzJhZThmZTU5MmJmNmQ2ODI4NTM4OTc2ZDBjZjZkYTZkYjFmLi5m
Yjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIwMmM0ZjZlNDQxODVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTE3OCw2ICsxMTc4LDcgQEAKIAkJNzBFQ0E2MDYxQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyog
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUFG
N0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi87
IH07CisJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczNEI2NTU0MjNG
NEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1NjUg
LyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BT
dHJlbmd0aC5oICovOyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyogV2FzbUNvbnRl
eHRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkwMDgxMzkxRTk1
QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5
NzEsNiArMzk3Miw3IEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFG
N0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQzFEMEQz
MThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBE
ZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVs
ZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTkz
MjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBwYXRoID0gYjMvQjNS
ZWR1Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5
OTUyMkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgcGF0
aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MDg0LDYgKzcwODYsNyBAQAogCQkJCUJDRDIwMzQ3MEUxNzEz
NUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVF
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFF
Rjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywKKwkJCQk3MzRCNjU1NDIzRjRB
MzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8sCiAJCQkJMEZFMDUwMEYxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJMEZFMDUwMTAxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDBEMUFBOTA5
MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuY3BwICovLApAQCAtOTIwOSw2ICs5
MjEyLDcgQEAKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VE
dW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJCNzNCQjFERUY4
NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3Ry
YWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8q
IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2NjIsNyArMTA2
NjYsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8g
PSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYXR0cmlidXRlcyA9IHsKLQkJCQlCdWlsZElu
ZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CiAJCQkJRGVmYXVsdEJ1aWxkU3lzdGVt
VHlwZUZvcldvcmtzcGFjZSA9IE9yaWdpbmFsOwogCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0g
MDcwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAyYWY0ODBhOWNlN2Q4MDI1Y2U1ODgz
ZDhhZGY5Yzk4NDI2OWJhOTc1Li5jNGYxNjcxZTUwMTRiNWQ0N2NkZWViOTEwZGYyMzk2ZGU4MjFi
NDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
CkBAIC03Myw2ICs3Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNl
OjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5ndGg6CkBAIC0xMDYsNyAr
MTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAtMTIzLDYgKzEyNSwyMiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBUcmFu
c2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAorICAgIFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91
c0lEKCkpOworICAgIGlmICghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIG9s
ZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAvLyBXZSBkbyBub3Qg
Y2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2Vs
bC4KKyAgICAgICAgLy8gU2VlIHRoZSBEZWxldGUgY29kZSBiZWxvdy4KKyAgICAgICAgYm9vbCBt
YXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIG5ld1N0cnVjdHVyZS0+bWF5SGF2ZUluZGV4aW5n
SGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisKKyAgICAgICAgaWYgKG1heU5lZWRUb0NoZWNr
Q2VsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKK30KKwogQWNj
ZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjYyLDYgKzI4MCw5IEBAIGJvb2wgQWNj
ZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkgY29uc3QKICAgICBjYXNlIExv
YWQ6CiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBieV92YWwgZm9yIHRoZXNlIHB1
dHMsIGJ1dCB3ZSBkbyBjYXJlIGFib3V0IHRoZSBpZGVudGlmaWVyLgogICAgIGNhc2UgVHJhbnNp
dGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToK
KyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6
CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zMDksNiArMzMwLDkgQEAgYm9vbCBBY2Nlc3NDYXNl
OjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjaygpIGNvbnN0CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoK
QEAgLTM1Niw2ICszODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFu
c2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxl
OgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlz
czoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTQ0Nyw2ICs0NzQsOSBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3Rvcikg
Y29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgogICAgIGNhc2UgTG9hZDoKICAg
ICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25D
b25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAg
ICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00OTIsNiArNTIyLDkgQEAgYm9v
bCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxsKj4qIGNlbGxzVG9N
YXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgogICAg
ICAgICBkb2VzQ2FsbHMgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERlbGV0ZToK
KyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAg
ICAgY2FzZSBMb2FkOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CkBAIC02MTQs
NiArNjQ3LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFjY2Vzc0Nhc2Um
IG90aGVyKSBjb25zdAogCiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAg
ICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNl
IERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNl
IEdldEdldHRlcjoKQEAgLTY2Myw3ICs2OTksNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBl
IGFjY2VzcyBjaGFpbiA9ICIpOwogICAgICAgICBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLT5kdW1w
KHN0cnVjdHVyZSgpLCBvdXQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0g
VHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9
PSBEZWxldGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBw
b2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9pbnRlckR1bXAobmV3U3RydWN0dXJl
KCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUpCiAgICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChtX3N0cnVjdHVyZS5nZXQoKSkp
OwpAQCAtNzA1LDYgKzc0MSw3IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewog
ICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKICAgICAgICAgaWYgKHZpc2l0
b3Iudm0oKS5oZWFwLmlzTWFya2VkKG1fc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpKQogICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX3N0cnVjdHVyZS5nZXQoKSk7CiAgICAg
ICAgIGVsc2UKQEAgLTE4NTEsNyArMTg4OCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgc3RhdGUu
cmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUsIHJlc3VsdFJl
Z2lzdGVyVG9FeGNsdWRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CiAgICAgICAgICAgICBqaXQu
c3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCkBAIC0xODk2LDYgKzE5MzMs
NjcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNsb3dQYXRoLmVtcHR5KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBEZWxldGU6IHsKKyAgICAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsK
KyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CisgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hH
UFIpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmlz
UHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisKKyAgICAgICAgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9CisgICAgICAgICAgICBh
bGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKworICAgICAg
ICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRl
ciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tD
ZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSB5ZXQgc28gdGhhdCB3
ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAgICAvLyBTZWUgU3RydWN0
dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5LgorICAg
ICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIENsZWFyIHRoZSBi
dXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUgZXhw
ZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRl
cmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdIZWFkZXI7CisKKyAgICAgICAg
aml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CisKKyAgICAgICAgaWYgKHNob3Vs
ZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSkgeworICAgICAgICAgICAgaml0Lm51a2VT
dHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgYmFz
ZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7Cisg
ICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAgICAgICAgICAgICAgICAg
ICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAgICBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAgICBvZmZzZXRJbklubGluZVN0b3JhZ2UobV9v
ZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1
ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAqIHNp
emVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgc3RydWN0dXJl
Qml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3RydWN0dXJlKCktPmlkKCkpOworICAg
ICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAgICAgIGppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkp
OworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKGpp
dCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZTogeworICAgICAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGZhbHNlKSwgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlzczogeworICAgICAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsK
KyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgICAg
ICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmlu
ZGV4IDc5ZDMxMDE1NWU5M2E1NDUzZDI4NjFjNDMyMjdiYTNiYWMxOWYyNzcuLmM2YzgxODQ0NjM0
MWQwYTQzYzY3YWVjOTMxODMzMzc0Nzg3ZDE4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgZW51
bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExvYWQsCiAgICAgICAgIFRyYW5zaXRp
b24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAgRGVsZXRlTm9uQ29uZmlndXJhYmxlLAorICAg
ICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBsYWNlLAogICAgICAgICBNaXNzLAogICAgICAg
ICBHZXRHZXR0ZXIsCkBAIC0xNDYsOCArMTQ5LDExIEBAIHB1YmxpYzoKICAgICAgICAgU3RydWN0
dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4gPSBudWxscHRyKTsKIAogICAgIC8vIFRoaXMgY3JlYXRlIG1ldGhvZCBzaG91bGQgYmUg
dXNlZCBmb3IgdHJhbnNpdGlvbnMuCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsK
KworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZN
JiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7
CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0
dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0xNTcsNyArMTYzLDcgQEAgcHVibGljOgogCiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBU
cmFuc2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09
IERlbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpOwog
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQpAQCAtMTY1LDcgKzE3MSw3
IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbik7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKTsKICAgICAgICAgcmV0dXJu
IG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMTMyNDA5YzBhNDUxMGJk
ZmE4ZWNlMzNiNzQzNDcxNjAyZDdiMGU3OS4uYjE2NmMzMGMxOGE1MjNhNzYyNWYzOWFmNmI3ODk1
MDY3YWE1ZjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC03OTUsNiArNzk1LDE1IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBBY2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGUpCiAgICAg
Y2FzZSBBY2Nlc3NDYXNlOjpUcmFuc2l0aW9uOgogICAgICAgICBvdXQucHJpbnQoIlRyYW5zaXRp
b24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlOgorICAg
ICAgICBvdXQucHJpbnQoIkRlbGV0ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nl
c3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRl
Tm9uQ29uZmlndXJhYmxlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6
OkRlbGV0ZU1pc3M6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlTWlzcyIpOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpSZXBsYWNlOgogICAgICAgICBvdXQucHJpbnQo
IlJlcGxhY2UiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNjE3ODczN2Y5ZjhhOWNk
MGI2ZGRhZDU3ZjFjZjEyZWZlNGZjYTcwNS4uOTZhMWJhZWNiZTRjYmJiNzZkYmRlZGE4MDU2NWEy
YzU5ODY1NTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNzYsNiArMjc2LDEyIEBAIHZvaWQgU3RydWN0dXJl
U3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6SW5zdGFuY2VPZjoKICAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgorICAgICAgICByZXNldERl
bEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKKyAgICAgICAgcmVzZXREZWxCeShj
b2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIAogICAgIGRlcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IGRkY2U4NWVjMDI1NTU3NmM5ZTM0
NTFmNjQ3MzZkMTJjMzg5NDI4MDMuLmI1NzViZGQyMTYxOWMyZGZlNGYxODJmYWVkOTBmMjY4ZTll
MjYxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCkBAIC01NSw3ICs1NSw5IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGlu
dDhfdCB7CiAgICAgR2V0QnlWYWwsCiAgICAgUHV0LAogICAgIEluLAotICAgIEluc3RhbmNlT2YK
KyAgICBJbnN0YW5jZU9mLAorICAgIERlbGV0ZUJ5SUQsCisgICAgRGVsZXRlQnlWYWwKIH07CiAK
IGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCAyNmUyODI5MzllOWFjYTg4NjVj
MjIxNzczYzJhNDFlMDI4MDk0ZGRhLi40OGI1Yjg2ZmE0YjllODY1ZWE0OGRjOTlhNDkzYmQ5NDhk
MDc0ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
U2NvcGUuY3BwCkBAIC0xMjksMTQgKzEyOSwxNCBAQCBib29sIERlYnVnZ2VyU2NvcGU6OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZQog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5w
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAotYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiti
b29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERl
YnVnZ2VyU2NvcGUqPihjZWxsKTsKICAgICBBU1NFUlQoc2NvcGUtPmlzVmFsaWQoKSk7CiAgICAg
aWYgKCFzY29wZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkp
OwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7
CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSkt
PmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAogdm9pZCBEZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFy
cmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZmNGNlMWIxZGE0YjU3
OTBkZThhZDk4OGE3MWY2MDJjZGYyNjE2NzQuLjQzMjdjMWYwMmM2OTI3ODQ1MDhlMGE5YTFhMjE0
OTc3NWVkZDgwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGUzZTIw
OGQyZGExY2Q3MzliZmFjYzhjMzRjNTQ5N2NjNTYyZGI5MzYuLjM4NzE1OTE3ODkwMzEyMGE2MTI2
NDVlNGEyMzQzNTEzYmE1ZGJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCkBAIC0yNDYsNiArMjQ2LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
ayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0
QnlJZHNXaXRoVGhpcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9n
ZXRCeVZhbHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0QnlJ
ZHMsIGxpbmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIGxp
bmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5rQnVm
ZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggNDg4MDg3NGMy
ODVhYjdkNDQ3ZWI4OTNhNmU4YjRiYmYwMTA3MzFkNC4uMmZiNmFkOGY2MmY5NWEyNmU2Y2RiODI2
YWE2ZDFjZDY3ZjE5NDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaApAQCAtMTkxLDcgKzE5MSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3B1
dEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4oZ2Vu
LCBzbG93UGF0aCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgYWRkRGVsQnlJZChjb25zdCBK
SVREZWxCeUlkR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAg
ICB7CisgICAgICAgIG1fZGVsQnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxC
eUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGREZWxC
eVZhbChjb25zdCBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciog
c2xvd1BhdGgpCisgICAgeworICAgICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoSW5saW5lQ2FjaGVX
cmFwcGVyPEpJVERlbEJ5VmFsR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCiAg
ICAgdm9pZCBhZGRJbnN0YW5jZU9mKGNvbnN0IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiwg
U2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgbV9pbnN0YW5jZU9m
cy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+KGdlbiwg
c2xvd1BhdGgpKTsKQEAgLTM0OCw2ICszNTgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxJbmxp
bmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiwgND4gbV9nZXRCeUlk
c1dpdGhUaGlzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlWYWxHZW5l
cmF0b3I+LCA0PiBtX2dldEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJ
VFB1dEJ5SWRHZW5lcmF0b3I+LCA0PiBtX3B1dEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNo
ZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlJZHM7CisgICAgVmVjdG9y
PElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlWYWxz
OwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4g
bV9pbkJ5SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdl
bmVyYXRvcj4sIDQ+IG1faW5zdGFuY2VPZnM7CiAgICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4g
bV9qc0NhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCA2NDJiMTYzNTZmOTBlOWMzODYwMmViYzU3ZmQ5ZTA0YTBmNDViNTI4Li44
NTNkYzg5MmFhYjUyNjA0YmQ4MmQyY2QzMzIzZjUwZWQ2YTgxZTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTE0OCwzOCArMTE0
OCw3MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHsKICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwog
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgYXV0byogcHJvcGVydHkg
PSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CiAKLSAgICB2YWx1ZS51
c2UoKTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7
CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2Vu
ZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVh
bS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJl
Z2lzdGVycygpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKLSAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShT
cGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KHZhbHVlUmVncykpOwogCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRv
ciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywKKyAgICAgICAgdmFsdWVSZWdzLCByZXN1bHRHUFIpOworCisgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvcGVydHkpOworCisgICAgbV9qaXQuYWRkRGVs
QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2Rl
KiBub2RlKQogewogICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CiAKICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIGJhc2UudXNlKCk7Ci0gICAga2V5LnVz
ZSgpOworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsK
KyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5l
cmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFt
LT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVn
aXN0ZXJzKCk7CiAKLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVsZXRlQnlWYWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWdzLCBrZXlSZWdzKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisgICAgaWYgKCFtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIAotICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNl
UmVncywga2V5UmVncywgcmVzdWx0R1BSKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUs
CisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFz
ZVJlZ3MsIGtleVJlZ3MpOworCisgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisg
ICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRkMzQyN2JjODJl
OGM5YjI0N2FjODcxYTAyMDAwMWJiMjM4MjlmMjYuLjdjZGYyNmJkZjYyNDc3ODllYThmNjIwYTZk
MDNlYzAzZGRhNTZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTUxNDQsMjAgKzUxNDQsMTA5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0LmNvbnN0
SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTxEZWxCeUtpbmQga2luZD4KKyAgICB2b2lkIGNvbXBpbGVEZWxCeSgpCisg
ICAgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQ7CisgICAgICAgIGF1dG8g
YmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQ7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5v
cm1hbCkgeworICAgICAgICAgICAgdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
aWRlbnRpZmllck51bWJlcigpXTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBtX291dC5wYXRj
aHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rl
cihiYXNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gc3Vic2NyaXB0ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBt
X291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNv
bWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdp
c3RlcihzdWJzY3JpcHQpOworICAgICAgICB9CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworCisgICAg
ICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQor
ICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwor
CisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ub2RlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAg
ICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24u
YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAg
ICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQorICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFt
cyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFy
YW1zWzBdLmdwcigpOworCisgICAgICAgICAgICAgICAgY29uc3RleHByIGF1dG8gb3B0aW1pemF0
aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRp
bWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRv
IHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2lu
ZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5n
cHIoKSk7CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0
byBnZW5lcmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtp
bmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5HUFIpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQs
IHJldHVybkdQUik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7
CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKwor
ICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBq
aXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlu
a0J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5u
b3RaZXJvNjQocGF0Y2hwb2ludCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5
SWQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBhdXRvIHVp
ZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0g
ICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
RGVsZXRlQnlJZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgbV9vdXQuY29uc3RJ
bnRQdHIodWlkKSkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsPigp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKCkKICAgICB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0
KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWwsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2lu
ZDo6Tm9ybWFsQnlWYWw+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UHVz
aCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRl
NDQ0YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0
MjY1NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAg
ICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxm
UGF0Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2Vs
ZlBhdGNoKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhE
ZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2OWNk
MWI3ODc0NGU4Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7
CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1f
ZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFu
Y2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9j
YWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9i
eV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9kZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3Vs
dCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRj
aEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBw
YXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hC
dWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVy
KTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTll
ODY1NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dl
dEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1
dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7Cisg
ICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBW
ZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8
SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5
VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0
b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYg
KzkzOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRo
VGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVgg
fTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAg
ICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25l
ZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlW
YWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxs
TGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRi
ZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLjhlZGFmOTkxM2JjOTVjYTQyYzU4ZTZiZWRlZDYw
Y2U5MjczMzAwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY2IEBAIFZfSklUT3BlcmF0
aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmln
aW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJz
KQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAg
IEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJh
c2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5
R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0g
cmVzdWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQ
UiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlk
R1BSUmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdH
UFIoKTsKKyNlbmRpZgorfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgp
OworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUg
PSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUo
CisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQoreworICAg
IEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdp
c3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsK
KyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJbmZv
LT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9w
ZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1
bHQ7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0g
YmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJS
ZWc7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7Cisj
ZW5kaWYKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFi
ZWwoKTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5r
QnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1f
c3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBz
bG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFy
dCkpOworfQorCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAppbmRleCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2
Li43NTUwODZhOGQ5YWJlMWJmMTAxNGM0ZTU5ZDE2ZWNiNjc3NjQxNzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0x
NDIsNiArMTQyLDU2IEBAIHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitj
bGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgor
ICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRv
cigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAu
bV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExpbmtCdWZmZXIm
IGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKwor
ICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgor
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQ
YXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKworY2xhc3MgSklURGVsQnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9z
bG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAg
IExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5r
QnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwor
Citwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogY2xhc3MgSklU
SW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAg
IEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0OGRj
NjMzNC4uN2JkZjFmNzMyYmY0ZTA1ZDliODU2OTZlZjQ2ODQ3ZjNiNTYxMDc2YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTQyLDcgKzIxNDIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9w
ZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQog
ICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1MCwzMSArMjE1MCw1
MSBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCkp
OworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
dWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
IGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRv
RGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi0KLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVl
LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hp
bmcodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAg
ICAgICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VW
YWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpO
b3JtYWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpOwor
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgdWlkKTsKIH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBK
U1ZhbHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKIHsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxOTAsNyArMjIxMCw3IEBAIHN0YXRpYyBi
b29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBWTSYKICAgICBlbHNlIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9
IGtleS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHkpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAg
fQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQpAQCAtMjE5
OCwyMCArMjIxOCw0MiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgcmV0dXJuIGNvdWxk
RGVsZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKSkpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5z
dHJ1Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAo
YmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJ
ZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAg
ICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2Rl
QmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVw
YXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRL
ZXkpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0s
IHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkU3Vic2NyaXB0KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNo
V2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNj
b3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQz
ZWVmZjgyYTMwMGMuLjYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsMTAgKzI1
MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9J
TlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3Vy
cmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBv
YmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQ
TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYWJmNTJm
NzEzZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJmNi4uNWRjMGIxMTFlMTk4ZTk0MDRhMzc2
MGUwMmRmODc1M2UzMDg4MGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICszODcsMzkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7Cisg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBKSVREZWxC
eUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
cmVnVDApOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CisKKyAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQorCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRGVsQnlJZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9k
c3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpLmltcGwoKTsKKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVs
QnlJZHNbbV9kZWxCeUlkSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIG1fY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkgKzQyOCw0
MiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocmVnVDEsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5
KTsKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDApOworICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRj
OGJkYWVlZjE0Yy4uOTgwNDBmYTExZjQ3YTE2ZDQzNDJiZjZiZTE4YzJlODA2OTdmYWVkOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC0xMjMsNyArMTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9w
cm9wZXJ0eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50
aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkR2VuZXJpYywgcmVnVDAsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0
ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJv
cGVydHkpLmltcGwoKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDAp
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTEzMyw5ICsxMzUsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHks
IHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpT
UmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBudWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMywgcmVnVDIpKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9Cit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpIHsgfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkxODIwNDE1NTRiZGM3NmMxOTFjYjEz
ODVkMTNhOWM4MWZmZDQ1ZWIuLmJlNzUwMWVmMjJjMTgzM2U0ZmI3ZjA2YTlhYmUzYWFiMDc2ZWRj
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNjQxLDcgKzY0MSw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAg
ICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29k
ZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNo
ZWFibGVTZXR0ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20o
KSkgewpAQCAtNzM0LDYgKzczNCw3MiBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2lu
ZCkpOwogfQogCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBEZWxCeUtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OworCisgICAgeworICAgICAgICBHQ1NhZmVD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCk7CisKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkp
CisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIWJhc2VW
YWx1ZS5pc0NlbGwoKSB8fCAhb2xkU3RydWN0dXJlIHx8ICFvbGRTdHJ1Y3R1cmUtPmlzT2JqZWN0
KCkgfHwgIW9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFzbG90LmlzQ2Fj
aGVhYmxlRGVsZXRlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKworICAgICAgICBpZiAo
c2xvdC5pc0RlbGV0ZUhpdCgpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZz
ZXQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KG9s
ZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQpOworICAgICAgICAgICAgaWYgKCFu
ZXdTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKyAg
ICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxl
KCkgfHwgbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdPZmZzZXQgPT0gc2xvdC5j
YWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5wcmV2aW91
c0lEKCkgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUt
PmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3
U3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0
KG5ld09mZnNldCkpOworICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURl
bGV0ZSh2bSwgY29kZUJsb2NrLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIG5l
d09mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICB9IGVsc2UgaWYg
KCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xvdC5pc05v
bmNvbmZpZ3VyYWJsZSgpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlLCBD
YWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVj
dHVyZSwgeyB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBu
ZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRl
bGV0ZU1pc3MsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNl
dCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgcmVz
dWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgcHJvcGVydHlO
YW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNv
bWVDb2RlKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwor
ICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVC
bG9jaywgcmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBH
aXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hEZWxCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJ
Q0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVs
bChnbG9iYWxPYmplY3QtPnZtKCkpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKGtpbmQg
PT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVs
ZXRlQnlJZEdlbmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3Bl
cmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LAogICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5MSw2ICsxNDU3LDE1IEBAIHZvaWQgcmVz
ZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8pCiAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQp
Cit7CisgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIGVsc2UKKyAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
K30KKwogc3RhdGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0
Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaAppbmRleCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBlOGE5OTQ0
YmI0ZjlmZTM5Li5jMWQ5OTU5YWRhZmQzNjU3NjJlODkxNzlhYjNjMGVlZDY2ZTU4N2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51bSBjbGFz
cyBHZXRCeUtpbmQgewogICAgIERpcmVjdAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtpbmQgewor
ICAgIE5vcm1hbCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRC
eVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBp
bmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJv
cGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNo
UHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSos
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIFB1dEtpbmQpOwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXBhdGNo
SW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25zdCBJZGVu
dGlmaWVyJiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1
YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8m
LCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5r
SW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5saW5rRm9yKFZNJiwg
Q2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0
QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNl
dFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXREZWxC
eShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0
SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5zdGFu
Y2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Q29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyMjU0ZmNjNDI5NjE3Y2U4
Mzk3ZDI0ZTU1MGUxYWNlYzY3YjYxNDQzLi5mYWNhN2JmNGUxNzhkNDI1ZmZiZWZmZTk1NGU4ZjMx
ZWIwMDIwNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKQEAgLTkyNSw3ICs5MjUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZGVsX2J5X2lkKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWxCeUlkPigpOwog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSksIHNsb3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5h
YmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CkBAIC0xMTA4LDcgKzExMDksOCBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0
eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAg
ICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVjZjZmZDA4ZmZkMmJiODhiOWQ1ODdi
YWVkMGZmNi4uMTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2IwYzE1ZjI2NTg5NzkzOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBDYWNoZWFibGVJZGVudGlm
aWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAK
IGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKEpTQ2VsbCog
aWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChpZGVu
dGlmaWVyKSk7CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggZmU2YzZiN2Q4NGM0N2VkZWUxMWFh
YzExZjY0ODRhNzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNjYmJkMjhkODAzMWRhOGExN2VlMDUz
NzIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTU5
LDcgKzU5LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBQdXRCeUluZGV4RnVu
Y3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1
bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUluZGV4KTsKIAotICAgIHVzaW5nIERl
bGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9
IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJM
RV9FTlRSWShkZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUJ5SW5k
ZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5jcHAKaW5kZXggOTZhMzYzNWU2ODI3MzkzZWU4MzZkODA0Nzc3MjRhMjVkNTQ2YzI2MS4uZjY5
OTllNzM0ODRlMmFiZDg4MTQ1NGYxMTQ4MzEwYzAyZDRmMmE3NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0yMjAsNyArMjIw
LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmEKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBDbG9u
ZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBDbG9uZWRBcmd1bWVudHM6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Q2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50cyo+KGNl
bGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyOSw3ICsyMjksNyBA
QCBib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVT
cGVjaWFsc0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50
LCBzbG90KTsKIH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBpZGVudCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3Vs
ZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuaAppbmRleCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQwYmEwY2FkMTU3NjA1ZmY1Li4wMGM1
MzQ3NTYwNWE3M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNzIsNyArNzIsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSBjb25z
dCB7IHJldHVybiAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJhOTM1M2U3ZDc1MjFh
ODc5YmQxMmQ3NDAwNjkuLjFkZTgyMzk1MDllMGM4ZDdhNTZhMzI0MTRmZmU4YTc0YTliNzhkZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtOTg1LDcgKzk4NSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlf
dmFsKQogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9
IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VY
Q0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9
IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIENIRUNLX0VYQ0VQVElP
TigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVs
ZXRlUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQ
cm9wZXJ0eVNsb3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWQ2ZjZiNDgwMGVmNTc4NTYxY2FlZGM5ZGRiYmM4
MmYyNTMyZTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGVsZXRlUHJvcGVydHlTbG90LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlByb3BlcnR5T2Zmc2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworICAgIAorY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90IHsKK3B1YmxpYzoKKyAgICBl
bnVtIFR5cGUgOiB1aW50OF90IHsgVW5jYWNoZWFibGUsIERlbGV0ZUhpdCwgQ29uZmlndXJhYmxl
RGVsZXRlTWlzcywgTm9uY29uZmlndXJhYmxlIH07CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qo
KQorICAgICAgICA6IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCisgICAgICAgICwgbV9jYWNoZWFi
aWxpdHkoQ2FjaGluZ0FsbG93ZWQpCisgICAgICAgICwgbV90eXBlKFVuY2FjaGVhYmxlKQorICAg
IHsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZU1pc3MoKQorICAgIHsKKyAgICAg
ICAgbV90eXBlID0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsKKyAgICB9CisKKyAgICB2b2lkIHNl
dE5vbmNvbmZpZ3VyYWJsZSgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBOb25jb25maWd1cmFi
bGU7CisgICAgfQorCisgICAgdm9pZCBzZXRIaXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV90eXBlID0gRGVsZXRlSGl0OworICAgICAgICBtX29mZnNldCA9IG9mZnNl
dDsKKyAgICB9CisKKyAgICBib29sIGlzQ2FjaGVhYmxlRGVsZXRlKCkgY29uc3QgeyByZXR1cm4g
aXNDYWNoZWFibGUoKSAmJiBtX3R5cGUgIT0gVW5jYWNoZWFibGU7IH0KKyAgICBib29sIGlzRGVs
ZXRlSGl0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERlbGV0ZUhpdDsgfQorICAgIGJvb2wg
aXNDb25maWd1cmFibGVEZWxldGVNaXNzKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENvbmZp
Z3VyYWJsZURlbGV0ZU1pc3M7IH0KKyAgICBib29sIGlzTm9uY29uZmlndXJhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IE5vbmNvbmZpZ3VyYWJsZTsgfQorCisgICAgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29mZnNldDsK
KyAgICB9CisKKyAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkKKyAgICB7CisgICAgICAgIG1fY2Fj
aGVhYmlsaXR5ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGJv
b2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5n
QWxsb3dlZDsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmls
aXR5VHlwZSBtX2NhY2hlYWJpbGl0eTsKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmNwcAppbmRleCBmMTgyMWQ1NTZhM2Q0MDQ0OTM2NzVlYWUyNWZhMmU0NjY3M2Vj
NDNhLi42ODVjN2FjYmMxMWM2MmQyMzM3N2QzMmM0ZGU5YTIwYjY1ODc4YThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAt
ODcsNyArODcsNyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAotYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
Citib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9yQ29uc3Ry
dWN0b3IqPihjZWxsKTsKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1p
dCkKICAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1p
dChXVEY6Om51bGxvcHQpOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAppbmRleCA5M2Q1MjcxNDg2ZjY2ZmRlNzUzZTQ5YTQw
MTZmMTY4MzhlOTc1NzIxLi45YTVhNDYzMjFiM2RiYjc2NGMyYTFiNTIxZDkyNjhmOGQxNDM1MzMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5oCkBAIC00OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgRXJyb3JQcm90b3R5cGUqKTsKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAog
cHJpdmF0ZToKICAgICBFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGZkNDhi
YmYzNGMzMDQzMGQyZTcwZGU1NzQ5OGU5YjUxZTZhYzI0NGQuLjFkNTBjZDE3NGZjNDdkOTIyMTcx
ODhlMzI1ZmY1N2FlOGQxNWI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBib29sIEVycm9ySW5z
dGFuY2U6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZQogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvckluc3RhbmNlOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVycm9ySW5zdGFuY2U6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBFcnJvckluc3RhbmNlKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEVycm9ySW5zdGFuY2UqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5tYXRlcmlh
bGl6ZUVycm9ySW5mb0lmTmVlZGVkKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7
CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggZjFmYWM1OTY4
MmQ5ZTAyNjUwOGNiNGZmOGM5YjI2N2I0ZWU3NmU4Ny4uNDAwNjA4ZDA4YTgzNGNkMzFlNjEyZTcz
YWI1MzFjYjBhM2NhMTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuaApAQCAtOTksNyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZv
aWQgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHZvaWQgY29tcHV0ZUVycm9ySW5mbyhWTSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5k
ZXggY2UxMGY3ZmU0ODczZTRhNDdiZTE0MWUyNTU2OWFkNjQ4YWZmOWQyOC4uNDcxMjE2NzMwMzY0
ODI4ZmUyNzcwZTIzNDg2OWFjZTcwOTA4ZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3Vt
ZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1
bWVudHNJbmxpbmVzLmgKaW5kZXggYjgzN2VjMWJiNDMwZjZkNThiMWQ1YjExNWRhNTEzYzViY2Mw
YmY1My4uYTVhOWVjYjMyMmEyMGRhOGZlMjQzM2ZmZDU0N2E3OGFmYzYwMmNmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5s
aW5lcy5oCkBAIC0xMzksOCArMTM5LDEwIEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvCiAgICAg
ICAgIHRoaXNPYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwgdmFsdWUp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFs
dWUsIHNsb3QpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMTU4LDcgKzE2MCw3IEBAIGJvb2wgR2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1ib29sIEdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBHZW5lcmljQXJn
dW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSw3ICsxNzcsNyBAQCBib29sIEdl
bmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbAogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KGlkZW50KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCAqaW5kZXgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAw
MzQ4N2Y2MWUwZjJmYzc1MWJhNzAzYjcwY2EzNmQwMjIyMTYzNGRlLi42MDFmMWU0OWYxNWNkNTAx
YTBlMGE3NWVlMjg1MDZmMzJiMGRiM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpT
VmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNl
OyB9CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJy
aWVyPEpTT2JqZWN0PiBtX2dldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKaW5kZXggNmQwNzU5MTcxMWVlZGJjMjhlMGU0ZGE3ODQ5ODIyYWI4ZDY2ZjVkMS4u
YmNlMzY1NWEzMTkyZWEyOTBmZTdmMDQwODI0YTM4ODZmNmIwNDgzNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBib29sIEpT
QXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6
OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
KTsKIH0KIAotYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0FycmF5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKQEAgLTMxNCw3ICszMTQsNyBA
QCBib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogc3RhdGljIGludCBjb21w
YXJlS2V5c0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggMzExNjViNWZmNDkyNTRjYzFhNmM0Nzkw
MmI3OTEwYWM0YTdkOWJmZi4uY2RjMzliNTEyZDdlZTNhMTVjZjFhZWMyZTBhMmQ5M2Q5YWFhZDBm
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTgyLDcgKzE4
Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCmluZGV4IGZlMDE4MGRkNjBjM2QxYmI2MGY4YjUzM2IxODYwNThlZWFkODFiNzUuLjU4
NmFmM2ZhYjM3OTUyZTNmZGUxY2U0NzBjOTlhYjFlZGM0YTc0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CitjbGFzcyBEZWxldGVQcm9wZXJ0eVNs
b3Q7CiBjbGFzcyBKU0JpZ0ludDsKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2VsbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI3MTM1MmIyMTc0NzAz
NTZkZjQwM2ZkZDljZGU2MGRlZjg4ODE2MDcuLjBlNjdmODY2NzZkNTg2NWFhODhmMDRmMzVhZGE3
NDMyMWUwMmNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApA
QCAtMTI2LDEwICsxMjYsMTAgQEAgYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGUKICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0Nl
bGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllciwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKIH0KIAogYm9vbCBK
U0NlbGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCmluZGV4IDY2NWQwODg5Y2Y0NDYxYzNhYjBhMmFmNGIwN2M2YTU4Yzkw
NDIxYzQuLjA2MmU4M2RiMzlhYjM0YTZlZjRmZGEzNmZmYTUwZTRjMTExZDk3MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJv
b2wgcHV0SW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAg
ICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
dy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRl
eCAxNDZhOTEzMmQ0NzM1MjQyYzEwNmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJi
MDllMzdmOGE0NzQzMTliZjc2YzMyZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmll
dzo6ZGVmaW5lT3duUHJvcGVydHkoCiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVy
dHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0Rh
dGFWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBw
cm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiB2b2lkIEpTRGF0YVZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4
MmE2N2U5N2VmYmI0ZjMyZjFiYzEyZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVl
NmNjN2I5ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5o
CkBAIC03Miw3ICs3Miw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3Rh
dGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggY2Q2ZWMxNWVlMDlh
OWYzNGNhZjJmMjk0MDBmYzk2ZDlhNTlkNGRiYy4uNDM0NmFhYWVlYjZhOGVmNWY1MzI4NWUxZDVh
YjZmNzcyMTFhOTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCmluZGV4IGFkZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZh
Y2QuLjE4YWI0NzU0M2ZkNzgyOTc4YWZlYTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgK
aW5kZXggZjA4Zjg1MjQ2OWJlZmQ2YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2
NWNlMWMzNTY1NTBlY2Q1OGI3N2ZlZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUs
NyArMzA1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApp
bmRleCAwY2FmYmQyNzZjZjc0ZDBjODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi41OGZiYjU3NTYy
YjcxMDA3OWU2NTE0MGY3ZTA5ZTcwODA0OGZhMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaApAQCAtNDM4LDcgKzQzOCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmRlZmluZU93blByb3BlcnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0g
ICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAg
IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KQEAgLTQ4NCw3ICs0ODQsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1
NjZjNWQ0YTE4YTkyODcxZjdlLi4wZjg5MDMwMGJlYjc4NGM3MTc5YTg3M2ZhY2ZjYjJhODRkMGM5
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC0xMzE0LDcgKzEzMTQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5j
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmNwcAppbmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45
NzRiOTJiNTRlMWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBA
IC0xMjcsMTMgKzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0
aGlzT2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
dm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgK
aW5kZXggZDAxM2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMy
ZGQ0OTNmZjdhNGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEw
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNM
QVJFX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAw
YjcyOWY3YzczZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52
aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZp
cm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpT
TW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
ICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0
aW9uOjpUeXBlOjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgK
aW5kZXggZGFlYWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2Zi
OThiYjJhODJkYWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwg
U3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5k
ZXggMmJkYjEzMDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNh
NjVhZDExOTAyZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5
LDEyICsxOTksMTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3
dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3Bh
Y2UtZXhvdGljLW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAg
IGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5t
X2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmlu
ZGV4IDhlZWY2MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdh
MTNlN2VmYmZjZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNm
OWNiMDFlMmJmMzIxYjA2ZWQ0MTk2YzkuLmVkYTJkNjIzNTA5OWVkMzAxYmIwYWUxMTQ1MTRmMzJl
MTU0Y2I2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCkBAIC03NTksOSArNzU5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2Fs
ayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3Qob2JqZWN0KTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxs
UmV2aXZlcihvYmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFsdWUpOwog
ICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAg
ICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9n
bG9iYWxPYmplY3QsIHByb3ApOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJv
cCwgc2xvdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwg
ZmlsdGVyZWRWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGFjZDI5ZGVkODEz
NTFmYjI4NGIyMTU5YWQ0N2E2MzFjMzQ5NGYxZGYuLjM0NzMyZTFjMmJmMzZmZTVkNzk3N2MxYmRl
MjVjZGFlZDYzYWM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKQEAgLTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAK
IC8vIEVDTUEgOC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNPYmplY3QqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0x
OTk5LDggKzE5OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJv
cGVydHlJc1ByZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5k
ZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZp
Z3VyYWJsZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAg
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hw
b2ludEZpcmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gaW52YWxpZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVyCiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10gKGNvbnN0IEdDU2FmZUNvbmN1cnJl
bnRKU0xvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVy
cmVkV2F0Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVy
Zmx5ICYmICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFz
SW5kZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9m
ZnNldCk7CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAm
JiB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1
Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmVJRCgpLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0
OwogICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFs
aWRPZmZzZXQpOwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIK
IAogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9
IGVsc2UKKyAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTIwMzAsOCArMjAzNSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIAotICAgIGlmIChpID4gTUFYX0FSUkFZ
X0lOREVYKQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0s
IGkpKTsKKyAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpKSwgc2xvdCk7CisgICAgfQogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+
aW5kZXhpbmdNb2RlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAg
LTM2MjUsNyArMzYzMiw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVy
aWMgZGVzY3JpcHRvciBpcyBzaW1wbHkgY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhp
c3RpbmcgcHJvcGVydHkKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkp
IHsKICAgICAgICAgaWYgKCFjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBv
YmplY3QpIHsKLSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
ICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJl
bnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgICAgICB9CkBAIC0zNjQxLDcgKzM2NDksOCBAQCBi
b29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVy
biBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBj
dXJyZW50KTsKICAgICB9CkBAIC0zNjY1LDcgKzM2NzQsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBw
bHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAg
IHJldHVybiBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJl
bnQpLCBjdXJyZW50KTsKICAgICB9CkBAIC0zNzE4LDcgKzM3MjgsOCBAQCBib29sIHZhbGlkYXRl
QW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqCiAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRl
cjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsKIAotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIHVuc2lnbmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1
cnJlbnQoY3VycmVudCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRl
OjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRl
eCBlYzYzMDBlYTliOTcyY2U5YmEwZmFkODE4MjU3YWZiMjBkODJhMmVkLi42OTNiZGJiOTk3ZDY0
NDIwODA2NTFjMjdlZGRlN2IwODhhMTQxNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIK
ICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVH
ZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRl
ICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDYXN0LmgiCkBAIC02MjMsNyArNjI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFz
T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBk
ZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApp
bmRleCA5YzQ3OTM0ZTRhM2Q5MTk5ZmE5ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEy
ZDIyMTkxMjdjZDk5YjMwMjA5MzA4ODcyMTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2Jh
bE9iamVjdC0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQog
Ci1ib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94
eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0g
ICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3Qt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9k
VGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFy
Z2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1By
b3h5Ojppc0V4dGVuc2libGUoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
eHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFl
NjY4ZDI1OTBkOWI5N2M4ZjRiYmEyYmZmYjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5
NGMwYjI1ODk1Nzk4ZmM1ZjllZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5oCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3Bw
CmluZGV4IDYzMGUxYjc4YmIyMDZlN2FmNjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMx
NTBlOTZhZWNkNTM3NDczMWZkYThkOWE3YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyAr
NDQsMTMgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9zeW1ib2xUYWJsZSk7CiB9CiAKLWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U1N5bWJvbFRhYmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmpl
Y3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMo
cHJvcGVydHlOYW1lLnVpZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNk
ZWQ5OGIzMzVkZjczNmIyMS4uYjU2OGU4ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAg
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNTeW1ib2xUYWJsZU9iamVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4
MTU5OGZmZWYyYTVlMTRhODBmZDRlNTRkYzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2
ZWVlZTllNWY5MGM2NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCkBAIC02ODUsMTIgKzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCitib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURl
ZmF1bHREZWxldGUgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQg
PSB0aGlzT2JqZWN0LT50YXJnZXQoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFi
bGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGds
b2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZv
cm1EZWxldGUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4
IDE3Y2EyOWZiMGEzZmRkYmE3MWViNjgyNDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgx
OGE0Njc0YTUyMmJmNjBhMmNhMDllYWMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENh
bGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25z
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2li
bGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNh
MDljMDA0ODFhNTE1MzgyNy4uMWNlMWI0YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmVi
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CkBAIC03MSwxMiArNzEsMTIgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4g
QmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRl
eCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogdm9pZCBSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2Mzcx
OTFhODlmMGI3Yzk2YzVmYmI3MTQuLjg1N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNl
MGIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJ
bmRleElzTm90V3JpdGFibGVGbGFnID0gKG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJs
ZUZsYWcgfCBsYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcAppbmRleCA1MTU3NTI3NjVlY2IwMmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRi
YzY3YzU3ZjgxNTYxZmE3OGQxOTRlZmFmMDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00
MCw3ICs0MCw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0
RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2Ix
MDk2YjI2ZDE4NzA3NGNiZjE3ZWI4M2MyOS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBm
ZGJiN2ExMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHNjb3BlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcAppbmRleCA0NzdiOWNhZmIzZmEwMDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZk
ZDkyNzNiNzUwNThhNDdmNzY5YTNmY2Y4Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBi
b29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFz
ZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3Ry
aW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZh
bHVlKCktPmNhbkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJv
b2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2Iz
YTNlNGRhMzUyZjIyNzg2NTIzLi42OWYyNmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4
ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRC
eUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAppbmRleCBlZGE0NDZiZmJlMjY3YWIwMWI4NTJlMTVmZGU5YzljMzBlNmY1OGU2Li41
MjA1ZGQ3MzgxY2MzMTVjODExNjM1NTBhYTFkY2EyMTlmMzVmY2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTU0MCw4ICs1NDAsNyBAQCBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJh
bnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgK
LSAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsK
KyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZy
b21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAg
ICBpZiAobmV3U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01
NDksMTYgKzU0OCwxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnRGaXJlKikKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYg
b2Zmc2V0KQogewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NF
UlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAKLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0
cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3Rl
eHByIGJvb2wgaXNBZGRpdGlvbiA9IGZhbHNlOworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7
CiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3Ry
YW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0
aW9uKSkgewogICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5z
aXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAg
ICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBA
IC01NjgsMTEgKzU2NCwyNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIHN0
cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcyk7
CisgICAgcmV0dXJuIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisK
K1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3Rp
bmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgdW5zaWduZWQg
YXR0cmlidXRlczsKKyAgICBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5hbWUu
dWlkKCksIGF0dHJpYnV0ZXMpOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0
dXJlLT5tX2xvY2spOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBv
ZmZzZXQpOworfQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFu
c2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3Qo
KSk7Ci0gICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZSh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVm
ZXJyZWQpKTsKKyAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsK
IAogICAgIGludCB0cmFuc2l0aW9uQ291bnQgPSAwOwogICAgIGZvciAoYXV0byogcyA9IHN0cnVj
dHVyZTsgcyAmJiB0cmFuc2l0aW9uQ291bnQgPD0gc19tYXhUcmFuc2l0aW9uTGVuZ3RoOyBzID0g
cy0+cHJldmlvdXNJRCgpKQpAQCAtMTIwMyw3ICsxMjE1LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBl
PiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9s
eVByb3QKIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsK
LSAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNz
TmFtZSwgIiwgeyIpOworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQ
b2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkKCkpKSwgIiwgIiwgY2xhc3NJbmZvKCkt
PmNsYXNzTmFtZSwgIiwgeyIpOwogICAgIAogICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNTJjZDNjNzFk
OTIwZjJmOGE5N2I0NjBiOTBlMGVjNzBkNWQ3MTFhZi4uYWUyMGFlOTZiYTQwMzJmNmFhMWY5NGJl
M2MxNzRiNzYzYzczZmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1
ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIK
ICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNDYXN0LmgiCkBAIC0xOTEsNyArMTkyLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3Bl
cnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZz
ZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRy
KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVj
dHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwg
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVj
dHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3Vy
cmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJl
KiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmli
dXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSog
dG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwpAQCAtNDc3LDYg
KzQ3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRl
cihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihi
b29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCkBAIC03MTYs
NiArNzE5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBu
dWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUlt
cGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0
eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQg
aGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8v
IGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290
IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdmNzE0YzA1YjE1M2UwODEz
OWU0OTFjZDhjZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUyMzIyYTQ2MDE3NWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
CkBAIC0yMjQsMTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5n
SGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRW
aWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZp
ZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJv
b2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkg
Y29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQ
cm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJl
dHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJu
IHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09
IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKaW5kZXggZGZmMWRmMTlhYzg0YTllZDM2NGI1OTdkNWRkOWQwNDFiZWM0NzhiMy4u
ZGFhYWNiMTRkZmMwYWM1YWY2NDEwODRhMTg5YjY2MmUzNTI0N2NkYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVF
X1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiAgICAgewogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTI4MjgsNiArMjgyOCwxNSBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldENvbmN1cnJlbnRseShK
U0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNPd25M
ZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU09i
amVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2
bSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdGlv
bi0+YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFsKHZtKSkpOworfQorCiB2b2lkIEpTRG9sbGFyVk06
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwpAQCAtMjk1OSw2ICsyOTY4LDggQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
TGlzdCIsIEpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlvbkxp
c3QsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0Q29uY3VycmVudGx5IiwgZnVuY3Rpb25H
ZXRDb25jdXJyZW50bHksIDIpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJoYXNPd25MZW5ndGhQ
cm9wZXJ0eSIsIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHksIDEpOworCiAgICAgbV9vYmpl
Y3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0
dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3Bl
Y3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40
NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcwZWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAg
LTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwg
Q291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xv
Y2spOwogICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0
eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFw
LmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIENv
dW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5k
KGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0
dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIAotICAgIGl0ZXJhdG9yIGJlZ2lu
KCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJu
IG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIC8v
IFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3Vu
dC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlzdCgpIGNvbnN0CiAgICAgeworICAg
ICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFZlY3RvcjxLZXlBbmRDb3VudD4g
bGlzdDsKICAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAh
PSBlbmQoKTsgKytpdGVyKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoS2V5QW5kQ291bnQoaXRl
ci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsxMDcsMjMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVhcigpIHsgbV9tYXAu
Y2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
cihtX2xvY2spOworICAgICAgICBtX21hcC5jbGVhcigpOworICAgIH0KICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAg
bV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlw
ZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVu
Y3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOwogICAgICAgICAgICAgfSk7
CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhh
c2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIwNTA2ZjhlY2ZhYzY1M2U1
NWFkMDQ4MWRkYTU2MGY1ZmQ3MmE1NGQuLmY3YTg5NTU3ZWQ1NmFjZWY5MTNhNGExZjZkNzI0Njc1
MmUxNGNkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKQEAgLTMxNCwxMyArMzE0LDEzIEBAIGJvb2wgSlNET01XaW5kb3c6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+
KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMg
aW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBw
ZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29s
IEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAx
ZWYwNmMyNmVlMjUyZGU2NjhjMWRlZGU5MWM1ZGRmNmEwZGRmZGU1Li44NGI5YTEzZTE5ZWExODlk
ZjMwNzQ3NjA2NWRkMzczZTUxZTRmNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTYzLDEzICsxNjMsMTMgQEAgYm9vbCBKU0xv
Y2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIHUKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wg
SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNM
b2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNM
b2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGlu
IHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVk
KCkud2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5k
b3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5k
b3dDdXN0b20uY3BwCmluZGV4IGUyZWVkZmQ1YjBjNWFhNzE4NzBkYTc2NTQzOTdlMzViOTlhODJj
YWMuLjBjYjY3ZWYyOWM2MmJmOGNjNDQ2YTBlY2UzMWM5ZmU1MzUxNTdhNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6cHV0QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDZkNzIxYThkZjg3ODIy
NjUzMzQ3ZGUyZjgyYmEyNTUyMjVlYzU5NzYuLmE3ZjI5OGNiYTQzZmViNzgwNTg3MzNiMTBjYTk1
ZDAwN2JmMGNjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBzdWIgR2VuZXJhdGVEZWxl
dGVQcm9wZXJ0eQogICAgICMgVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVsZXRlIGZvciB0aGUKICAgICAjIGZv
ciB0aGUgZGVsZXRlUHJvcGVydHkgb3ZlcnJpZGUgaG9vay4KIAotICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PCR7Y2xhc3NOYW1lfSo+
KGNlbGwpO1xuIik7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9w
ZXJ0eQogCiAgICAgIyBGSVhNRTogSW5zdGVhZCBvZiBjYWxsaW5nIGRvd24gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5LCBwZXJoYXBzIHdlIHNob3VsZCBpbXBsZW1lbnQKICAgICAjIHRoZSByZW1h
aW5lZCBvZiB0aGUgYWxnb3JpdGhtIG91cnNlbHZlcy4KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1c
blxuIik7CiB9CiAKQEAgLTI2OTYsNyArMjY5Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
IH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KCRpbnRlcmZhY2Up
KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpO1xuIik7CiAg
ICAgfQogCkBAIC00MzI0LDcgKzQzMjQsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVc
IikpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5k
aWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtNzUwNyw3ICs3NTA4
LDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
fSkge1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xu
Iik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtc
biIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCmluZGV4IDMwNTQ4ODc3YTVjZTQ0MzZl
NWFlNzgzY2QwN2I5OWI1ZTdiNDI3MjguLmFjZTEzNDUyOTc1NjE1ZDhkYjU2ZDIyNDQ3MDUyZWNh
NmNlMzA3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTEzNyw3
ICsxMzcsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0
aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKQEAgLTE0NSw3ICsxNDYsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGlu
Z0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
JiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCmluZGV4IGRlZTk2Y2VkMWZmOTI2MDBlMjI5MmVmYTNmOTQxZDRkZDc3
YWM2NWEuLmVjM2I4NmM5NWZlZTkyYWViOGZhZjhkMTNjYzYzOTMwOTg5MjVkNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTEwOCw3ICsxMDgsOCBAQCB2
b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJhU2VjcmV0QXR0cmlidXRlIiksIHN0cmxlbigiYVNl
Y3JldEF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0
cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmpl
Y3Qodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNw
cAppbmRleCBmZTI4OTVmN2JkNThlMTNjZGFhNzk5YjkwZTQ4ZDliODI4NjFkNTY2Li4yOWVjODRj
Yjc3NDNjZWMzNGYxYTlkNjY0NWQwMzYwNDJmMGU2MGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgdm9p
ZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG8KICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1i
b29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAg
ICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllci5oCmluZGV4IDBlYTRiYjExYjg2MDUzMDExNjU3ZmQ2ZWE2M2Yy
NDZkNGQ4MmU1MGEuLjEzOGQ0YzE4ZjhmNDZiYzM0MzMxMDliZDAzMjM5NTYzN2QwYWMzOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2Rl
KCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5k
ZXggNTFkMTAwMzM2YzkyNjFmYjUwOWRjYWU3ZWZjNDI0OWFmYTdlYjBhNC4uYThkYWNiMzdkNWM4
OGUyZGE5MGEwNjU2NTk3YjhlNjJjNjNhNzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAg
dm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAK
LWJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE8KIAogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAg
IH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDc5MWJlMTgyZWIxYjM2OTY5MjFkZTk3Njk1MjcyOWYw
YjRmMGIzNGEuLjA1NWQzZGY5MjM4MThjMDA3NjdmMTg5NWRmNjcyNWY1YmMwZWRmZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0
aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmlu
ZGV4IDRhODBmZjU4ODA2ZTc1YTIzNzM3OTUwODJhODEwNzliOWYyZWFiZTcuLmY2YzkwMWJhMTdi
ZGQ5YTJlMGQ3NDk1MTFiZDZiNTdlNzA2ZTlhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgSlNHCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9v
bCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZQogICAgICAg
ICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKaW5kZXggNTRlMDI1NDc4ZTFkYzM5
OTA3MDczM2U0OTliMDE2MzE0OTAxMjQ5ZS4uYTg1OGEyNzE1NGJkM2M2MzY0ZmM0NWE2NDdmZjQy
YjZiNDcyNTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpT
Qzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Qzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpK
U0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHAKaW5kZXggOTUzOTAwYzIxZTJmMzY4OWVjNWQ1YmZiOThhY2JhMjE1M2Ey
ODNmMS4uZDUxNTkwY2I2NDhkMWQ2YWJhYjBlMTllZGY4YTAyYzkwMmI3NGI2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBA
IC0yMDksNyArMjA5LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAgIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9
ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMTgsNyArMjE4LDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KICAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxP
dmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShw
cm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIu
aAppbmRleCBhOTk0NWJhZmM2MTE0M2U1NzZmZmQ2MGZlYzhlZWU2OTY0YjlmMDMwLi4yZmVhOGQ5
MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXgg
YTE0MmMwNzJiZmRjZjI4NDNjNGUzYzYyYzNkMDI3M2I4YjJkNjA5ZC4uMzlhNjc1NzJhZTBiMGMx
Y2RlNTQ3NGQ4NmYxNzIwM2NlMjM3ZDBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTU1LDQ1ICsxNTUs
NTIgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3Vs
YXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2Vj
cmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVz
dEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRC
b29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbnRy
aWVzIiksIHN0cmxlbigiZW50cmllcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImtleXMiKSwgc3RybGVuKCJrZXlzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigidmFsdWVzIiksIHN0cmxlbigidmFsdWVzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAg
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiZm9yRWFjaCIpLCBzdHJsZW4oImZvckVhY2giKSk7CiAgICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAg
ICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZDJmN2U5ODcx
ZmU0M2VlZGY0MzNlYThhYzRhYWU0MjEyYWIzMWQ2NS4uOWIxNDBlMmRjODVmZDgwNWU0ZDFlZThk
OTdjMDdmOTkxYzMxYzQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE5ODIsMTQgKzE5ODIsMTYgQEAgdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2IKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJl
bmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
dGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uU3RhdGljIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0yMzQ1LDkwICsyMzQ3LDEwNCBAQCB2b2lkIEpT
VGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoISh3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29t
ZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0
RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkSW5TcGVjaWZp
Y1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpLCBzdHJsZW4oImVuYWJsZWRJblNwZWNp
ZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIikpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCF3b3JsZEZvckRPTU9i
amVjdCgqdGhpcykuc29tZVdvcmxkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ3b3JsZFNwZWNp
ZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRTcGVjaWZpY01ldGhvZCIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRl
U2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRT
ZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiks
IHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25h
bGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3Nl
ZFRvV2luZG93RnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
LSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2Vy
RnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24i
KSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0K
ICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCl8fCBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWxsb3dzTWVkaWFEZXZpY2VzKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWVkaWFEZXZpY2Vz
IiksIHN0cmxlbigibWVkaWFEZXZpY2VzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJl
Q29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJTY2hlbWUoKSkpIHsKICAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJzZXJ2aWNlV29ya2VycyIpLCBzdHJsZW4oInNlcnZpY2VXb3JrZXJz
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpICYmIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmUxRW5hYmxlZCgpKSkgewog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKSwgc3RybGVuKCJl
bmFibGVkQXRSdW50aW1lQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpLCBz
dHJsZW4oInJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9u
YWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBv
c2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29y
a2VyQXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJp
YnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogICAgIC8vIEFkZGluZyBiYWNrIGF0dHJpYnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRl
ciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2YXJpYW50IGFib3ZlLiAKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCBmZWViZGVmN2JjNDVlOThj
OTMwOGZkZmJkZTExMGI5OWZkZGRjYTJjLi4zMmMxM2I5ZWI0MDcwODM1ZWIyNTgzNzE5NmQ3ODMy
NThhYzU5NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTM5MSw4
ICszOTEsOSBAQCBib29sIF9OUE5fUmVtb3ZlUHJvcGVydHkoTlBQLCBOUE9iamVjdCogbywgTlBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBpZiAoaS0+aXNTdHJpbmcoKSkK
LSAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9i
ai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSkpOworICAgICAgICAgICAgb2JqLT5pbXAt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxHbG9iYWxP
YmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmplY3QsIGkt
PnN0cmluZygpKSwgc2xvdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9iai0+aW1wLT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChvYmotPmltcCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgaS0+bnVtYmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggMjJmMGI4ZDlkOGZhZTRhNzljNmI2MzFlOTM1Y2I2
YWRjN2Q5NGZmZi4uZGJjNmQzYjFlMTlmOWMyMWQ5YjYwYzE3ZWRmZjk3MTYwMDY3YzA3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpAQCAtNDU3
LDggKzQ1Nyw5IEBAIC0gKHZvaWQpcmVtb3ZlV2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCA9IGdsb2JhbE9iamVjdDsKKyAgICBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogCi0g
ICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2lt
cF0sIGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFN0cmlu
ZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHkoW3NlbGYgX2ltcF0sIGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIFN0cmluZyhrZXkpKSwgc2xvdCk7CiAKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXgg
NWVkMjFmMTM0ZWY0YWFiNWRjMGM1NWE0NWRlNmE2M2QyN2M2YmUyZS4uNjIyOTYzNjhlYmI5MGM1
MGI5ZGU3ZmEwNzgyYzljNmZhMjg1OTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAgIGJvb2wgdG9Cb29sZWFuKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9rZW4gYmVjYXVz
ZSBub25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBXZSBuZWVkIHRv
IHNvbHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tCmluZGV4IDE5ZWQxOWNiYzdhZTNlZTQ2Nzc5NmIxMDNjYmZlNzYx
NjA5YWQ3MzAuLjZlODc3ZDJlYjdmNDRkMDNhMjhlMTcxMDgzYmQzZDBmMGJiOTg4OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI5MCw3ICsyOTAs
NyBAQCBDYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxEYXRhKEpTQ2VsbCog
Y2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKIH0K
IAotYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCA0ZDI5N2M3MGQ2YjFiNmMxYWY4OGY5MTRi
ZTg1ZjYwZGYwM2NjOWIxLi5lYzM1ODhmYzU2NTk1NTNmNTI3MjgzYzU4YTczNTgwMjEzMjlhYzVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC0xNDksNyArMTQ5
LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09iamVjdC0+Z2V0
Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2
YWx1ZSk7CiB9CiAKLWJvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZUFycmF5OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaAppbmRleCBmY2Y1ZTMzZmIxMTQwMTg1MTA3OTkzMGZiZDExNzYxMzU0NTJj
N2U2Li4yOTgxMmE2NmQ2ZjAxMjRlMzgzNjI1Zjk1NjAxOWNhMzNiYzNiZDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAg
IAogICAgIHVuc2lnbmVkIGdldExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXktPmdldExl
bmd0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCBh
MDM2YjY2NjJkNDg3MmY2OGRjNTI2NDViYTFhZjJiYTE1MzMwMzJkLi45ZDVkNjBkZWYzNTc1NGJl
MWUwZTA2MjBlNDFlZGI5OGVmZTM5ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFJ1bnRpbWVP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIC8vIENhbiBuZXZlciByZW1vdmUgYSBw
cm9wZXJ0eSBvZiBhIFJ1bnRpbWVPYmplY3QuCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCA2Y2JmN2JmNzk2YjBhODk0MDRiOTQyMjc1
ZDY1MWU2MGU3MzI0NTgyLi4zYzEwZDhiZDUwZjNiN2RhYTQ4NDIyMTRiOWUwNGYwNDNhZmRmMmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25z
dCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAg
c3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IDJlZmIyMjUyM2Y5MjFlOTJhYmQwMjE2ZWIwY2Qx
ZmZkMTAwMzYyYmUuLjA1ZDEyOTI5Mzk1ODJmMDRjNDMyZDMwYzE0MmRiYTVkYWEwYmYxMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBKU05QT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBy
ZXR1cm4ganNDYXN0PEpTTlBPYmplY3QqPihjZWxsKS0+ZGVsZXRlUHJvcGVydHkobGV4aWNhbEds
b2JhbE9iamVjdCwgbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmgKaW5kZXggODU1ODg5NDlhMzA2MDRjNjlmNzdjY2MzZjYwZTU0Njk3N2ZmYWM2
ZC4uNDgwM2MwYmM1NzFmOTc3ZGRjMjcyMmJiYWI5NmI2ZDI3YzJhOWM3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpT
Q2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTlBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmluZGV4IDM2ZjI4ZWU2ZmIwMTAyZDhjMTc3MTNjNjA4
YjYxNGVhZjg1ZGRiNzYuLjhiOWZjZGYzMDg1MmQxZDIyMmE1YjNiZDU5MDZkYTRiYWZlNDNhNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
SlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QSlNPYmplY3QuY3BwCkBAIC0yMjksOCArMjI5LDkgQEAgYm9vbCBOUEpTT2JqZWN0Ojpy
ZW1vdmVQcm9wZXJ0eShOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAgICAgICAgICAgc2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShtX2pzT2JqZWN0LmdldCgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVy
KTsKKworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgbV9qc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShtX2pzT2JqZWN0LmdldCgpLCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoIW1fanNPYmplY3QtPmhhc1Byb3BlcnR5KGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50
aWZpZXJSZXAtPm51bWJlcigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCAzMDMyYWZh
MjgwZmE5MjdkODc3MzIwZWI4MWNiZDkwNzEwMjU1OTdlLi4xMmNlNDA5YzU0M2MyMjg4MjI3NzE5
YjJkNDEwOGJmMmE4NzlkNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCkBAIC0xMTQxLDggKzExNDEsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6cmVtb3ZlUHJvcGVydHkodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IElkZW50aQogICAg
ICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5ZTExYmQ0Nzli
YTE1MDQ3NDhmNTgzYmE2ZmEzMTI1ZTM3ODQ1MzEuLjgyNzE3OGVmNGMzNWIwNGQ4ZDQ0MmUwNDE5
YzhiMTJjZjBlYTRlM2YgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVk
ICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxl
dGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hh
aW4uanM6CisgICAgICAgIChkZWxldGUuQy5wcm90b3R5cGUueik6CisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChh
c3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEu
bm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6Cisg
ICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2Vy
dF9uZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBv
bHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJv
cGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAg
IChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChhc3NlcnRfdGhy
b3dzKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9Jbmxp
bmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkLm1ha2VGb28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9l
cS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAg
IChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVs
ZXRlQnlJZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5t
YWtlRm9vNCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlk
LnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qczoKKyAgICAgICAgKiBzdHJlc3Mv
ZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQp
OgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAo
YXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0
X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGlu
ZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRl
c3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChu
b0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwp
OgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFi
bGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hl
YWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5
RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleC5tYWtlRm9vNSk6
CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0
ZUluZGV4KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBo
aWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgu
dGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLm1ha2VGb283KToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxldGVCeVZhbCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJvbERlbGV0ZUJ5
VmFsLm1ha2VGb284KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RCaWdpbnREZWxldGVCeVZhbC50
ZXN0U3ltYm9sRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN5bWJvbERlbGV0
ZUJ5VmFsLnRlc3RPYmpEZWxldGVCeVZhbC5tYWtlRm9vOSk6CisgICAgICAgIChub0lubGluZS50
ZXN0U3ltYm9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RPYmpEZWxldGVCeVZhbC50ZXN0U3RyaWN0Lm1ha2VGb28xMCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0U3RyaWN0LnRlc3RPdmVycmlkZS5hcnIuaik6CisgICAgICAgIChub0lubGluZS50ZXN0
U3RyaWN0LnRlc3RPdmVycmlkZSk6CisgICAgICAgIChub0lubGluZS50ZXN0T3ZlcnJpZGUpOgor
CiAyMDIwLTAyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQ
bGFjYXRlIGV4Y2VwdGlvbiBjaGVjayB2YWxpZGF0b3IgaW4gR2VuZXJpY0FyZ3VtZW50czxUeXBl
Pjo6cHV0KCkuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJv
cGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKaW5kZXggNDlhMzFiN2YyNDdj
MWJkMGFjYTgyY2IyMmRmMjBlOGYxYmY2MWJkZC4uNTRiYmE4MmU2OTljNjJjY2NhODk0NTE2ZTYy
YjdlNmNhMWY1MTIwMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRk
ZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFw
cGxlIFdhdGNoLwogZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIpCiAgICAgICAgIHRo
cm93IG5ldyBFcnJvcjsKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gZG9UZXN0KHpWYWwpIHsK
IH0KIG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7Citm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKICAgICBjb25zdCBYID0geyBpIH0KICAg
ICBDLnByb3RvdHlwZS56ID0gWAogICAgIGRvVGVzdChYKQpAQCAtMzYsNyArMzYsNyBAQCBmb3Ig
KGxldCBpPTA7IGk8MTAwMDA7ICsraSkgewogCiBkZWxldGUgQy5wcm90b3R5cGUuegogCi1mb3Ig
KGxldCBpPTA7IGk8MTAwMDAwMDsgKytpKSB7Citmb3IgKGxldCBpID0gMDsgaSA8IDIwMDAwMDA7
ICsraSkgewogICAgIGdldFooe3o6IGl9KQogICAgIGRvVGVzdCh1bmRlZmluZWQpCiB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNh
Y2hlLXBvbHltb3JwaGljLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmFmZmFjOThlNTYz
ZDVmMzdmNmVlMjA5MDg1ZDY0ODNjOTY4MWQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5q
cwpAQCAtMCwwICsxLDUzIEBACitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYg
KCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIp
OworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiAr
IGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09
ICIgKyBiKTsKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5s
aW5lKGFzc2VydF9uZXEpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsK
KyAgICBmdW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvb1siYmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZv
b1siYmF6IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b282KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAg
ICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAg
IGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDMwMDAwOyArK2kpIHsKKyAg
ICB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDk5MTJkYTRiYmJhYWQwNTIxZTU1MTI1YzkwN2U1ZmIyY2RjMTRlNAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anMKQEAgLTAsMCArMSwxNzQgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdhdGNo
LworCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlv
biBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitmdW5j
dGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAg
ICB0cnkgeworICAgICAgICBmdW4oKQorICAgIH0gY2F0Y2ggeworICAgICAgICB0aHJldyA9IHRy
dWUKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KQorfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9Jbmxp
bmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25vSW5saW5lKGFzc2VydF90aHJv
d3MpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9u
IG1ha2VGb28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQor
ICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1
cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcgQXJy
YXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJy
W2pdID0gbWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAg
ICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAg
ICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIg
aW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKwor
ZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VG
b28yKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAg
ICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJu
IGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFyciA9IG5ldyBBcnJh
eSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAg
ICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAg
ICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIg
aW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCkK
KworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlv
biBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAx
CisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwg
dHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0K
KyAgICBub0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9v
MygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNz
ZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0
KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2Vy
dChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RD
YWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVC
eUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAgICAgICAgbGV0IGZvbyA9
IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFz
c2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBm
b28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisK
KyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAg
ICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNz
ZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvby5m
b29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pd
CisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmpl
Y3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAg
ICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAz
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDsg
KytpKSB7CisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVE
ZWxldGVCeVZhbCgpCisgICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanMKaW5kZXggNzc5NWRjNTgxNTc4ZTRjMzk4MWMyMmFjODc2YzQ1NTQxM2U2NGQz
Yy4uYTkzOWFhZTNhYzhhY2NjMjIxNGRkN2U3ZDgwMjQ0MjFhODE2NDVkOSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMKQEAgLTI0LDUgKzI0LDUgQEAgZnVuY3Rpb24g
ZG9UZXN0KCkgewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAw
MDAwOyArK2kpIGRvVGVzdCgpCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7ICsraSkgZG9U
ZXN0KCkKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGlu
ZS1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGUwZGEwMTMxNTkxMTlmNjAzMDBmZDEwZTIxY2MxYTQ4Y2U3NmJiOQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUt
Y2FjaGUuanMKQEAgLTAsMCArMSw0MjEgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUJpZ0ludD10
cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9u
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZnVuKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcg
PSB0cnVlCisgICAgfQorICAgIGFzc2VydCh0aHJldykKK30KK25vSW5saW5lKGFzc2VydCkKK25v
SW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCitub0lubGluZShhc3NlcnRf
dGhyb3dzKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5j
dGlvbiBtYWtlRm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9
IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAg
cmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3
IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQp
CisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBt
YWtlRm9vMigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlW
YWwpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXIsIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFr
ZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBm
b28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAg
ICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxl
dGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVl
KQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAg
ICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAg
fSk7CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShm
b28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZSht
YWtlRm9vNCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisg
ICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEo
T2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZv
bykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisg
ICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2Z1bmN0aW9uIHRlc3REZWxldGVJbmRl
eCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNSgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9Cisg
ICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGZvb1swXSA9
IDIzCisgICAgICAgIGZvb1sxXSA9IDI1CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJh
ciwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb29bMV0sIHRydWUpCisgICAgICAg
IGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUo
bWFrZUZvbzUpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzUoKQorICAgIH0KKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBh
cnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGlu
IGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEp
CisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsg
al0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0
KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1swXSwgMjMpCisgICAgICAg
IGFzc2VydF9lcShmb29bMV0sIHVuZGVmaW5lZCkKKyAgICAgICAgZm9vWzFdID0gMQorICAgICAg
ICBhc3NlcnRfZXEoZm9vWzFdLCAxKQorICAgIH0KK30KK25vSW5saW5lKHRlc3REZWxldGVJbmRl
eCkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkgeworICAgIGZ1bmN0aW9u
IG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vWyJiYXoiK2ld
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiK2ldCisg
ICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzYpCisKKyAgICBh
cnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBh
c3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbyku
bGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZv
by5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVn
IiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHlt
b3JwaGljRGVsQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RCaWdpbnREZWxldGVCeVZhbCgpIHsKKyAg
ICBmdW5jdGlvbiBtYWtlRm9vNygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZv
b1sxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbl0gPSAxCisgICAgICAg
IGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MG5dCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9Jbmxp
bmUobWFrZUZvbzcpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzcoKQorICAgIH0K
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28g
PSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0
X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbiBpbiBmb28pKQorICAgICAgICBmb28u
YmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIg
KyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFz
c2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0QmlnaW50RGVs
ZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpIHsKKyAgICBjb25z
dCBzeW1ib2wgPSBTeW1ib2woJ2ZvbycpOworCisgICAgZnVuY3Rpb24gbWFrZUZvbzgoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEKKyAgICAgICAgYXNz
ZXJ0KCEoU3ltYm9sKCdmb28nKSBpbiBmb28pKQorICAgICAgICBhc3NlcnQoc3ltYm9sIGluIGZv
bykKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisgICAg
ICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzgpCisKKyAgICBhcnIg
PSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgYXJyW2pdID0gbWFrZUZvbzgoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3Nl
cnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVu
Z3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJh
ZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsg
al0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3Nl
cnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFN5bWJvbERlbGV0
ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0T2JqRGVsZXRlQnlWYWwoKSB7CisgICAgY29uc3Qgc3lt
Ym9sID0geyBpOiAiZm9vIiB9OworCisgICAgZnVuY3Rpb24gbWFrZUZvbzkoKSB7CisgICAgICAg
IGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEKKyAgICAgICAgYXNzZXJ0KHN5
bWJvbCBpbiBmb28pCisgICAgICAgIGFzc2VydCghKHsgaTogImZvbyIgfSBpbiBmb28pKQorICAg
ICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5bWJvbF0KKyAgICAgICAgcmV0
dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOSkKKworICAgIGFyciA9IG5ldyBB
cnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBh
cnJbal0gPSBtYWtlRm9vOSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28u
YmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEp
CisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T2JqRGVsZXRlQnlWYWwpCisK
K2Z1bmN0aW9uIHRlc3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rp
b24gbWFrZUZvbzEwKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9
IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6
LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisKKyAgICAg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAgICB2YWx1
ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsKKyAgICAg
ICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgZm9vLmZvb2JhcikKKyAgICAgICAgYXNzZXJ0
X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5s
aW5lKG1ha2VGb28xMCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0
IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMTAoKQorICAg
IH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBm
b28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNz
ZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6
IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9
PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdE92ZXJyaWRlKCkgeworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSBmdW5jdGlvbigpIHsgfQorICAgICAgICBhc3NlcnRfZXEoJHZtLmhh
c093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIHRydWUpCisgICAgICAgIGRlbGV0ZSBhcnJbal0u
bGVuZ3RoCisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJvcGVydHkoYXJyW2pd
KSwgZmFsc2UpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5
cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RPdmVy
cmlkZSkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0
Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MoKQorICAgIHRlc3REZWxldGVJbmRleCgpCisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwo
aSkKKyAgICB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKQorICAgIHRlc3RTeW1ib2xEZWxldGVCeVZh
bCgpCisgICAgdGVzdFN0cmljdCgpCisgICAgdGVzdE92ZXJyaWRlKCkKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390842</attachid>
            <date>2020-02-14 17:41:08 -0800</date>
            <delta_ts>2020-02-17 10:32:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200214174107.patch</filename>
            <type>text/plain</type>
            <size>213685</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YzJmNGNhYjRhNTA3ODRkOGJhZmI3MDJkNjRlNjNiMDRmYWM0MGJlLi5iYWYyNjAwMmUxODBhNTFk
NWI0Y2YwZDk2NTc4NjYzMTAzNmYzY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTEyICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgb3B0aW9ucyBmb3IgZGVi
dWdnaW5nIFdBU00gY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMmM5MWMzMGU3ZTAyNmMzNzhmNjczMTAwODY1MmM0MGQz
MTI0ZTQ3OS4uZWVmNDhlNTZhYmI5M2JjMGJjNGE1ZmMzODI5M2IxNDEzM2VkMTBkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMC0wMi0xNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwZWN0
cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVj
dHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJ1aWxkTGlzdCBjb25z
dCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjpyZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpiZWdpbik6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVkLgorCiAyMDIwLTAyLTEyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
UCBpbWFnZSBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNkNTVkOTE5Yjg5
MTBmOGQwNTFmNTVlNmU3OWJjOGQ0ODRhODcwZTEuLmMyNDFkOWE1ODczMTY1NWQ2YTM5NmIxZDEz
ZjZmMzNhOTkxYTYwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAyMC0wMi0xNCAg
SnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5s
aW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
TG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90
ZURPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlbW90ZURPTVdpbmRv
dzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChH
ZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5vZGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBicmlk
Z2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToK
KyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9h
cnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAy
MC0wMi0xMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24gdG8gU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkMDAxNGI2NDA2M2M3OTYxZWQ1NGNhMzdiZGRkOGEw
MjlmZTJiNWRmLi45MTlmY2VjOGMzYTI1MGMxZTI2YzQ5OGVlNjNiNWI2MmU1OWI3OTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rp
bl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlk
L3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6
cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTEzICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDaGVjayBpZiBQSVAgaXMgc3VwcG9ydGVkIGlu
IHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTYwNzQ0ZmY0
YjI3MzEwZDAyZmUwMmI5MTdkZjA5NDUyMzRlYTNjMC4uNDNlYWNlMjBmMzA4YTRjZmM4NDlmYjg3
N2E5NWIyYjIzMjQxZTNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxl
LmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyNTUxNTgsIDI1NTQwNSBhbmQgcjI1NTQ4NgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAwMzRiMzU3YzA3MzhlMzQ5MTI1ODg1
OGQ3MDY5ODlmZWZjYjQ4MzNkLi45MmNhOTI0Nzc5NjJiYzA0YzdhOGViODZhMWY0MTVkMmIxODdm
MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApA
QCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAK
ICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IGNkNTExYmZkMjg0YTAxMzI1MmE2NDA1YTY3
MDdhYWQxMzdhMWJjY2IuLjRiZWMzM2E3MmRjMjg0NzdhNjEzNTZmZGI5MjBhNDc2ODYyZWQ3MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00MTgsNyArNDE4LDcgQEAgYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBQYXJlbnQ6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBA
IC00MjYsNyArNDI2LDggQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZt
LCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggZjdmOWRhYjNmMjhh
ZGMwZWFiYjJiZGU4YjI1MDY3NzJhZDI1ZmZjZS4uOWRmODc4ZTU4OGZhMmFlZjA2MjJhYzY5NTg3
ODFhYmU2N2EzN2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5j
cHAKQEAgLTQ3OSw3ICs0NzksOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlGb3JLZXko
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUgogICAgIGlmICho
YW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4Y2VwdGlv
blN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgcmVz
dWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
IGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
anNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIGhhbmRsZUV4Y2VwdGlv
bklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTUzNCw3ICs1MzUsOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcgogCiAgICAgSlNPYmpl
Y3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZp
ZXIoJnZtKSwgc2xvdCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwg
ZXhjZXB0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDkxZTQyN2MzMGM1MTE2M2VkZDlmMTA2ZDQyZjk1ZTA5ZDAyYmU5YzQu
Ljc1NTZlOTU2ZmM2MzJmN2UyYjlkMGUxYWRiZjdjYTgxZjhlOGYwNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxNSw2ICs4MTUsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmgK
ICAgICBydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgKICAgICBydW50aW1lL0RlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oCisgICAgcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaAogICAgIHJ1
bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50aW1lL0RpcmVjdEV2YWxFeGVj
dXRhYmxlLmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhZjQyYzJhZThmZTU5MmJmNmQ2ODI4NTM4OTc2ZDBjZjZkYTZkYjFmLi5m
Yjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIwMmM0ZjZlNDQxODVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTE3OCw2ICsxMTc4LDcgQEAKIAkJNzBFQ0E2MDYxQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyog
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUFG
N0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi87
IH07CisJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczNEI2NTU0MjNG
NEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1NjUg
LyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BT
dHJlbmd0aC5oICovOyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyogV2FzbUNvbnRl
eHRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkwMDgxMzkxRTk1
QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5
NzEsNiArMzk3Miw3IEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFG
N0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQzFEMEQz
MThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBE
ZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVs
ZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTkz
MjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBwYXRoID0gYjMvQjNS
ZWR1Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5
OTUyMkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgcGF0
aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MDg0LDYgKzcwODYsNyBAQAogCQkJCUJDRDIwMzQ3MEUxNzEz
NUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVF
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFF
Rjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywKKwkJCQk3MzRCNjU1NDIzRjRB
MzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8sCiAJCQkJMEZFMDUwMEYxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJMEZFMDUwMTAxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDBEMUFBOTA5
MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuY3BwICovLApAQCAtOTIwOSw2ICs5
MjEyLDcgQEAKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VE
dW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJCNzNCQjFERUY4
NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3Ry
YWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8q
IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2NjIsNyArMTA2
NjYsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8g
PSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYXR0cmlidXRlcyA9IHsKLQkJCQlCdWlsZElu
ZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CiAJCQkJRGVmYXVsdEJ1aWxkU3lzdGVt
VHlwZUZvcldvcmtzcGFjZSA9IE9yaWdpbmFsOwogCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0g
MDcwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAyYWY0ODBhOWNlN2Q4MDI1Y2U1ODgz
ZDhhZGY5Yzk4NDI2OWJhOTc1Li5jNGYxNjcxZTUwMTRiNWQ0N2NkZWViOTEwZGYyMzk2ZGU4MjFi
NDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
CkBAIC03Myw2ICs3Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNl
OjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5ndGg6CkBAIC0xMDYsNyAr
MTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAtMTIzLDYgKzEyNSwyMiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBUcmFu
c2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAorICAgIFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91
c0lEKCkpOworICAgIGlmICghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIG9s
ZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAvLyBXZSBkbyBub3Qg
Y2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2Vs
bC4KKyAgICAgICAgLy8gU2VlIHRoZSBEZWxldGUgY29kZSBiZWxvdy4KKyAgICAgICAgYm9vbCBt
YXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIG5ld1N0cnVjdHVyZS0+bWF5SGF2ZUluZGV4aW5n
SGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisKKyAgICAgICAgaWYgKG1heU5lZWRUb0NoZWNr
Q2VsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKK30KKwogQWNj
ZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjYyLDYgKzI4MCw5IEBAIGJvb2wgQWNj
ZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkgY29uc3QKICAgICBjYXNlIExv
YWQ6CiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBieV92YWwgZm9yIHRoZXNlIHB1
dHMsIGJ1dCB3ZSBkbyBjYXJlIGFib3V0IHRoZSBpZGVudGlmaWVyLgogICAgIGNhc2UgVHJhbnNp
dGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToK
KyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6
CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zMDksNiArMzMwLDkgQEAgYm9vbCBBY2Nlc3NDYXNl
OjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjaygpIGNvbnN0CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoK
QEAgLTM1Niw2ICszODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFu
c2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxl
OgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlz
czoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTQ0Nyw2ICs0NzQsOSBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3Rvcikg
Y29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgogICAgIGNhc2UgTG9hZDoKICAg
ICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25D
b25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAg
ICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00OTIsNiArNTIyLDkgQEAgYm9v
bCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxsKj4qIGNlbGxzVG9N
YXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgogICAg
ICAgICBkb2VzQ2FsbHMgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERlbGV0ZToK
KyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAg
ICAgY2FzZSBMb2FkOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CkBAIC02MTQs
NiArNjQ3LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFjY2Vzc0Nhc2Um
IG90aGVyKSBjb25zdAogCiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAg
ICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNl
IERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNl
IEdldEdldHRlcjoKQEAgLTY2Myw3ICs2OTksNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBl
IGFjY2VzcyBjaGFpbiA9ICIpOwogICAgICAgICBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLT5kdW1w
KHN0cnVjdHVyZSgpLCBvdXQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0g
VHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9
PSBEZWxldGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBw
b2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9pbnRlckR1bXAobmV3U3RydWN0dXJl
KCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUpCiAgICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChtX3N0cnVjdHVyZS5nZXQoKSkp
OwpAQCAtNzA1LDYgKzc0MSw3IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewog
ICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKICAgICAgICAgaWYgKHZpc2l0
b3Iudm0oKS5oZWFwLmlzTWFya2VkKG1fc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpKQogICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX3N0cnVjdHVyZS5nZXQoKSk7CiAgICAg
ICAgIGVsc2UKQEAgLTE4NTEsNyArMTg4OCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgc3RhdGUu
cmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUsIHJlc3VsdFJl
Z2lzdGVyVG9FeGNsdWRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CiAgICAgICAgICAgICBqaXQu
c3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCkBAIC0xODk2LDYgKzE5MzMs
NjcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNsb3dQYXRoLmVtcHR5KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBEZWxldGU6IHsKKyAgICAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsK
KyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CisgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hH
UFIpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmlz
UHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisKKyAgICAgICAgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9CisgICAgICAgICAgICBh
bGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKworICAgICAg
ICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRl
ciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tD
ZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSB5ZXQgc28gdGhhdCB3
ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAgICAvLyBTZWUgU3RydWN0
dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5LgorICAg
ICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIENsZWFyIHRoZSBi
dXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUgZXhw
ZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRl
cmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdIZWFkZXI7CisKKyAgICAgICAg
aml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CisKKyAgICAgICAgaWYgKHNob3Vs
ZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSkgeworICAgICAgICAgICAgaml0Lm51a2VT
dHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgYmFz
ZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7Cisg
ICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAgICAgICAgICAgICAgICAg
ICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAgICBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAgICBvZmZzZXRJbklubGluZVN0b3JhZ2UobV9v
ZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1
ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAqIHNp
emVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgc3RydWN0dXJl
Qml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3RydWN0dXJlKCktPmlkKCkpOworICAg
ICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAgICAgIGppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkp
OworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKGpp
dCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZTogeworICAgICAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGZhbHNlKSwgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlzczogeworICAgICAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsK
KyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgICAg
ICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmlu
ZGV4IDc5ZDMxMDE1NWU5M2E1NDUzZDI4NjFjNDMyMjdiYTNiYWMxOWYyNzcuLmM2YzgxODQ0NjM0
MWQwYTQzYzY3YWVjOTMxODMzMzc0Nzg3ZDE4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgZW51
bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExvYWQsCiAgICAgICAgIFRyYW5zaXRp
b24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAgRGVsZXRlTm9uQ29uZmlndXJhYmxlLAorICAg
ICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBsYWNlLAogICAgICAgICBNaXNzLAogICAgICAg
ICBHZXRHZXR0ZXIsCkBAIC0xNDYsOCArMTQ5LDExIEBAIHB1YmxpYzoKICAgICAgICAgU3RydWN0
dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4gPSBudWxscHRyKTsKIAogICAgIC8vIFRoaXMgY3JlYXRlIG1ldGhvZCBzaG91bGQgYmUg
dXNlZCBmb3IgdHJhbnNpdGlvbnMuCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsK
KworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZN
JiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7
CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0
dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0xNTcsNyArMTYzLDcgQEAgcHVibGljOgogCiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBU
cmFuc2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09
IERlbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpOwog
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQpAQCAtMTY1LDcgKzE3MSw3
IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbik7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKTsKICAgICAgICAgcmV0dXJu
IG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMTMyNDA5YzBhNDUxMGJk
ZmE4ZWNlMzNiNzQzNDcxNjAyZDdiMGU3OS4uYjE2NmMzMGMxOGE1MjNhNzYyNWYzOWFmNmI3ODk1
MDY3YWE1ZjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC03OTUsNiArNzk1LDE1IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBBY2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGUpCiAgICAg
Y2FzZSBBY2Nlc3NDYXNlOjpUcmFuc2l0aW9uOgogICAgICAgICBvdXQucHJpbnQoIlRyYW5zaXRp
b24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlOgorICAg
ICAgICBvdXQucHJpbnQoIkRlbGV0ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nl
c3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRl
Tm9uQ29uZmlndXJhYmxlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6
OkRlbGV0ZU1pc3M6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlTWlzcyIpOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpSZXBsYWNlOgogICAgICAgICBvdXQucHJpbnQo
IlJlcGxhY2UiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNjE3ODczN2Y5ZjhhOWNk
MGI2ZGRhZDU3ZjFjZjEyZWZlNGZjYTcwNS4uOTZhMWJhZWNiZTRjYmJiNzZkYmRlZGE4MDU2NWEy
YzU5ODY1NTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNzYsNiArMjc2LDEyIEBAIHZvaWQgU3RydWN0dXJl
U3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6SW5zdGFuY2VPZjoKICAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgorICAgICAgICByZXNldERl
bEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKKyAgICAgICAgcmVzZXREZWxCeShj
b2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIAogICAgIGRlcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IGRkY2U4NWVjMDI1NTU3NmM5ZTM0
NTFmNjQ3MzZkMTJjMzg5NDI4MDMuLmI1NzViZGQyMTYxOWMyZGZlNGYxODJmYWVkOTBmMjY4ZTll
MjYxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCkBAIC01NSw3ICs1NSw5IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGlu
dDhfdCB7CiAgICAgR2V0QnlWYWwsCiAgICAgUHV0LAogICAgIEluLAotICAgIEluc3RhbmNlT2YK
KyAgICBJbnN0YW5jZU9mLAorICAgIERlbGV0ZUJ5SUQsCisgICAgRGVsZXRlQnlWYWwKIH07CiAK
IGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCAyNmUyODI5MzllOWFjYTg4NjVj
MjIxNzczYzJhNDFlMDI4MDk0ZGRhLi40OGI1Yjg2ZmE0YjllODY1ZWE0OGRjOTlhNDkzYmQ5NDhk
MDc0ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
U2NvcGUuY3BwCkBAIC0xMjksMTQgKzEyOSwxNCBAQCBib29sIERlYnVnZ2VyU2NvcGU6OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZQog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5w
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAotYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiti
b29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERl
YnVnZ2VyU2NvcGUqPihjZWxsKTsKICAgICBBU1NFUlQoc2NvcGUtPmlzVmFsaWQoKSk7CiAgICAg
aWYgKCFzY29wZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkp
OwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7
CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSkt
PmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAogdm9pZCBEZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFy
cmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZmNGNlMWIxZGE0YjU3
OTBkZThhZDk4OGE3MWY2MDJjZGYyNjE2NzQuLjQzMjdjMWYwMmM2OTI3ODQ1MDhlMGE5YTFhMjE0
OTc3NWVkZDgwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGUzZTIw
OGQyZGExY2Q3MzliZmFjYzhjMzRjNTQ5N2NjNTYyZGI5MzYuLjM4NzE1OTE3ODkwMzEyMGE2MTI2
NDVlNGEyMzQzNTEzYmE1ZGJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCkBAIC0yNDYsNiArMjQ2LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
ayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0
QnlJZHNXaXRoVGhpcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9n
ZXRCeVZhbHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0QnlJ
ZHMsIGxpbmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIGxp
bmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5rQnVm
ZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggNDg4MDg3NGMy
ODVhYjdkNDQ3ZWI4OTNhNmU4YjRiYmYwMTA3MzFkNC4uMmZiNmFkOGY2MmY5NWEyNmU2Y2RiODI2
YWE2ZDFjZDY3ZjE5NDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaApAQCAtMTkxLDcgKzE5MSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3B1
dEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4oZ2Vu
LCBzbG93UGF0aCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgYWRkRGVsQnlJZChjb25zdCBK
SVREZWxCeUlkR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAg
ICB7CisgICAgICAgIG1fZGVsQnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxC
eUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGREZWxC
eVZhbChjb25zdCBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciog
c2xvd1BhdGgpCisgICAgeworICAgICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoSW5saW5lQ2FjaGVX
cmFwcGVyPEpJVERlbEJ5VmFsR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCiAg
ICAgdm9pZCBhZGRJbnN0YW5jZU9mKGNvbnN0IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiwg
U2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgbV9pbnN0YW5jZU9m
cy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+KGdlbiwg
c2xvd1BhdGgpKTsKQEAgLTM0OCw2ICszNTgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxJbmxp
bmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiwgND4gbV9nZXRCeUlk
c1dpdGhUaGlzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlWYWxHZW5l
cmF0b3I+LCA0PiBtX2dldEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJ
VFB1dEJ5SWRHZW5lcmF0b3I+LCA0PiBtX3B1dEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNo
ZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlJZHM7CisgICAgVmVjdG9y
PElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlWYWxz
OwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4g
bV9pbkJ5SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdl
bmVyYXRvcj4sIDQ+IG1faW5zdGFuY2VPZnM7CiAgICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4g
bV9qc0NhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCA2NDJiMTYzNTZmOTBlOWMzODYwMmViYzU3ZmQ5ZTA0YTBmNDViNTI4Li44
NTNkYzg5MmFhYjUyNjA0YmQ4MmQyY2QzMzIzZjUwZWQ2YTgxZTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTE0OCwzOCArMTE0
OCw3MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHsKICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwog
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgYXV0byogcHJvcGVydHkg
PSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CiAKLSAgICB2YWx1ZS51
c2UoKTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7
CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2Vu
ZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVh
bS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJl
Z2lzdGVycygpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKLSAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShT
cGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KHZhbHVlUmVncykpOwogCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRv
ciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywKKyAgICAgICAgdmFsdWVSZWdzLCByZXN1bHRHUFIpOworCisgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvcGVydHkpOworCisgICAgbV9qaXQuYWRkRGVs
QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2Rl
KiBub2RlKQogewogICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CiAKICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIGJhc2UudXNlKCk7Ci0gICAga2V5LnVz
ZSgpOworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsK
KyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5l
cmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFt
LT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVn
aXN0ZXJzKCk7CiAKLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVsZXRlQnlWYWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWdzLCBrZXlSZWdzKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisgICAgaWYgKCFtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIAotICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNl
UmVncywga2V5UmVncywgcmVzdWx0R1BSKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUs
CisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFz
ZVJlZ3MsIGtleVJlZ3MpOworCisgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisg
ICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRkMzQyN2JjODJl
OGM5YjI0N2FjODcxYTAyMDAwMWJiMjM4MjlmMjYuLjdjZGYyNmJkZjYyNDc3ODllYThmNjIwYTZk
MDNlYzAzZGRhNTZhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTUxNDQsMjAgKzUxNDQsMTA5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0LmNvbnN0
SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTxEZWxCeUtpbmQga2luZD4KKyAgICB2b2lkIGNvbXBpbGVEZWxCeSgpCisg
ICAgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQ7CisgICAgICAgIGF1dG8g
YmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQ7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5v
cm1hbCkgeworICAgICAgICAgICAgdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
aWRlbnRpZmllck51bWJlcigpXTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBtX291dC5wYXRj
aHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rl
cihiYXNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gc3Vic2NyaXB0ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBt
X291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNv
bWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdp
c3RlcihzdWJzY3JpcHQpOworICAgICAgICB9CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworCisgICAg
ICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQor
ICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwor
CisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ub2RlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAg
ICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24u
YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAg
ICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQorICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFt
cyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFy
YW1zWzBdLmdwcigpOworCisgICAgICAgICAgICAgICAgY29uc3RleHByIGF1dG8gb3B0aW1pemF0
aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRp
bWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRv
IHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2lu
ZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5n
cHIoKSk7CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0
byBnZW5lcmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtp
bmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5HUFIpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQs
IHJldHVybkdQUik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7
CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKwor
ICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBq
aXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlu
a0J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5u
b3RaZXJvNjQocGF0Y2hwb2ludCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5
SWQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBhdXRvIHVp
ZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0g
ICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
RGVsZXRlQnlJZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgbV9vdXQuY29uc3RJ
bnRQdHIodWlkKSkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsPigp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKCkKICAgICB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0
KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWwsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2lu
ZDo6Tm9ybWFsQnlWYWw+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UHVz
aCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRl
NDQ0YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0
MjY1NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAg
ICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxm
UGF0Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2Vs
ZlBhdGNoKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhE
ZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2OWNk
MWI3ODc0NGU4Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7
CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1f
ZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFu
Y2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9j
YWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9i
eV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9kZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3Vs
dCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRj
aEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBw
YXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hC
dWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVy
KTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTll
ODY1NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dl
dEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1
dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7Cisg
ICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBW
ZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8
SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5
VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0
b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYg
KzkzOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRo
VGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVgg
fTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAg
ICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25l
ZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlW
YWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxs
TGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRi
ZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLjhlZGFmOTkxM2JjOTVjYTQyYzU4ZTZiZWRlZDYw
Y2U5MjczMzAwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY2IEBAIFZfSklUT3BlcmF0
aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmln
aW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJz
KQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAg
IEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJh
c2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5
R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0g
cmVzdWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQ
UiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlk
R1BSUmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdH
UFIoKTsKKyNlbmRpZgorfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgp
OworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUg
PSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUo
CisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQoreworICAg
IEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdp
c3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsK
KyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJbmZv
LT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9w
ZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1
bHQ7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0g
YmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJS
ZWc7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7Cisj
ZW5kaWYKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFi
ZWwoKTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5r
QnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1f
c3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBz
bG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFy
dCkpOworfQorCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAppbmRleCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2
Li43NTUwODZhOGQ5YWJlMWJmMTAxNGM0ZTU5ZDE2ZWNiNjc3NjQxNzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0x
NDIsNiArMTQyLDU2IEBAIHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitj
bGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgor
ICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRv
cigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAu
bV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExpbmtCdWZmZXIm
IGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKwor
ICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgor
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQ
YXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKworY2xhc3MgSklURGVsQnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9z
bG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAg
IExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5r
QnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwor
Citwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogY2xhc3MgSklU
SW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAg
IEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0OGRj
NjMzNC4uN2JkZjFmNzMyYmY0ZTA1ZDliODU2OTZlZjQ2ODQ3ZjNiNTYxMDc2YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTQyLDcgKzIxNDIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9w
ZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQog
ICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1MCwzMSArMjE1MCw1
MSBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCkp
OworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
dWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
IGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRv
RGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi0KLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVl
LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hp
bmcodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAg
ICAgICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VW
YWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpO
b3JtYWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpOwor
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgdWlkKTsKIH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBK
U1ZhbHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKIHsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxOTAsNyArMjIxMCw3IEBAIHN0YXRpYyBi
b29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBWTSYKICAgICBlbHNlIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9
IGtleS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHkpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAg
fQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQpAQCAtMjE5
OCwyMCArMjIxOCw0MiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgcmV0dXJuIGNvdWxk
RGVsZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKSkpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5z
dHJ1Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAo
YmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJ
ZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAg
ICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2Rl
QmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVw
YXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRL
ZXkpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0s
IHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkU3Vic2NyaXB0KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNo
V2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNj
b3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQz
ZWVmZjgyYTMwMGMuLjYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsMTAgKzI1
MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9J
TlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3Vy
cmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBv
YmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQ
TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYWJmNTJm
NzEzZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJmNi4uNWRjMGIxMTFlMTk4ZTk0MDRhMzc2
MGUwMmRmODc1M2UzMDg4MGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICszODcsMzkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7Cisg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBKSVREZWxC
eUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
cmVnVDApOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CisKKyAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQorCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRGVsQnlJZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9k
c3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpLmltcGwoKTsKKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVs
QnlJZHNbbV9kZWxCeUlkSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIG1fY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkgKzQyOCw0
MiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocmVnVDEsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5
KTsKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDApOworICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRj
OGJkYWVlZjE0Yy4uNDBmMzhhODkxNTg4NTEyMTNiMTc2NWNjMjA1ZjQxY2JhMjM2YWU3MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC0xMjMsNyArMTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9w
cm9wZXJ0eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50
aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkR2VuZXJpYywgcmVnVDAsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0
ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJv
cGVydHkpLmltcGwoKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDAp
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpAQCAtMTMzLDkgKzEzNSwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVn
VDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgZHN0LCBt
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOworICAgIGJveEJvb2xlYW4ocmVnVDAs
IEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpT
VmFsdWVSZWdzKHJlZ1QwKSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpIHsg
fQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKSB7IH0KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA5MTgyMDQxNTU0YmRjNzZjMTkx
Y2IxMzg1ZDEzYTljODFmZmQ0NWViLi5iZTc1MDFlZjIyYzE4MzNlNGZiN2YwNmE5YWJlM2FhYjA3
NmVkYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTY0MSw3ICs2
NDEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7Cisg
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0s
IGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNv
bmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90Lmlz
Q2FjaGVhYmxlU2V0dGVyKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3Vz
dG9tKCkpIHsKQEAgLTczNCw2ICs3MzQsNzIgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1
dEtpbmQpKTsKIH0KIAorc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsQnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgRGVsQnlLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKKworICAgIHsKKyAgICAgICAgR0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApOworCisgICAgICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmpl
Y3QpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFi
YXNlVmFsdWUuaXNDZWxsKCkgfHwgIW9sZFN0cnVjdHVyZSB8fCAhb2xkU3RydWN0dXJlLT5pc09i
amVjdCgpIHx8ICFvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkK
KyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIGlmICghc2xvdC5p
c0NhY2hlYWJsZURlbGV0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisKKyAgICAgICAg
aWYgKHNsb3QuaXNEZWxldGVIaXQoKSkgeworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbmV3
T2Zmc2V0OworICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRs
eShvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgbmV3T2Zmc2V0KTsKKyAgICAgICAgICAgIGlm
ICghbmV3U3RydWN0dXJlKQorICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7
CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hl
YWJsZSgpIHx8IG5ld1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICBBU1NFUlQobmV3T2Zmc2V0ID09IHNs
b3QuY2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0
dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJU
KG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9m
ZnNldChuZXdPZmZzZXQpKTsKKyAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUodm0sIGNvZGVCbG9jaywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUp
LCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgfSBlbHNl
IGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgeworICAgICAgICAgICAgaWYgKHNsb3Qu
aXNOb25jb25maWd1cmFibGUoKSkKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJs
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBpbnZhbGlkT2Zmc2V0LCBvbGRT
dHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNl
OjpEZWxldGVNaXNzLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRP
ZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBjb2RlQmxvY2ssIHByb3Bl
cnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0
ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgp
KTsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9s
ZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIHByb3BlcnR5TmFtZSkpOworICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9CisgICAgfQor
CisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBj
b2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygp
ID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoRGVs
QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYgKHRyeUNhY2hlRGVsQnkoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKSB7CisgICAgICAgIExPR19J
QygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9P
ck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIGlmIChr
aW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlv
bkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CisgICAgfQorfQorCiBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwKICAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKQEAgLTEzOTEsNiArMTQ1NywxNSBAQCB2b2lk
IHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvKQogICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAordm9pZCByZXNldERlbEJ5KENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBr
aW5kKQoreworICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAgICBlbHNlCisgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlv
bik7Cit9CisKIHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZv
LnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggNmYwZjI2NDExZWNkZWExOTJiNzA2MjEwZThh
OTk0NGJiNGY5ZmUzOS4uYzFkOTk1OWFkYWZkMzY1NzYyZTg5MTc5YWIzYzBlZWQ2NmU1ODdkMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTQxLDkgKzQxLDE1IEBAIGVudW0g
Y2xhc3MgR2V0QnlLaW5kIHsKICAgICBEaXJlY3QKIH07CiAKK2VudW0gY2xhc3MgRGVsQnlLaW5k
IHsKKyAgICBOb3JtYWwsCisgICAgTm9ybWFsQnlWYWwKK307CisKIHZvaWQgcmVwYXRjaEFycmF5
R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFs
dWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0
IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVw
YXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mLCBQdXRLaW5kKTsKK3ZvaWQgcmVwYXRjaERlbEJ5KEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgY29u
c3QgSWRlbnRpZmllciYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVw
YXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgY29uc3Qg
SWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVy
ZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtGb3IoVk0mLCBDYWxsRnJhbWUqLCBDYWxs
TGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpAQCAtNTMsNiArNTksNyBAQCB2b2lkIHVubGlua0ZvcihW
TSYsIENhbGxMaW5rSW5mbyYpOwogdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ2FsbFZhcmlhbnQpOwogdm9pZCByZXNl
dEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQg
cmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0
RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCBy
ZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldElu
c3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMjI1NGZjYzQyOTYx
N2NlODM5N2QyNGU1NTBlMWFjZWM2N2I2MTQ0My4uZmFjYTdiZjRlMTc4ZDQyNWZmYmVmZmU5NTRl
OGYzMWViMDAyMDZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC05MjUsNyArOTI1LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlbF9ieV9pZCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wRGVsQnlJZD4o
KTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX2Jhc2UpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLCBzbG90KTsKICAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOwpAQCAtMTEwOCw3ICsxMTA5LDggQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGZmYjNlYjlkMDA1Y2Y2ZmQwOGZmZDJiYjg4Yjlk
NTg3YmFlZDBmZjYuLjEwN2I1ZDYwNzIwMzcwNTFmNmE3YzFlOWNiMGMxNWYyNjU4OTc5MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZp
ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxl
SWRlbnRpZmllcklubGluZXMuaApAQCAtNDIsNiArNDIsNyBAQCBpbmxpbmUgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KQogCiBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihKU0Nl
bGwqIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwo
aWRlbnRpZmllcikpOwogICAgIHNldENlbGxCaXRzKGlkZW50aWZpZXIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmluZGV4IGZlNmM2YjdkODRjNDdlZGVl
MTFhYWMxMWY2NDg0YTcyZDQxN2JjNDYuLjdhNTliOGZkYjBjMjJjY2JiZDI4ZDgwMzFkYThhMTdl
ZTA1MzcyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNz
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCkBA
IC01OSw3ICs1OSw3IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdXNpbmcgUHV0QnlJbmRl
eEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIFB1dEJ5SW5k
ZXhGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkocHV0QnlJbmRleCk7CiAKLSAgICB1c2lu
ZyBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25Q
dHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAgICAgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciBNRVRIT0Rf
VEFCTEVfRU5UUlkoZGVsZXRlUHJvcGVydHkpOwogCiAgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlC
eUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1
bWVudHMuY3BwCmluZGV4IDk2YTM2MzVlNjgyNzM5M2VlODM2ZDgwNDc3NzI0YTI1ZDU0NmMyNjEu
LmY2OTk5ZTczNDg0ZTJhYmQ4ODE0NTRmMTE0ODMxMGMwMmQ0ZjJhNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtMjIwLDcg
KzIyMCw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wg
Q2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCkKK2Jvb2wgQ2xvbmVkQXJndW1l
bnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIENsb25lZEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMq
PihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yMjksNyArMjI5
LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpCiAgICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFs
aXplU3BlY2lhbHNJZk5lY2Vzc2FyeShnbG9iYWxPYmplY3QpOwogICAgIAotICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBp
ZGVudCwgc2xvdCk7CiB9CiAKIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgaWRlbnQsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBz
aG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmgKaW5kZXggZmQzYTI3YmY3MzU1NGQ1ZWU0YTZlMzFkMGJhMGNhZDE1NzYwNWZmNS4u
MDBjNTM0NzU2MDVhNzNiMmIzZWIzOGQzY2Y4MTMyODgzNGZmMWJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKQEAgLTcyLDcgKzcyLDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKICAgICAKICAgICBib29sIHNwZWNpYWxzTWF0ZXJpYWxpemVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwZTJiYzNhMjcxOWMyYTkzNTNlN2Q3
NTIxYTg3OWJkMTJkNzQwMDY5Li4xZGU4MjM5NTA5ZTBjOGQ3YTU2YTMyNDE0ZmZlOGE3NGE5Yjc4
ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTk4NSw3ICs5ODUsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVs
X2J5X3ZhbCkKICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVy
dHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBDSEVD
S19FWENFUFRJT04oKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHkpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxl
dGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBDSEVDS19FWENF
UFRJT04oKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RlbGV0ZVByb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVs
ZXRlUHJvcGVydHlTbG90LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFkNmY2YjQ4MDBlZjU3ODU2MWNhZWRjOWRk
YmJjODJmMjUzMmU2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJQcm9wZXJ0eU9mZnNldC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIERlbGV0ZVByb3BlcnR5U2xvdCB7CitwdWJsaWM6Cisg
ICAgZW51bSBUeXBlIDogdWludDhfdCB7IFVuY2FjaGVhYmxlLCBEZWxldGVIaXQsIENvbmZpZ3Vy
YWJsZURlbGV0ZU1pc3MsIE5vbmNvbmZpZ3VyYWJsZSB9OworCisgICAgRGVsZXRlUHJvcGVydHlT
bG90KCkKKyAgICAgICAgOiBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQorICAgICAgICAsIG1fY2Fj
aGVhYmlsaXR5KENhY2hpbmdBbGxvd2VkKQorICAgICAgICAsIG1fdHlwZShVbmNhY2hlYWJsZSkK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRDb25maWd1cmFibGVNaXNzKCkKKyAgICB7Cisg
ICAgICAgIG1fdHlwZSA9IENvbmZpZ3VyYWJsZURlbGV0ZU1pc3M7CisgICAgfQorCisgICAgdm9p
ZCBzZXROb25jb25maWd1cmFibGUoKQorICAgIHsKKyAgICAgICAgbV90eXBlID0gTm9uY29uZmln
dXJhYmxlOworICAgIH0KKworICAgIHZvaWQgc2V0SGl0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
KyAgICB7CisgICAgICAgIG1fdHlwZSA9IERlbGV0ZUhpdDsKKyAgICAgICAgbV9vZmZzZXQgPSBv
ZmZzZXQ7CisgICAgfQorCisgICAgYm9vbCBpc0NhY2hlYWJsZURlbGV0ZSgpIGNvbnN0IHsgcmV0
dXJuIGlzQ2FjaGVhYmxlKCkgJiYgbV90eXBlICE9IFVuY2FjaGVhYmxlOyB9CisgICAgYm9vbCBp
c0RlbGV0ZUhpdCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEZWxldGVIaXQ7IH0KKyAgICBi
b29sIGlzQ29uZmlndXJhYmxlRGVsZXRlTWlzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBD
b25maWd1cmFibGVEZWxldGVNaXNzOyB9CisgICAgYm9vbCBpc05vbmNvbmZpZ3VyYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBOb25jb25maWd1cmFibGU7IH0KKworICAgIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vZmZz
ZXQ7CisgICAgfQorCisgICAgdm9pZCBkaXNhYmxlQ2FjaGluZygpCisgICAgeworICAgICAgICBt
X2NhY2hlYWJpbGl0eSA9IENhY2hpbmdEaXNhbGxvd2VkOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWFiaWxpdHkgPT0gQ2Fj
aGluZ0FsbG93ZWQ7IH0KKworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OworICAgIENhY2hl
YWJpbGl0eVR5cGUgbV9jYWNoZWFiaWxpdHk7CisgICAgVHlwZSBtX3R5cGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjE4MjFkNTU2YTNkNDA0NDkzNjc1ZWFlMjVmYTJlNDY2
NzNlYzQzYS4uNjg1YzdhY2JjMTFjNjJkMjMzNzdkMzJjNGRlOWEyMGI2NTg3OGE4YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU4KICAgICByZXR1cm4gQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKLWJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckNv
bnN0cnVjdG9yKj4oY2VsbCk7CkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNl
TGltaXQpCiAgICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNl
TGltaXQoV1RGOjpudWxsb3B0KTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggOTNkNTI3MTQ4NmY2NmZkZTc1M2U0
OWE0MDE2ZjE2ODM4ZTk3NTcyMS4uOWE1YTQ2MzIxYjNkYmI3NjRjMmExYjUyMWQ5MjY4ZjhkMTQz
NTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3Ry
dWN0b3IuaApAQCAtNDksNyArNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEVycm9yUHJvdG90eXBlKik7CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAKIHByaXZhdGU6CiAgICAgRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBm
ZDQ4YmJmMzRjMzA0MzBkMmU3MGRlNTc0OThlOWI1MWU2YWMyNDRkLi4xZDUwY2QxNzRmYzQ3ZDky
MjE3MTg4ZTMyNWZmNTdhZThkMTViODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMjk3LDEyICsyOTcsMTIgQEAgYm9vbCBFcnJv
ckluc3RhbmNlOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JJbnN0YW5j
ZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBFcnJvckluc3RhbmNlOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgRXJyb3JJbnN0YW5jZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxFcnJvckluc3RhbmNlKj4oY2VsbCk7CiAgICAgdGhpc09iamVjdC0+bWF0
ZXJpYWxpemVFcnJvckluZm9JZk5lZWRlZCh2bSwgcHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4g
QmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCmluZGV4IGYxZmFj
NTk2ODJkOWUwMjY1MDhjYjRmZjhjOWIyNjdiNGVlNzZlODcuLjQwMDYwOGQwOGE4MzRjZDMxZTYx
MmU3M2FiNTMxY2IwYTNjYTExZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmgKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRp
YyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICB2b2lkIGNvbXB1dGVFcnJvckluZm8oVk0mKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3Vt
ZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5o
CmluZGV4IGNlMTBmN2ZlNDg3M2U0YTQ3YmUxNDFlMjU1NjlhZDY0OGFmZjlkMjguLjQ3MTIxNjcz
MDM2NDgyOGZlMjc3MGUyMzQ4NjlhY2U3MDkwOGQxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJv
dGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNB
cmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oCmluZGV4IGI4MzdlYzFiYjQzMGY2ZDU4YjFkNWIxMTVkYTUxM2M1
YmNjMGJmNTMuLmE1YTllY2IzMjJhMjBkYThmZTI0MzNmZmQ1NDdhNzhhZmM2MDJjZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50
c0lubGluZXMuaApAQCAtMTM5LDggKzEzOSwxMCBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlw
ZT46OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBybwog
ICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZh
bHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIAotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQs
IHZhbHVlLCBzbG90KSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVzdWx0
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KQEAgLTE1OCw3ICsxNjAsNyBAQCBib29s
IEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotYm9vbCBH
ZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCkKK2Jvb2wgR2VuZXJp
Y0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xNzUsNyArMTc3LDcgQEAgYm9v
bCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChpZGVudCkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgR2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgKmluZGV4KSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNl
dHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5k
ZXggMDM0ODdmNjFlMGYyZmM3NTFiYTcwM2I3MGNhMzZkMDIyMjE2MzRkZS4uNjAxZjFlNDlmMTVj
ZDUwMWEwZTBhNzVlZTI4NTA2ZjMyYjBkYjNhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
LCBKU1ZhbHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBm
YWxzZTsgfQogICAgIHN0YXRpYyBib29sIHNldFByb3RvdHlwZShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsg
fQotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBm
YWxzZTsgfQorICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIFdyaXRl
QmFycmllcjxKU09iamVjdD4gbV9nZXR0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwCmluZGV4IDZkMDc1OTE3MTFlZWRiYzI4ZTBlNGRhNzg0OTgyMmFiOGQ2NmY1
ZDEuLmJjZTM2NTVhMzE5MmVhMjkwZmU3ZjA0MDgyNGEzODg2ZjZiMDQ4MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgYm9v
bCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2Jq
ZWN0OjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KSk7CiB9CiAKLWJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNB
cnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7CkBAIC0zMTQsNyArMzE0
LDcgQEAgYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnQKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHN0YXRpYyBpbnQg
Y29tcGFyZUtleXNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDMxMTY1YjVmZjQ5MjU0Y2MxYTZj
NDc5MDJiNzkxMGFjNGE3ZDliZmYuLmNkYzM5YjUxMmQ3ZWUzYTE1Y2YxYWVjMmUwYTJkOTNkOWFh
YWQwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTE4Miw3
ICsxODIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAppbmRleCBmZTAxODBkZDYwYzNkMWJiNjBmOGI1MzNiMTg2MDU4ZWVhZDgxYjc1
Li41ODZhZjNmYWIzNzk1MmUzZmRlMWNlNDcwYzk5YWIxZWRjNGE3NDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzOworY2xhc3MgRGVsZXRlUHJvcGVy
dHlTbG90OwogY2xhc3MgSlNCaWdJbnQ7CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0NlbGw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyNzEzNTJiMjE3
NDcwMzU2ZGY0MDNmZGQ5Y2RlNjBkZWY4ODgxNjA3Li4wZTY3Zjg2Njc2ZDU4NjVhYTg4ZjA0ZjM1
YWRhNzQzMjFlMDJjZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKQEAgLTEyNiwxMCArMTI2LDEwIEBAIGJvb2wgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlCiAgICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wg
SlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyKQorYm9vbCBKU0NlbGw6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIGlkZW50aWZpZXIsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgc2xvdCk7CiB9CiAKIGJv
b2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA2NjVkMDg4OWNmNDQ2MWMzYWIwYTJhZjRiMDdjNmE1
OGM5MDQyMWM0Li4wNjJlODNkYjM5YWIzNGE2ZWY0ZmRhMzZmZmE1MGU0YzExMWQ5NzEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTgwLDcgKzE4MCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAg
ICBib29sIHB1dElubGluZShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
IAogICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVD
TUFNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAK
aW5kZXggMTQ2YTkxMzJkNDczNTI0MmMxMDZlNjU1NjQ3NzhlMTdlZDdiYWI4Yy4uMWIyNTUyM2M5
OGZiYjA5ZTM3ZjhhNDc0MzE5YmY3NmMzMmQ4YThiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIEpTRGF0
YVZpZXc6OmRlZmluZU93blByb3BlcnR5KAogfQogCiBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVBy
b3BlcnR5KAotICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RhdGFWaWV3Kj4oY2VsbCk7CkBAIC0x
NjAsNyArMTYwLDcgQEAgYm9vbCBKU0RhdGFWaWV3OjpkZWxldGVQcm9wZXJ0eSgKICAgICAgICAg
fHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVPZmZzZXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
IH0KIAogdm9pZCBKU0RhdGFWaWV3OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5kZXggODY0MTBlNjFhZDdl
OTFkODJhNjdlOTdlZmJiNGYzMmYxYmMxMmU3OC4uOThhOGNjOGIzOThmZmRkN2ExYzk0YmU2NTdm
NjU1ZTZjYzdiOWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXcuaApAQCAtNzIsNyArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0g
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAg
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGNkNmVjMTVl
ZTA5YTlmMzRjYWYyZjI5NDAwZmM5NmQ5YTU5ZDRkYmMuLjQzNDZhYWFlZWI2YThlZjVmNTMyODVl
MWQ1YWI2Zjc3MjExYTk0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KIAotYm9vbCBKU0Z1bmN0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTRnVuY3Rpb246OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3AKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIH0KICAg
ICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogfQogCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAppbmRleCBhZGRkZTJhYzAzYTQxMGM3MDhhNzkzNGI1YTVkMDY4OWNh
MWZmYWNkLi4xOGFiNDc1NDNmZDc4Mjk3OGFmZWE5NzJjOGM5YWM2ZDg3MDJjYmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0xNzksNyArMTc5LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCmluZGV4IGYwOGY4NTI0NjliZWZkNmM1YWQ0M2FmMmE1MDA5MmJlZWZlMmIzOWEuLjNiN2Ji
ZGU3NjVjZTFjMzU2NTUwZWNkNThiNzdmZWQ5ZDYxMDZmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAt
MzA1LDcgKzMwNSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKaW5kZXggMGNhZmJkMjc2Y2Y3NGQwYzg1ZWY4YmU3ZGJlNDAzZDNjNzY0YjM0Mi4uNThmYmI1
NzU2MmI3MTAwNzllNjUxNDBmN2UwOWU3MDgwNDhmYTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKQEAgLTQzOCw3ICs0MzgsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpkZWZpbmVPd25Qcm9wZXJ0eSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5
KAotICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKKyAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIGJvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAogICAgIGlm
IChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CkBAIC00ODQsNyArNDg0LDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KAogICAgIEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gY2VsbC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGNlbGws
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSwgc2xvdCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYjNjOTgwYTQ2NjJhZWVlYTEy
NDBhNTY2YzVkNGExOGE5Mjg3MWY3ZS4uMGY4OTAzMDBiZWI3ODRjNzE3OWE4NzNmYWNmY2IyYTg0
ZDBjOWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMTMxNCw3ICsxMzE0LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRk
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgIG1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgIG1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIGFkZEdsb2JhbFZhcihwcm9wZXJ0eU5hbWUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5jcHAKaW5kZXggZjM0NWM1MDI3YWJhOTQwODQ0NzFlMzFiN2I4ZDdlZTJhMmY4ODcx
My4uOTc0YjkyYjU0ZTFhMzM4MzE2OWRlZmFiMmE5YTdkZGU2NDZkYTA1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNw
cApAQCAtMTI3LDEzICsxMjcsMTMgQEAgYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGUKICAgICByZXR1
cm4gdGhpc09iamVjdC0+cHV0T3duRGF0YVByb3BlcnR5KGdsb2JhbE9iamVjdC0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oCmluZGV4IGQwMTNiNTFlZmEyOTdlYmYwM2NhNDI0MDAxN2E2N2FjYzEzYjkzOTcuLjA1ZTRl
NjVjMmRkNDkzZmY3YTRlMzFhNDgyNmI3MGMyNTBjNTc5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMTEwLDcg
KzExMCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAg
REVDTEFSRV9JTkZPOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCmluZGV4IGZlYjU1MTA4NzQ4MDM5MGQzNDA5ZTZjYWE5
NDgwMGI3MjlmN2M3M2QuLjg1OGE5NDJmZTczNTVjZjhjMTE4MDVhOGQwNWUwNjUzZjhhMjE4MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBKU01vZHVsZUVudmlyb25tZW50
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KIAotYm9vbCBKU01vZHVs
ZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTW9kdWxl
RW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9v
bCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBBYnN0cmFjdE1vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5oCmluZGV4IGRhZWFiNjYyZmMwNGRhYmRkMjZkMTQxNDVmMzZlYjE3ZTI3OTJhNzkuLjAxMzBm
ODdmYjk4YmIyYTgyZGFhMjlhNTk2MzUyZTcxOWJiN2VmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAKIHByaXZhdGU6CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudChW
TSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3Bw
CmluZGV4IDJiZGIxMzA1ZWIwYzRiZTk2MDgwNjViZDM0ODU5YzdhZjE0OGIyYTEuLjFmYzZhMjY1
YjhjYTY1YWQxMTkwMmY1ZDAxM2VkNjVkODY1NjE4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKQEAg
LTE5OSwxMiArMTk5LDEyIEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFt
ZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRlbGV0ZS1wCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsK
ICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgIHJldHVybiAhdGhpc09iamVj
dC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aAppbmRleCA4ZWVmNjIxZTNiODRmYTY2MjhjZmEyZjgxNGRhNjI4ZjA2Nzg3ZDFkLi44MTEzNjRk
ZDE3YTEzZTdlZmJmY2YxYzllMjg2MzBlMjQyYTcxMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCBkMGQxNzIxY2YxZGVi
ODMzZjljYjAxZTJiZjMyMWIwNmVkNDE5NmM5Li5lZGEyZDYyMzUwOTllZDMwMWJiMGFlMTE0NTE0
ZjMyZTE1NGNiNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcApAQCAtNzU5LDkgKzc1OSwxMCBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6
OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KG9iamVjdCk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0g
Y2FsbFJldml2ZXIob2JqZWN0LCBqc1N0cmluZyh2bSwgcHJvcC5zdHJpbmcoKSksIG91dFZhbHVl
KTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAg
ICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAg
ICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3Qs
IG1fZ2xvYmFsT2JqZWN0LCBwcm9wKTsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxPYmplY3Qs
IHByb3AsIHNsb3QpOworICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHBy
b3AsIGZpbHRlcmVkVmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5sYXN0KCkrKzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhY2QyOWRl
ZDgxMzUxZmIyODRiMjE1OWFkNDdhNjMxYzM0OTRmMWRmLi4zNDczMmUxYzJiZjM2ZmU1ZDc5Nzdj
MWJkZTI1Y2RhZWQ2M2FjOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCkBAIC0xOTcyLDcgKzE5NzIsNyBAQCBib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0
eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydAog
fQogCiAvLyBFQ01BIDguNi4yLjUKLWJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpA
QCAtMTk5OSw4ICsxOTk5LDEwIEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAKICAgICBib29s
IHByb3BlcnR5SXNQcmVzZW50ID0gaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzKSk7CiAgICAgaWYgKHByb3BlcnR5SXNQcmVzZW50KSB7Ci0g
ICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgJiYg
dm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKQorICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlICYmIHZtLmRlbGV0ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSkgeworICAgICAgICAgICAgc2xvdC5zZXROb25j
b25maWd1cmFibGUoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAg
ICAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSBkZWZlcnJlZFdh
dGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOwogCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC0yMDA4LDcgKzIwMTAsOSBAQCBib29sIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcgogICAgICAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIFtdIChjb25zdCBHQ1NhZmVDb25j
dXJyZW50SlNMb2NrZXImLCBQcm9wZXJ0eU9mZnNldCwgUHJvcGVydHlPZmZzZXQpIHsgfSk7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsICZk
ZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKLSAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX2J1
dHRlcmZseSAmJiAhc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUt
Pmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICBzbG90LnNldEhp
dChvZmZzZXQpOworICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAh
c3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAg
ICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSk7CiAgICAgICAgICAgICAgICAgdGhp
c09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgdGhpc09iamVjdC0+c3Ry
dWN0dXJlSUQoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gaW52YWxpZE9m
ZnNldDsKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBp
bnZhbGlkT2Zmc2V0KTsKQEAgLTIwMjAsNyArMjAyNCw4IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVyCiAKICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAg
dGhpc09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+Y2xlYXIoKTsKLSAgICB9Cisg
ICAgfSBlbHNlCisgICAgICAgIHNsb3Quc2V0Q29uZmlndXJhYmxlTWlzcygpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yMDMwLDggKzIwMzUsMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAKLSAgICBpZiAoaSA+IE1BWF9B
UlJBWV9JTkRFWCkKLSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpKSk7CisgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpIHsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaSksIHNsb3QpOworICAgIH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmpl
Y3QtPmluZGV4aW5nTW9kZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6
CkBAIC0zNjI1LDcgKzM2MzIsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2Ny
aXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgLy8gQSBn
ZW5lcmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5IGNoYW5naW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGFu
IGV4aXN0aW5nIHByb3BlcnR5CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRv
cigpKSB7CiAgICAgICAgIGlmICghY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikg
JiYgb2JqZWN0KSB7Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
ICAgICAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdD
dXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICAgICAgfQpAQCAtMzY0MSw3ICszNjQ5LDgg
QEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBy
ZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50
KSwgY3VycmVudCk7CiAgICAgfQpAQCAtMzY2NSw3ICszNjc0LDggQEAgYm9vbCB2YWxpZGF0ZUFu
ZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICghb2JqZWN0KQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
ICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChj
dXJyZW50KSwgY3VycmVudCk7CiAgICAgfQpAQCAtMzcxOCw3ICszNzI4LDggQEAgYm9vbCB2YWxp
ZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KgogCiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnZXR0ZXIsIHNldHRlcik7CiAKLSAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKICAgICB1bnNpZ25lZCBhdHRycyA9IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRp
bmdDdXJyZW50KGN1cnJlbnQpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cnMgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
aW5kZXggZWM2MzAwZWE5Yjk3MmNlOWJhMGZhZDgxODI1N2FmYjIwZDgyYTJlZC4uNjkzYmRiYjk5
N2Q2NDQyMDgwNjUxYzI3ZWRkZTdiMDg4YTE0MTU2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2xhc3NJbmZv
LmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NQXR0cmli
dXRlR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiRGVsZXRlUHJvcGVydHlTbG90LmgiCiAjaW5j
bHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2FzdC5oIgpAQCAtNjIzLDcgKzYyNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc093
blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBib29s
IGhhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpIGNvbnN0OwogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFs
dWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5j
cHAKaW5kZXggOWM0NzkzNGU0YTNkOTE5OWZhOTg0MmRkMDUyY2U4OGQyNDE1MmFjMS4uZDBiYmMy
YzVhMmQyMjE5MTI3Y2Q5OWIzMDIwOTMwODg3MjEyM2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCBib29sIEpTUHJveHk6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShn
bG9iYWxPYmplY3QtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQo
KSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsK
IH0KIAotYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpT
UHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwp
OwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2Jq
ZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1l
dGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qt
PnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wg
SlNQcm94eTo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3h5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXgg
MzUxZTY2OGQyNTkwZDliOTdjOGY0YmJhMmJmZmI0MDBkYjNmMjEwOS4uNWJlN2JmMGQyZTVhOGIz
MmM3OTRjMGIyNTg5NTc5OGZjNWY5ZWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJveHkuaApAQCAtOTMsNyArOTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmNwcAppbmRleCA2MzBlMWI3OGJiMjA2ZTdhZjYxN2MzYzY4MmMzNGY1ZTE3NTVmNWQ1Li4xMjVm
NmMzMTUwZTk2YWVjZDUzNzQ3MzFmZGE4ZDlhN2JhZmJhMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNDQs
MTMgKzQ0LDEzIEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fc3ltYm9sVGFibGUpOwogfQogCi1ib29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNTeW1ib2xUYWJsZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxl
T2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmNvbnRh
aW5zKHByb3BlcnR5TmFtZS51aWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBKU1N5bWJvbFRhYmxl
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCmluZGV4IGM3YzFlMjBhNjU0NzZiYzcwNjhl
ZTYzZGVkOThiMzM1ZGY3MzZiMjEuLmI1NjhlOGY5MmE5ODNmYjRjYzIwM2E3YTA2MjE4MGFlNGZl
NTkwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQog
ICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN5bWJvbFRhYmxlKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEpTU3ltYm9sVGFibGVPYmplY3QsIG1fc3ltYm9sVGFibGUpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggYjY1MjAy
MjFhODE1OThmZmVmMmE1ZTE0YTgwZmQ0ZTU0ZGM2OWM2ZS4uYjA3ZTBhMDI5MzMyODI2MTAzNmY0
MTEwNmVlZWU5ZTVmOTBjNjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcApAQCAtNjg1LDEyICs2ODUsMTIgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgUHJveHlPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjZWxsKTsKICAgICBhdXRvIHBlcmZv
cm1EZWZhdWx0RGVsZXRlID0gWyZdICgpIC0+IGJvb2wgewogICAgICAgICBKU09iamVjdCogdGFy
Z2V0ID0gdGhpc09iamVjdC0+dGFyZ2V0KCk7Ci0gICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhv
ZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJs
ZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9OwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5w
ZXJmb3JtRGVsZXRlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdERl
bGV0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApp
bmRleCAxN2NhMjlmYjBhM2ZkZGJhNzFlYjY4MjQ5YzA5OWNhMjhhM2Q2MmVkLi5lZTViZDkwNThj
ZmE4MThhNDY3NGE1MjJiZjYwYTJjYTA5ZWFjMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0ZW5z
aW9ucyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgaXNFeHRl
bnNpYmxlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IDQ2ZGNiNzUwNmRhNTcwZTRjOTdl
YjkzYTA5YzAwNDgxYTUxNTM4MjcuLjFjZTFiNGMzM2FhZjFhNDVkZjA3MjQxZjRkZDMwYzY3ZDY3
YTJlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sYXN0
SW5kZXgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAppbmRleCA1ZTk5ZWIzOGI3MTNhOTQy
NjM3MTkxYTg5ZjBiN2M5NmM1ZmJiNzE0Li44NTdjYTJlNzJhZjM0MGVhZTM2NTcwMWQ1NWNhMDdl
ZDgzZTBiMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9yZWdFeHBBbmRM
YXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyA9IChtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3Jp
dGFibGVGbGFnIHwgbGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcpOwogICAgIH0KIAotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZh
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZh
dGlvbi5jcHAKaW5kZXggNTE1NzUyNzY1ZWNiMDJkMTljMDQwZTlmMjFiOTY0OWY3NTE3Yjk0Ny4u
NTFkYmM2N2M1N2Y4MTU2MWZhNzhkMTk0ZWZhZjA0OWMwN2E4YWQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRp
b24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZQogewogfQogCi1ib29sIFN0
cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCmluZGV4IGNkY2MyMWI3ZTVm
YTdiMTA5NmIyNmQxODcwNzRjYmYxN2ViODNjMjkuLjI0MTU0NWU4MTY5MzYyYmY2OTIwYTkxOWI4
ZmUwZmRiYjdhMTAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBzY29wZTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKaW5kZXggNDc3YjljYWZiM2ZhMDA4ZjBmNzA1NjhiNmRiNmY0YTE1MTg2ZDA2ZS4u
NDg2ZGQ5MjczYjc1MDU4YTQ3Zjc2OWEzZmNmODc3NWU2OTBjZDM5NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0xMjUsNyArMTI1LDcg
QEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFN0cmluZ09iamVjdDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29s
IFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcgogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgdGhpc09iamVjdC0+aW50ZXJu
YWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggYTM0MDU4MTc4OTM0ZDg1MjUw
YWNiM2EzZTRkYTM1MmYyMjc4NjUyMy4uNjlmMjZiN2Q3MjRiYmVmNzMyMzMxOTQ3ZTgwYjdjN2Zh
ZmNmOGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKaW5kZXggZWRhNDQ2YmZiZTI2N2FiMDFiODUyZTE1ZmRlOWM5YzMwZTZmNThl
Ni4uNTIwNWRkNzM4MWNjMzE1YzgxMTYzNTUwYWExZGNhMjE5ZjM1ZmNmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC01NDAsOCArNTQwLDcgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZE5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm8KIAogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7Ci0gICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmUoCi0gICAgICAgIHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJl
ZCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSByZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7
CiAgICAgaWYgKG5ld1N0cnVjdHVyZSkKICAgICAgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKIApA
QCAtNTQ5LDE2ICs1NDgsMTMgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm8KICAgICAgICAgdm0s
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKIH0KIAotU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50RmlyZSopCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZz
ZXQmIG9mZnNldCkKIHsKLSAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiAgICAg
QVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCi0gICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAg
ICBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKLQogICAgIGNv
bnN0ZXhwciBib29sIGlzQWRkaXRpb24gPSBmYWxzZTsKKyAgICBvZmZzZXQgPSBpbnZhbGlkT2Zm
c2V0OwogICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+
bV90cmFuc2l0aW9uVGFibGUuZ2V0KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcywgaXNB
ZGRpdGlvbikpIHsKICAgICAgICAgdmFsaWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50
cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7
CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgp
OwpAQCAtNTY4LDExICs1NjQsMjcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYgdm0sIFN0cnUKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICBBU1NF
UlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CisgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAg
ICBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0
ZXMpOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwor
fQorCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CisgICAgc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlO
YW1lLnVpZCgpLCBhdHRyaWJ1dGVzKTsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0
cnVjdHVyZS0+bV9sb2NrKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgb2Zmc2V0KTsKK30KKwogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3BlcnR5
VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2Jq
ZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25G
cm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQs
IGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0
KSk7CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHMgPSBz
dHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9IHNfbWF4VHJhbnNpdGlvbkxlbmd0aDsg
cyA9IHMtPnByZXZpb3VzSUQoKSkKQEAgLTEyMDMsNyArMTIxNSw3IEBAIFJlZjxTdHJ1Y3R1cmVT
aGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUsIGJvb2wmIHNh
d1BvbHlQcm90CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7Ci0gICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygpLT5j
bGFzc05hbWUsICIsIHsiKTsKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwg
UmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihpZCgpKSksICIsICIsIGNsYXNzSW5m
bygpLT5jbGFzc05hbWUsICIsIHsiKTsKICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDUyY2Qz
YzcxZDkyMGYyZjhhOTdiNDYwYjkwZTBlYzcwZDVkNzExYWYuLmFlMjBhZTk2YmE0MDMyZjZhYTFm
OTRiZTNjMTc0Yjc2M2M3M2ZhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNp
bmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlUHJvcGVydHlTbG90
LmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAtMTkxLDcgKzE5Miw4IEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVOZXdQ
cm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVs
bHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZN
JiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShW
TSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUo
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNv
bmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYsIFN0cnVj
dHVyZSosIEpTVmFsdWUgcHJvdG90eXBlLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRj
aHBvaW50RmlyZSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0
dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1
cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKQEAgLTQ3
Nyw2ICs0NzksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdI
ZWFkZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7CisgICAgYm9vbCBtYXlIYXZlSW5kZXhpbmdIZWFk
ZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIApAQCAt
NzE2LDYgKzcxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
ID0gbnVsbHB0cik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmVJbXBsKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJv
cGVydHlPZmZzZXQmKTsKIAogICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0
aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0eSB0YWJsZSwgdGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAg
ICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3RydWN0dXJlcyB0aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdl
IGdvdCB0byBpdC4gSWYgaXQgcmV0dXJucyBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggMGNkOThkNTJhY2M3ZjcxNGMwNWIxNTNl
MDgxMzllNDkxY2Q4Y2Y4Yy4uZmUyODU4NzQwOTRkYWMzMDcwNzVkMmM3NjFlMjMyMmE0NjAxNzVm
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaApAQCAtMjI0LDEwICsyMjQsMjMgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjpoYXNJbmRl
eGluZ0hlYWRlcihjb25zdCBKU0NlbGwqIGNlbGwpIGNvbnN0CiAgICAgCiAgICAgaWYgKCFpc1R5
cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTQXJyYXlCdWZm
ZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7CiB9CiAKK2lubGlu
ZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0Nl
bGwpIGNvbnN0Cit7CisgICAgbXVzdENoZWNrQ2VsbCA9IGZhbHNlOworICAgIGlmIChoYXNJbmRl
eGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtdXN0Q2hlY2tDZWxsID0gdHJ1ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQogewogICAgIHJl
dHVybiB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSAmJiBnbG9iYWxPYmplY3Qo
KSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCmluZGV4IGRmZjFkZjE5YWM4NGE5ZWQzNjRiNTk3ZDVkZDlkMDQxYmVjNDc4
YjMuLmRhYWFjYjE0ZGZjMGFjNWFmNjQxMDg0YTE4OWI2NjJlMzUyNDdjZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKKyAgICBzdGF0aWMgTk9fUkVUVVJO
X0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0yODI4LDYgKzI4MjgsMTUgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRDb25jdXJyZW50
bHkoSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFz
T3duTGVuZ3RoUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAg
SlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9u
Kj4odm0sIHRhcmdldCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVu
Y3Rpb24tPmFyZU5hbWVBbmRMZW5ndGhPcmlnaW5hbCh2bSkpKTsKK30KKwogdm9pZCBKU0RvbGxh
clZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKQEAgLTI5NTksNiArMjk2OCw4IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0U3RydWN0dXJlVHJhbnNp
dGlvbkxpc3QiLCBKU0RvbGxhclZNSGVscGVyOjpmdW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRp
b25MaXN0LCAxKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImdldENvbmN1cnJlbnRseSIsIGZ1bmN0
aW9uR2V0Q29uY3VycmVudGx5LCAyKTsKIAorICAgIGFkZEZ1bmN0aW9uKHZtLCAiaGFzT3duTGVu
Z3RoUHJvcGVydHkiLCBmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5LCAxKTsKKwogICAgIG1f
b2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90
U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L1NwZWN0cnVtLmgKaW5kZXggY2I4ZDNiYjAzMDUyODkxMDhhOGQ4ODFmMDAyMzE0Njg0MzJmYWNm
MC4uNDU4NWIxMDBhYzdkYTk0ODIxNGFkOGM4ZmZiYjIxOTRhYWM3MGVkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvU3BlY3RydW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5o
CkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGFkZChjb25zdCBUJiBr
ZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICAgICAgaWYgKCFjb3VudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBt
X21hcC5hZGQoa2V5LCBjb3VudCk7CkBAIC01OCw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKKyAgICAgICAgTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAu
ZmluZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAg
IHJldHVybiAwOwpAQCAtNjYsOCArNjgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICAKLSAgICBpdGVyYXRvciBi
ZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJl
dHVybiBtX21hcC5lbmQoKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3Qt
Y291bnQuCiAgICAgVmVjdG9yPEtleUFuZENvdW50PiBidWlsZExpc3QoKSBjb25zdAogICAgIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBWZWN0b3I8S2V5QW5kQ291
bnQ+IGxpc3Q7CiAgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0
ZXIgIT0gZW5kKCk7ICsraXRlcikKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50
KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpKTsKQEAgLTEwNiwxNyArMTA3LDIzIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQogICAgIAotICAgIHZvaWQgY2xlYXIoKSB7IG1f
bWFwLmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIExvY2tlciBs
b2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9tYXAuY2xlYXIoKTsKKyAgICB9CiAgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
ICAgIG1fbWFwLnJlbW92ZUlmKFsmZnVuY3Rvcl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRl
clR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBwYWlyKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5rZXksIHBhaXIudmFsdWUpKTsKICAgICAgICAgICAg
IH0pOwogICAgIH0KICAgICAKIHByaXZhdGU6CisgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAg
ICBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPiBtX21hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMDUwNmY4ZWNmYWM2
NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi5mN2E4OTU1N2VkNTZhY2VmOTEzYTRhMWY2ZDcy
NDY3NTJlMTRjZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCkBAIC0zMTQsMTMgKzMxNCwxMyBAQCBib29sIEpTRE9NV2luZG93Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsCiAgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNET01XaW5k
b3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NV2luZG93
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5k
b3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJh
bWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53
cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAog
Ym9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5k
ZXggMWVmMDZjMjZlZTI1MmRlNjY4YzFkZWRlOTFjNWRkZjZhMGRkZmRlNS4uODRiOWExM2UxOWVh
MTg5ZGYzMDc0NzYwNjVkZDM3M2U1MWU0ZjY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE2MywxMyArMTYzLDEzIEBAIGJvb2wg
SlNMb2NhdGlvbjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB1CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGws
IGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1i
b29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTG9jYXRpb24qPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1l
cyBpbiB0aGUgc2FtZSBvcmlnaW4uCiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLndpbmRvdygpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCBlMmVlZGZkNWIwYzVhYTcxODcwZGE3NjU0Mzk3ZTM1Yjk5
YTgyY2FjLi4wY2I2N2VmMjljNjJiZjhjYzQ0NmEwZWNlMzFjOWZlNTM1MTU3YTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0
b20uY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgSlNSZW1vdGVET01XaW5kb3c6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUp
Citib29sIEpTUmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA2ZDcyMWE4ZGY4
NzgyMjY1MzM0N2RlMmY4MmJhMjU1MjI1ZWM1OTc2Li5hN2YyOThjYmE0M2ZlYjc4MDU4NzMzYjEw
Y2E5NWQwMDdiZjBjY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTMwMSw3ICsxMzAxLDcgQEAgc3ViIEdlbmVyYXRl
RGVsZXRlUHJvcGVydHkKICAgICAjIFRoaXMgaW1wbGVtZW50cyBodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlbGV0ZSBmb3IgdGhlCiAgICAg
IyBmb3IgdGhlIGRlbGV0ZVByb3BlcnR5IG92ZXJyaWRlIGhvb2suCiAKLSAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKIAogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDwke2NsYXNzTmFt
ZX0qPihjZWxsKTtcbiIpOwpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRl
UHJvcGVydHkKIAogICAgICMgRklYTUU6IEluc3RlYWQgb2YgY2FsbGluZyBkb3duIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSwgcGVyaGFwcyB3ZSBzaG91bGQgaW1wbGVtZW50CiAgICAgIyB0aGUg
cmVtYWluZWQgb2YgdGhlIGFsZ29yaXRobSBvdXJzZWx2ZXMuCi0gICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ9XG5cbiIpOwogfQogCkBAIC0yNjk2LDcgKzI2OTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICB9CiAKICAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNEZWxldGVQcm9wZXJ0eSgkaW50ZXJm
YWNlKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJv
cGVydHlOYW1lKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTtcbiIp
OwogICAgIH0KIApAQCAtNDMyNCw3ICs0MzI0LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRu
YW1lXCIpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90O1xuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTc1MDcsNyAr
NzUwOCw4IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0
cmluZ30pIHtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtc
biIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCAzMDU0ODg3N2E1Y2U0
NDM2ZTVhZTc4M2NkMDdiOTliNWU3YjQyNzI4Li5hY2UxMzQ1Mjk3NTYxNWQ4ZGI1NmQyMjQ0NzA1
MmVjYTZjZTMwN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0x
MzcsNyArMTM3LDggQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ09w
ZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCkBAIC0xNDUsNyArMTQ2LDggQEAgdm9pZCBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVNl
dHRpbmdBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCBkZWU5NmNlZDFmZjkyNjAwZTIyOTJlZmEzZjk0MWQ0
ZGQ3N2FjNjVhLi5lYzNiODZjOTVmZWU5MmFlYjhmYWY4ZDEzY2M2MzkzMDk4OTI1ZDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xMDgsNyArMTA4LDgg
QEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwog
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiYVNlY3JldEF0dHJpYnV0ZSIpLCBzdHJsZW4o
ImFTZWNyZXRBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
LSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAm
JiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5
T2JqZWN0KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5jcHAKaW5kZXggZmUyODk1ZjdiZDU4ZTEzY2RhYTc5OWI5MGU0OGQ5YjgyODYxZDU2Ni4uMjll
Yzg0Y2I3NzQzY2VjMzRmMWE5ZDY2NDVkMDM2MDQyZjBlNjBhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKQEAgLTE5MCwxNCArMTkwLDE0IEBA
IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0K
IAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpO
bz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAg
ICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAppbmRleCAwZWE0YmIxMWI4NjA1MzAxMTY1N2ZkNmVh
NjNmMjQ2ZDRkODJlNTBhLi4xMzhkNGMxOGY4ZjQ2YmMzNDMzMTA5YmQwMzIzOTU2MzdkMGFjMzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlBy
b3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9u
TW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CmluZGV4IDUxZDEwMDMzNmM5MjYxZmI1MDlkY2FlN2VmYzQyNDlhZmE3ZWIwYTQuLmE4ZGFjYjM3
ZDVjODhlMmRhOTBhMDY1NjU5N2I4ZTYyYzYzYTc2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMTkwLDcgKzE5MCw3
IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwog
fQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
ICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
IH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCA3OTFiZTE4MmViMWIzNjk2OTIxZGU5NzY5NTI3
MjlmMGI0ZjBiMzRhLi4wNTVkM2RmOTIzODE4YzAwNzY3ZjE4OTVkZjY3MjVmNWJjMGVkZmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24u
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVt
ZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNw
cAppbmRleCA0YTgwZmY1ODgwNmU3NWEyMzczNzk1MDgyYTgxMDc5YjlmMmVhYmU3Li5mNmM5MDFi
YTE3YmRkOWEyZTBkNzQ5NTExYmQ2YjU3ZTcwNmU5YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2
b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEpTRwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAK
LWJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamUKICAg
ICAgICAgaW1wbC5uYW1lZERlbGV0ZXIocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1l
KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IDU0ZTAyNTQ3OGUx
ZGMzOTkwNzA3MzNlNDk5YjAxNjMxNDkwMTI0OWUuLmE4NThhMjcxNTRiZDNjNjM2NGZjNDVhNjQ3
ZmY0MmI2YjQ3MjUwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUg
PSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Qzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDk1MzkwMGMyMWUyZjM2ODllYzVkNWJmYjk4YWNiYTIx
NTNhMjgzZjEuLmQ1MTU5MGNiNjQ4ZDFkNmFiYWIwZTE5ZWRmOGEwMmM5MDJiNzRiNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwKICAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmpl
Y3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKj4oY2VsbCk7
CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjE4LDcgKzIxOCw3
IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVy
dHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVy
dHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQotICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBp
bmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyLmgKaW5kZXggYTk5NDViYWZjNjExNDNlNTc2ZmZkNjBmZWM4ZWVlNjk2NGI5ZjAzMC4uMmZl
YThkOTBmNGY0YTE4NDJjOGUxOTJhZjM1ZDg1YzdkMTg2ODllMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlND
OjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
QXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmlu
ZGV4IGExNDJjMDcyYmZkY2YyODQzYzRlM2M2MmMzZDAyNzNiOGIyZDYwOWQuLjM5YTY3NTcyYWUw
YjBjMWNkZTU0NzRkODZmMTcyMDNjZTIzN2QwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTE1NSw0NSAr
MTU1LDUyIEBAIHZvaWQgSlNUZXN0Tm9kZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNh
bGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4
dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdl
dFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
InRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
ZW50cmllcyIpLCBzdHJsZW4oImVudHJpZXMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJrZXlzIiksIHN0cmxlbigia2V5cyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oInZhbHVlcyIpLCBzdHJsZW4oInZhbHVlcyIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAg
ICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oImZvckVhY2giKSwgc3RybGVuKCJmb3JFYWNoIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQog
ICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGQyZjdl
OTg3MWZlNDNlZWRmNDMzZWE4YWM0YWFlNDIxMmFiMzFkNjUuLjliMTQwZTJkYzg1ZmQ4MDVlNGQx
ZWU4ZDk3YzA3Zjk5MWMzMWM0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xOTgyLDE0ICsxOTgyLDE2IEBA
IHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiksIHN0cmxl
bigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Jmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvblN0YXRpYyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMjM0NSw5MCArMjM0NywxMDQgQEAgdm9p
ZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCEod29ybGRGb3JET01PYmplY3QoKnRoaXMp
LnNvbWVXb3JsZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
dGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQiKSwgc3RybGVuKCJlbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghd29ybGRGb3JE
T01PYmplY3QoKnRoaXMpLnNvbWVXb3JsZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigid29ybGRT
cGVjaWZpY01ldGhvZCIpLCBzdHJsZW4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNhbGN1
bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlm
ICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
Z2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAm
JiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5h
YmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVh
biIpLCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0
aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4
cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dv
cmtlckZ1bmN0aW9uIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0
aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFsbG93c01lZGlhRGV2aWNlcygpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1lZGlhRGV2
aWNlcyIpLCBzdHJsZW4oIm1lZGlhRGV2aWNlcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1Nl
Y3VyZUNvbnRleHQoKXx8IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5oYXNTZXJ2aWNlV29ya2VyU2NoZW1lKCkpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigic2VydmljZVdvcmtlcnMiKSwgc3RybGVuKCJzZXJ2aWNlV29y
a2VycyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlMUVuYWJsZWQoKSkp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIiksIHN0cmxl
bigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUi
KSwgc3RybGVuKCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlm
ICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRp
dGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSwgc3RybGVuKCJjb25kaXRpb25hbGx5
RXhwb3NlZFRvV2luZG93QXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRU
b1dvcmtlckF0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJB
dHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgIH0KICAgICAvLyBBZGRpbmcgYmFjayBhdHRyaWJ1dGUsIGJ1dCBhcyByZWFkb25seSwg
YWZ0ZXIgcmVtb3ZpbmcgdGhlIHJlYWQtd3JpdGUgdmFyaWFudCBhYm92ZS4gCiAgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxl
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggZmVlYmRlZjdiYzQ1
ZTk4YzkzMDhmZGZiZGUxMTBiOTlmZGRkY2EyYy4uMzJjMTNiOWViNDA3MDgzNWViMjU4MzcxOTZk
NzgzMjU4YWM1OTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0z
OTEsOCArMzkxLDkgQEAgYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5KE5QUCwgTlBPYmplY3QqIG8s
IE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKGktPmlzU3RyaW5n
KCkpCi0gICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllckZyb21OUElkZW50aWZp
ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG9iai0+
aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBpLT5zdHJpbmcoKSksIHNsb3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmlt
cC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgob2JqLT5pbXAsIGxleGlj
YWxHbG9iYWxPYmplY3QsIGktPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDIyZjBiOGQ5ZDhmYWU0YTc5YzZiNjMxZTkz
NWNiNmFkYzdkOTRmZmYuLmRiYzZkM2IxZTE5ZjljMjFkOWI2MGMxN2VkZmY5NzE2MDA2N2MwNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAg
LTQ1Nyw4ICs0NTcsOSBAQCAtICh2b2lkKXJlbW92ZVdlYlNjcmlwdEtleTooTlNTdHJpbmcgKilr
ZXkKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
IAotICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxm
IF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBT
dHJpbmcoa2V5KSkpOworICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBTdHJpbmcoa2V5KSksIHNsb3QpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUobGV4aWNhbEds
b2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmlu
ZGV4IDVlZDIxZjEzNGVmNGFhYjVkYzBjNTVhNDVkZTZhNjNkMjdjNmJlMmUuLjYyMjk2MzY4ZWJi
OTBjNTBiOWRlN2ZhMDc4MmM5YzZmYTI4NTkxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICBib29sIHRvQm9vbGVhbihKU0ds
b2JhbE9iamVjdCopIGNvbnN0OyAvLyBGSVhNRTogQ3VycmVudGx5IHRoaXMgaXMgYnJva2VuIGJl
Y2F1c2Ugbm9uZSBvZiB0aGUgc3VwZXJjbGFzc2VzIGFyZSBtYXJrZWQgdmlydHVhbC4gV2UgbmVl
ZCB0byBzb2x2ZSB0aGlzIGluIHRoZSBsb25nZXIgdGVybS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCAxOWVkMTljYmM3YWUzZWU0Njc3OTZiMTAzY2Jm
ZTc2MTYwOWFkNzMwLi42ZTg3N2QyZWI3ZjQ0ZDAzYTI4ZTE3MTA4M2JkM2QwZjBiYjk4ODlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yOTAsNyAr
MjkwLDcgQEAgQ2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0Nl
bGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7
CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggNGQyOTdjNzBkNmIxYjZjMWFmODhm
OTE0YmU4NWY2MGRmMDNjYzliMS4uZWMzNTg4ZmM1NjU5NTUzZjUyNzI4M2M1OGE3MzU4MDIxMzI5
YWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtMTQ5LDcg
KzE0OSw3IEBAIGJvb2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRl
eCwgdmFsdWUpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFJ1bnRpbWVBcnJheTo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmgKaW5kZXggZmNmNWUzM2ZiMTE0MDE4NTEwNzk5MzBmYmQxMTc2MTM1
NDUyYzdlNi4uMjk4MTJhNjZkNmYwMTI0ZTM4MzYyNWY5NTYwMTljYTMzYmMzYmQ5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
ICAgICAKICAgICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5n
ZXRMZW5ndGgoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5k
ZXggYTAzNmI2NjYyZDQ4NzJmNjhkYzUyNjQ1YmExYWYyYmExNTMzMDMyZC4uOWQ1ZDYwZGVmMzU3
NTRiZTFlMGUwNjIwZTQxZWRiOThlZmUzOWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBSdW50
aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3Zl
IGEgcHJvcGVydHkgb2YgYSBSdW50aW1lT2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggNmNiZjdiZjc5NmIwYTg5NDA0Yjk0
MjI3NWQ2NTFlNjBlNzMyNDU4Mi4uM2MxMGQ4YmQ1MGYzYjdkYWE0ODQyMjE0YjllMDRmMDQzYWZk
ZjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUo
Y29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUp
OwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwog
ICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCAyZWZiMjI1MjNmOTIxZTkyYWJkMDIxNmVi
MGNkMWZmZDEwMDM2MmJlLi4wNWQxMjkyOTM5NTgyZjA0YzQzMmQzMGMxNDJkYmE1ZGFhMGJmMTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgSlNOUE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgcmV0dXJuIGpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCktPmRlbGV0ZVByb3BlcnR5KGxleGlj
YWxHbG9iYWxPYmplY3QsIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCmluZGV4IDg1NTg4OTQ5YTMwNjA0YzY5Zjc3Y2NjM2Y2MGU1NDY5Nzdm
ZmFjNmQuLjQ4MDNjMGJjNTcxZjk3N2RkYzI3MjJiYmFiOTZiNmQyN2MyYTljNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAg
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCosIE5QSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAzNmYyOGVlNmZiMDEwMmQ4YzE3NzEz
YzYwOGI2MTRlYWY4NWRkYjc2Li44YjlmY2RmMzA4NTJkMWQyMjJhNWIzYmQ1OTA2ZGE0YmFmZTQz
YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMjI5LDggKzIyOSw5IEBAIGJvb2wgTlBKU09iamVj
dDo6cmVtb3ZlUHJvcGVydHkoTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRp
Zmllcik7CisKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIG1fanNP
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgc2xvdCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKCFtX2pzT2JqZWN0LT5oYXNQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
ZGVudGlmaWVyUmVwLT5udW1iZXIoKSkpIHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAz
MmFmYTI4MGZhOTI3ZDg3NzMyMGViODFjYmQ5MDcxMDI1NTk3ZS4uMTJjZTQwOWM1NDNjMjI4ODIy
NzcxOWIyZDQxMDhiZjJhODc5ZDQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQpAQCAtMTE0MSw4ICsxMTQxLDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OnJlbW92ZVByb3BlcnR5KHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGkK
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworCisgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmOWUxMWJk
NDc5YmExNTA0NzQ4ZjU4M2JhNmZhMzEyNWUzNzg0NTMxLi44MjcxNzhlZjRjMzViMDRkOGQ0NDJl
MDQxOWM4YjEyY2YwZWE0ZTNmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUg
ZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBl
LWNoYWluLmpzOgorICAgICAgICAoZGVsZXRlLkMucHJvdG90eXBlLnopOgorICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpz
OiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAg
ICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0
X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwubWFrZUZvbzYp
OgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5h
c3NlcnRfbmVxLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0
X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5v
SW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3Nl
cnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGlu
ZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0
eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURl
bGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MubWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRl
QnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVs
ZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanM6CisgICAgICAgICogc3Ry
ZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAoYXNz
ZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAg
ICAgKGFzc2VydF90aHJvd3MpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFz
c2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9J
bmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93
cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5
VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2Fj
aGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RD
YWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURl
bGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVF
bXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgubWFrZUZv
bzUpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3RE
ZWxldGVJbmRleCk6CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHlt
b3JwaGljRGVsQnlWYWwubWFrZUZvbzYpOgorICAgICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUlu
ZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxldGVCeVZhbC5tYWtlRm9vNyk6CisgICAgICAg
IChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC50ZXN0QmlnaW50RGVsZXRlQnlWYWwp
OgorICAgICAgICAobm9JbmxpbmUudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxl
dGVCeVZhbC5tYWtlRm9vOCk6CisgICAgICAgIChub0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlW
YWwudGVzdFN5bWJvbERlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xE
ZWxldGVCeVZhbC50ZXN0T2JqRGVsZXRlQnlWYWwubWFrZUZvbzkpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLnRlc3RPYmpEZWxldGVCeVZhbCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdC5tYWtlRm9vMTApOgorICAgICAg
ICAobm9JbmxpbmUudGVzdE9iakRlbGV0ZUJ5VmFsLnRlc3RTdHJpY3QpOgorICAgICAgICAobm9J
bmxpbmUudGVzdFN0cmljdC50ZXN0T3ZlcnJpZGUuYXJyLmopOgorICAgICAgICAobm9JbmxpbmUu
dGVzdFN0cmljdC50ZXN0T3ZlcnJpZGUpOgorICAgICAgICAobm9JbmxpbmUudGVzdE92ZXJyaWRl
KToKKwogMjAyMC0wMi0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUGxhY2F0ZSBleGNlcHRpb24gY2hlY2sgdmFsaWRhdG9yIGluIEdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OnB1dCgpLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCmluZGV4IDQ5YTMxYjdm
MjQ3YzFiZDBhY2E4MmNiMjJkZjIwZThmMWJmNjFiZGQuLjU0YmJhODJlNjk5YzYyY2NjYTg5NDUx
NmU2MmI3ZTZjYTFmNTEyMDIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Rl
bGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcworKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKQEAgLTEs
NCArMSw0IEBACi0vL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAj
IGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5CisvL0Agc2tpcCBpZiAkbW9kZWwgPX4g
L15BcHBsZSBXYXRjaC8KIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgaWYgKCFiKQogICAgICAg
ICB0aHJvdyBuZXcgRXJyb3I7CkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGRvVGVzdCh6VmFs
KSB7CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDA7ICsraSkg
eworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CiAgICAgY29uc3QgWCA9IHsgaSB9
CiAgICAgQy5wcm90b3R5cGUueiA9IFgKICAgICBkb1Rlc3QoWCkKQEAgLTM2LDcgKzM2LDcgQEAg
Zm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKIAogZGVsZXRlIEMucHJvdG90eXBlLnoKIAot
Zm9yIChsZXQgaT0wOyBpPDEwMDAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAw
MDAwOyArK2kpIHsKICAgICBnZXRaKHt6OiBpfSkKICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGlu
ZS1jYWNoZS1wb2x5bW9ycGhpYy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhZmZhYzk4
ZTU2M2Q1ZjM3ZjZlZTIwOTA4NWQ2NDgzYzk2ODFkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBo
aWMuanMKQEAgLTAsMCArMSw1MyBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAg
IGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWls
ZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09
ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09
IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAi
ICE9PSAiICsgYik7Cit9Citub0lubGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitu
b0lubGluZShhc3NlcnRfbmVxKQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChp
KSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAg
ICAgICBmb29bImJheiIraV0gPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0
ZSBmb29bImJheiIraV0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZSht
YWtlRm9vNikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsg
ajw1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisg
ICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAg
IGZvb1siYnVnIitqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
UG9seW1vcnBoaWNEZWxCeVZhbCkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAzMDAwMDsgKytpKSB7
CisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ5OTEyZGE0YmJiYWFkMDUyMWU1NTEyNWM5MDdlNWZiMmNkYzE0ZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNh
Y2hlLmpzCkBAIC0wLDAgKzEsMTc0IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBX
YXRjaC8KKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9u
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZnVuKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcg
PSB0cnVlCisgICAgfQorICAgIGFzc2VydCh0aHJldykKK30KK25vSW5saW5lKGFzc2VydCkKK25v
SW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCitub0lubGluZShhc3NlcnRf
dGhyb3dzKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5j
dGlvbiBtYWtlRm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9
IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAg
cmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3
IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQp
CisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBt
YWtlRm9vMigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlW
YWwpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXIsIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFr
ZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBm
b28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAg
ICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxl
dGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVl
KQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAg
ICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAg
fSk7CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShm
b28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZSht
YWtlRm9vNCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisg
ICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEo
T2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZv
bykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisg
ICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAw
MDA7ICsraSkgeworICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlWYWwoKQorICAgIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAg
IHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFi
bGUtc3RydWN0dXJlLmpzCmluZGV4IDc3OTVkYzU4MTU3OGU0YzM5ODFjMjJhYzg3NmM0NTU0MTNl
NjRkM2MuLmE5MzlhYWUzYWM4YWNjYzIyMTRkZDdlN2Q4MDI0NDIxYTgxNjQ1ZDkgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFi
bGUtc3RydWN0dXJlLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9w
ZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCkBAIC0yNCw1ICsyNCw1IEBAIGZ1bmN0
aW9uIGRvVGVzdCgpIHsKIH0KIG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwx
MDAwMDAwMDsgKytpKSBkb1Rlc3QoKQorZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyArK2kp
IGRvVGVzdCgpCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1p
bmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNh
Y2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBlMGRhMDEzMTU5MTE5ZjYwMzAwZmQxMGUyMWNjMWE0OGNlNzZi
YjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5s
aW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsNDIxIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJ
bnQ9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRp
dGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIp
OworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJldyA9IGZh
bHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHRo
cmV3ID0gdHJ1ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShhc3NlcnQp
Citub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9JbmxpbmUoYXNz
ZXJ0X3Rocm93cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAg
ZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5i
YXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAg
ICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9
IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBhcnJbal0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9
IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0g
PSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVC
eUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rp
b24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0g
MQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAg
ICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0g
bmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9
IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0g
PSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0
ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAg
IGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9v
LmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBm
b28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9v
CisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUw
KQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9
IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
ICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAg
ICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAg
ICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAgICBs
ZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAg
ICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEo
ZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwg
dHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgewor
ICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAg
ICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAg
ICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRf
ZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9Jbmxp
bmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQorICAgIH0K
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28g
PSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0
X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAx
KQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiAr
IGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9J
bmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0ZXN0RGVsZXRl
SW5kZXgoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxldCBmb28gPSB7
fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBmb29b
MF0gPSAyMworICAgICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZv
by5iYXIsIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0cnVlKQorICAg
ICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5s
aW5lKG1ha2VGb281KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb281KCkKKyAgICB9
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9v
ID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFy
IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9
PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFz
c2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0sIDIzKQorICAg
ICAgICBhc3NlcnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sxXSA9IDEKKyAg
ICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0RGVsZXRl
SW5kZXgpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBmdW5j
dGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1siYmF6
IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Iitp
XQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhm
b28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAgICAg
ICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29b
ImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAg
ICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQ
b2x5bW9ycGhpY0RlbEJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKSB7
CisgICAgZnVuY3Rpb24gbWFrZUZvbzcoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAg
ICBmb29bMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dID0gMQorICAg
ICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5v
SW5saW5lKG1ha2VGb283KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb283KCkKKyAg
ICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3Qg
Zm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFz
c2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG4gaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJi
dWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdEJpZ2lu
dERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwoKSB7CisgICAg
Y29uc3Qgc3ltYm9sID0gU3ltYm9sKCdmb28nKTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb284KCkg
eworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAg
IGFzc2VydCghKFN5bWJvbCgnZm9vJykgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KHN5bWJvbCBp
biBmb28pCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQor
ICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb284KQorCisgICAg
YXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGFycltqXSA9IG1ha2VGb284KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZv
by5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVn
IiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RTeW1ib2xE
ZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdE9iakRlbGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0
IHN5bWJvbCA9IHsgaTogImZvbyIgfTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb285KCkgeworICAg
ICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2Vy
dChzeW1ib2wgaW4gZm9vKQorICAgICAgICBhc3NlcnQoISh7IGk6ICJmb28iIH0gaW4gZm9vKSkK
KyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisgICAgICAg
IHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzkpCisKKyAgICBhcnIgPSBu
ZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAg
ICAgYXJyW2pdID0gbWFrZUZvbzkoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQo
Zm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3Ro
LCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9
IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0g
PSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdE9iakRlbGV0ZUJ5VmFs
KQorCitmdW5jdGlvbiB0ZXN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1
bmN0aW9uIG1ha2VGb28xMCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5i
YXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9v
LmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisg
ICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAg
dmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7Cisg
ICAgICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvby5mb29iYXIpCisgICAgICAgIGFz
c2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBu
b0lubGluZShtYWtlRm9vMTApCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzEwKCkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5i
YWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29b
ImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0K
K30KK25vSW5saW5lKHRlc3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RPdmVycmlkZSgpIHsKKyAg
ICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgYXJyW2pdID0gZnVuY3Rpb24oKSB7IH0KKyAgICAgICAgYXNzZXJ0X2VxKCR2
bS5oYXNPd25MZW5ndGhQcm9wZXJ0eShhcnJbal0pLCB0cnVlKQorICAgICAgICBkZWxldGUgYXJy
W2pdLmxlbmd0aAorICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3BlcnR5KGFy
cltqXSksIGZhbHNlKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0
LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisg
ICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAg
IGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykK
KyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
T3ZlcnJpZGUpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpCisgICAg
dGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWRNaXNzKCkKKyAgICB0ZXN0RGVsZXRlSW5kZXgoKQorICAgIHRlc3RQb2x5bW9ycGhpY0RlbEJ5
VmFsKGkpCisgICAgdGVzdEJpZ2ludERlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0U3ltYm9sRGVsZXRl
QnlWYWwoKQorICAgIHRlc3RTdHJpY3QoKQorICAgIHRlc3RPdmVycmlkZSgpCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390934</attachid>
            <date>2020-02-17 10:32:17 -0800</date>
            <delta_ts>2020-02-17 13:37:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200217103217.patch</filename>
            <type>text/plain</type>
            <size>213864</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDc5NzZiMmM5NDRiNDA5OWU1NWViZWU5ZjA5NzBkNWM2MDVhODQ0Li45ZjJhY2QwN2QwZWYzM2Nh
YTk3M2ZhZDA2ZTQ1YzRmYTI3MjU5ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTE2ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFJlbW92ZSBy
ZW1haW5pbmcgV1RGX0VYUE9SVCBhbmQgV1RGX0lNUE9SVCBieSByZXBsYWNpbmcgdGhlbSB3aXRo
IFdURl9FWFBPUlRfREVDTEFSQVRJT04gYW5kIFdURl9JTVBPUlRfREVDTEFSQVRJT04KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
NWRiNDcwMjkzMzRiNTFjZDEyMTI4ODFiYjBlZDE5Mjc4MTRmZWY3My4uYjVlZDgxZDI3NGY5YmFj
MGQxMGFlMTc1MDQzMGUzOTQzY2ViODVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0x
NCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAg
SW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNw
ZWN0cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6U3BlY3RydW06OmJ1aWxkTGlzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisgICAgICAg
IChXVEY6OlNwZWN0cnVtOjpiZWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNwZWN0cnVt
OjplbmQpOiBEZWxldGVkLgorCiAyMDIwLTAyLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCB0cmFjZSBwb2ludHMgZm9yIGxheWVyIGZs
dXNoIHJ1bmxvb3Agb2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NDhlZGFjNTlhMTBjNTQxMGE4ODVj
YWE2ZmU3N2NjYjEzNGMzZDZlLi44YmUwNGE5OWZmNmFjODk5ZDhlYzQyYjg1ZjgyYmUyMWNiYTU3
ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNo
YXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBk
ZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlRGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
b2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAg
ICAgICgtW1dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6XSk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgor
ICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMjAtMDItMTcgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERCOiBpbmRl
eCBjdXJzb3IgaXRlcmF0aW9uIGlzIHNsb3cgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgaW5kZXgg
cmVjb3JkcyBmcm9tIGRpZmZlcmVudCBvYmplY3Qgc3RvcmVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE5NzU4OGMy
YWI4NGYzODViMWNkNDkxYzc0OTEwMDcyNzdjZTZlNDQuLmNiMGFjOWM3Zjg1YmQ0ZTlmZjZlMTY5
MmFlMDNkOTFhNzRhYmI4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTQg
IEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElu
bGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAtMDItMTcgIFBl
ciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFkZCB0
ZWxlbWV0cnkgd2l0aCBiYWNrdHJhY2UgZm9yIHNwZWNpZmljIHJ1bGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggY2FjMDg3MGRiNTA2M2FjODk5NDQ2ODNiNjZjZDAzMGE5ODk1YWJj
YS4uMDhiMDY0OTdhMmYzYjRkNzVjNDRjZjAyZmQ3Nzc4ZGYzNjkxNTM2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUg
ZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJv
cGVydHkpOgorCiAyMDIwLTAyLTE0ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYXNrIFdlYkdMIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgKaW5kZXggMDM0YjM1N2MwNzM4ZTM0OTEyNTg4NThkNzA2OTg5ZmVmY2I0
ODMzZC4uOTJjYTkyNDc3OTYyYmMwNGM3YThlYjg2YTFmNDE1ZDJiMTg3ZjM2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTIwMiw3ICsyMDIs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogCiAgICAgc3RhdGljIGJv
b2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAppbmRleCBjZDUxMWJmZDI4NGEwMTMyNTJhNjQwNWE2NzA3YWFkMTM3YTFiY2Ni
Li40YmVjMzNhNzJkYzI4NDc3YTYxMzU2ZmRiOTIwYTQ3Njg2MmVkNzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApA
QCAtMzczLDcgKzM3Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtNDE4LDcgKzQxOCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFBh
cmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpAQCAtNDI2LDcgKzQyNiw4
IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFs
T2JqZWN0KTsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3QqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1l
KSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGY3ZjlkYWIzZjI4YWRjMGVhYmIyYmRlOGIy
NTA2NzcyYWQyNWZmY2UuLjlkZjg3OGU1ODhmYTJhZWYwNjIyYWM2OTU4NzgxYWJlNjdhMzdlNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC00NzksNyAr
NDc5LDggQEAgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5Rm9yS2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVIKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9u
SWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRo
cm93KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50KTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9
IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29w
ZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01MzQsNyArNTM1
LDggQEAgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHIKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9
IHRvSlMob2JqZWN0KTsKIAotICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LT5pZGVudGlmaWVyKCZ2bSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJv
b2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZ2bSksIHNsb3Qp
OwogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA5MWU0MjdjMzBjNTExNjNlZGQ5ZjEwNmQ0MmY5NWUwOWQwMmJlOWM0Li43NTU2ZTk1NmZjNjMy
ZjdlMmI5ZDBlMWFkYmY3Y2E4MWY4ZThmMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC04MTUsNiArODE1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9E
YXRlSW5zdGFuY2VDYWNoZS5oCiAgICAgcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMu
aAorICAgIHJ1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKICAgICBydW50aW1lL0RpcmVjdEFy
Z3VtZW50c09mZnNldC5oCiAgICAgcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAg
cnVudGltZS9EaXNhbGxvd1Njb3BlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YWY0MmMyYWU4ZmU1OTJiZjZkNjgyODUzODk3NmQwY2Y2ZGE2ZGIxZi4uZmI3NDU2NTE3ZjhmNzRj
NjlmMWM5ZDViZGMyMDJjNGY2ZTQ0MTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExNzgsNiArMTE3OCw3IEBACiAJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBF
Q0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQw
RDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1
RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3MzRCNjU1
NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEg
LyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzNFMzc5OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9v
cFN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLzsg
fTsKIAkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI3OTU4RDdGQTEx
NDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdDRCAv
KiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTcxLDYgKzM5NzIsNyBA
QAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThCMDA1
RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8q
IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlT
bG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xv
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1
NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVu
Z3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkz
MzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVj
ZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0Iy
QzMwOTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzA4NCw2ICs3MDg2LDcgQEAKIAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyog
RGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERh
dGVQcm90b3R5cGUuaCAqLywKIAkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzLmggKi8sCisJCQkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8q
IERlbGV0ZVByb3BlcnR5U2xvdC5oICovLAogCQkJCTBGRTA1MDBGMUFBOTA5MTEwMEQzM0IzMyAv
KiBEaXJlY3RBcmd1bWVudHMuY3BwICovLAogCQkJCTBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAv
KiBEaXJlY3RBcmd1bWVudHMuaCAqLywKIAkJCQkwRkUwNTAwRDFBQTkwOTExMDBEMzNCMzMgLyog
RGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNwcCAqLywKQEAgLTkyMDksNiArOTIxMiw3IEBACiAJCQkJ
RkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8q
IERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTczNEI2NTU1MjNGNUMx
MDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBEZXN0cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdElu
dGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNjYyLDcgKzEwNjY2LDYgQEAKIAkJMDg2
N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0g
UEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0ZXMgPSB7Ci0JCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdl
dHNJblBhcmFsbGVsID0gWUVTOwogCQkJCURlZmF1bHRCdWlsZFN5c3RlbVR5cGVGb3JXb3Jrc3Bh
Y2UgPSBPcmlnaW5hbDsKIAkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFz
dFVwZ3JhZGVDaGVjayA9IDEwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKaW5kZXggMmFmNDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjli
YTk3NS4uYzRmMTY3MWU1MDE0YjVkNDdjZGVlYjkxMGRmMjM5NmRlODIxYjQxMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMs
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgSW5IaXQ6CiAgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFi
bGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5
TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNv
bmRpdGlvblNldCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5
cGVBY2Nlc3NDaGFpbikKIHsKQEAgLTEyMyw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmNyZWF0ZURlbGV0ZSgKKyAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBp
ZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2Fz
ZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8v
IFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVsb3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tD
ZWxsOworICAgICAgICBuZXdTdHJ1Y3R1cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVk
VG9DaGVja0NlbGwpOworCisgICAgICAgIGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwg
b2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nl
c3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVp
cmVzSWRlbnRpZmllck5hbWVNYXRjaCgpIGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdl
IGRvbid0IGN1cnJlbnRseSBoYXZlIGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8g
Y2FyZSBhYm91dCB0aGUgaWRlbnRpZmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2Fz
ZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxl
dGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0
R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQz
MlByb3BlcnR5Q2hlY2soKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgw
LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBj
YXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERl
bGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBH
ZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVw
ZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2Fz
ZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0
aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgor
ICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9yPEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxz
KSBjb25zCiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxz
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoK
ICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJv
b2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QK
IAogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgog
ICAgIGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBA
IC02NjMsNyArNjk5LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4g
PSAiKTsKICAgICAgICAgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwg
b3V0KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisg
ICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAg
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3Ry
dWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAg
IGVsc2UgaWYgKG1fc3RydWN0dXJlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3Ry
dWN0dXJlID0gIiwgcG9pbnRlckR1bXAobV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3
NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKSBjb25zdAogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5z
aXRpb246CisgICAgY2FzZSBEZWxldGU6CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5p
c01hcmtlZChtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0x
ODUxLDcgKzE4ODgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVk
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAg
ICAgICAgICAgICAgICAgdmFsdWVSZWdzLApAQCAtMTg5Niw2ICsxOTMzLDY3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKworICAgIGNhc2UgRGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2
YWx1ZVJlZ3MpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKyAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlk
YXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3BlcnR5RGVsZXRp
b25UcmFuc2l0aW9uKCkpOworCisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJl
c2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNl
cnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVk
VG9DaGVja0NlbGw7CisgICAgICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1
cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAg
IC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQg
dG8gY2hlY2sgdGhlIGpzY2VsbC4KKyAgICAgICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhp
bmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFt
YXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdl
IGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ugb3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAg
ICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVhZGVyOworCisgICAgICAgIGppdC5tb3ZlVmFsdWUo
SlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOworCisgICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJl
QW5kQ2xlYXJCdXR0ZXJmbHkpIHsKKyAgICAgICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3Rv
cmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIGJhc2VHUFIpOworICAgICAg
ICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgaml0
LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsKKyAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG1fb2Zmc2V0KSAqIHNpemVv
ZihKU1ZhbHVlKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAg
ICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBvZmZzZXRJbkJ1dHRlcmZseShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KG5ld1N0cnVjdHVyZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3Jl
MzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRz
KSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgICAgICBh
bGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0
YXRlKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6IHsKKyAgICAgICAgaml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihmYWxzZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkp
OworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjYXNlIERlbGV0ZU1pc3M6IHsKKyAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMih0cnVlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRl
LnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBB
cnJheUxlbmd0aDogewogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAppbmRleCA3OWQzMTAxNTVl
OTNhNTQ1M2QyODYxYzQzMjI3YmEzYmFjMTlmMjc3Li5jNmM4MTg0NDYzNDFkMGE0M2M2N2FlYzkz
MTgzMzM3NDc4N2QxODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmgKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6
IHVpbnQ4X3QgewogICAgICAgICBMb2FkLAogICAgICAgICBUcmFuc2l0aW9uLAorICAgICAgICBE
ZWxldGUsCisgICAgICAgIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwKKyAgICAgICAgRGVsZXRlTWlz
cywKICAgICAgICAgUmVwbGFjZSwKICAgICAgICAgTWlzcywKICAgICAgICAgR2V0R2V0dGVyLApA
QCAtMTQ2LDggKzE0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRy
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCgpLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0
cik7CiAKICAgICAvLyBUaGlzIGNyZWF0ZSBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgZm9yIHRyYW5z
aXRpb25zLgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZN
JiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogICAgIAogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZN
JiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIApAQCAtMTU3LDcgKzE2Myw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbikKKyAg
ICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCiAgICAg
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKTsKICAgICAgICAgcmV0dXJu
IG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAgLTE2NSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAK
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFRyYW5zaXRpb24pOworICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5z
aXRpb24gfHwgbV90eXBlID09IERlbGV0ZSk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5n
ZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDEzMjQwOWMwYTQ1MTBiZGZhOGVjZTMzYjc0MzQ3
MTYwMmQ3YjBlNzkuLmIxNjZjMzBjMThhNTIzYTc2MjVmMzlhZjZiNzg5NTA2N2FhNWYwY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcApAQCAtNzk1LDYgKzc5NSwxNSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2Fz
ZTo6VHJhbnNpdGlvbjoKICAgICAgICAgb3V0LnByaW50KCJUcmFuc2l0aW9uIik7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZToKKyAgICAgICAgb3V0LnByaW50
KCJEZWxldGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRl
Tm9uQ29uZmlndXJhYmxlOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU5vbkNvbmZpZ3VyYWJs
ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzOgor
ICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU1pc3MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgQWNjZXNzQ2FzZTo6UmVwbGFjZToKICAgICAgICAgb3V0LnByaW50KCJSZXBsYWNlIik7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDYxNzg3MzdmOWY4YTljZDBiNmRkYWQ1N2YxY2Yx
MmVmZTRmY2E3MDUuLjk2YTFiYWVjYmU0Y2JiYjc2ZGJkZWRhODA1NjVhMmM1OTg2NTUyMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcApAQCAtMjc2LDYgKzI3NiwxMiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6
CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ss
ICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzVHlwZTo6RGVsZXRlQnlWYWw6CisgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhp
cywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAK
ICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaAppbmRleCBkZGNlODVlYzAyNTU1NzZjOWUzNDUxZjY0NzM2ZDEyYzM4
OTQyODAzLi5iNTc1YmRkMjE2MTljMmRmZTRmMTgyZmFlZDkwZjI2OGU5ZTI2MTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApA
QCAtNTUsNyArNTUsOSBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdl
dEJ5VmFsLAogICAgIFB1dCwKICAgICBJbiwKLSAgICBJbnN0YW5jZU9mCisgICAgSW5zdGFuY2VP
ZiwKKyAgICBEZWxldGVCeUlELAorICAgIERlbGV0ZUJ5VmFsCiB9OwogCiBlbnVtIGNsYXNzIENh
Y2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJTY29wZS5jcHAKaW5kZXggMjZlMjgyOTM5ZTlhY2E4ODY1YzIyMTc3M2MyYTQxZTAy
ODA5NGRkYS4uNDhiNWI4NmZhNGI5ZTg2NWVhNDhkYzk5YTQ5M2JkOTQ4ZDA3NGYzZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAt
MTI5LDE0ICsxMjksMTQgQEAgYm9vbCBEZWJ1Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+cHV0KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRGVi
dWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlclNj
b3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4o
Y2VsbCk7CiAgICAgQVNTRVJUKHNjb3BlLT5pc1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUtPmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZv
aWQgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAppbmRleCBmZjRjZTFiMWRhNGI1NzkwZGU4YWQ5ODhhNzFm
NjAyY2RmMjYxNjc0Li40MzI3YzFmMDJjNjkyNzg0NTA4ZTBhOWExYTIxNDk3NzVlZGQ4MDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNv
bnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlM2UyMDhkMmRhMWNkNzM5YmZh
Y2M4YzM0YzU0OTdjYzU2MmRiOTM2Li4zODcxNTkxNzg5MDMxMjBhNjEyNjQ1ZTRhMjM0MzUxM2Jh
NWRiZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cApAQCAtMjQ2LDYgKzI0Niw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMs
IGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBsaW5r
QnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBsaW5rQnVmZmVy
KTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAg
ICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ4ODA4NzRjMjg1YWI3ZDQ0N2ViODkz
YTZlOGI0YmJmMDEwNzMxZDQuLjJmYjZhZDhmNjJmOTVhMjZlNmNkYjgyNmFhNmQxY2Q2N2YxOTQ3
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE5
MSw3ICsxOTEsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9wdXRCeUlkcy5hcHBlbmQo
SW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsK
ICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFkZERlbEJ5SWQoY29uc3QgSklURGVsQnlJZEdlbmVy
YXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCisgICAgeworICAgICAgICBt
X2RlbEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4o
Z2VuLCBzbG93UGF0aCkpOworICAgIH0KKworICAgIHZvaWQgYWRkRGVsQnlWYWwoY29uc3QgSklU
RGVsQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQorICAg
IHsKKyAgICAgICAgbV9kZWxCeVZhbHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxC
eVZhbEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwogICAgIHZvaWQgYWRkSW5z
dGFuY2VPZihjb25zdCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJh
dG9yKiBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKElubGlu
ZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CkBA
IC0zNDgsNiArMzU4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVy
PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiwgND4gbV9n
ZXRCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJh
dG9yPiwgND4gbV9wdXRCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERl
bEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdy
YXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5VmFsczsKICAgICBWZWN0b3I8
SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKICAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBt
X2luc3RhbmNlT2ZzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NjQyYjE2MzU2ZjkwZTljMzg2MDJlYmM1N2ZkOWUwNGEwZjQ1YjUyOC4uODUzZGM4OTJhYWI1MjYw
NGJkODJkMmNkMzMyM2Y1MGVkNmE4MWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExNDgsMzggKzExNDgsNzIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIGF1dG8qIHByb3BlcnR5ID0gaWRlbnRpZmllclVJ
RChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOwogCi0gICAgdmFsdWUudXNlKCk7CisgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7Cisg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAot
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eUlkLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGlk
ZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGlm
ICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpKQorICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpKTsK
IAotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
CisgICAgICAgIHZhbHVlUmVncywgcmVzdWx0R1BSKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSwKKyAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCB2YWx1ZVJlZ3MsIHByb3BlcnR5KTsKKworICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93
UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkp
OworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIHsKICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVl
T3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCiAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJl
Z3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAKLSAgICBiYXNlLnVzZSgpOwotICAgIGtleS51c2UoKTsKKyAgICBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25I
YW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAg
ICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCi0g
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywga2V5
UmVncyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0Nhc2VzOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbChiYXNlUmVncykpOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMigpKS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CiAKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICBKSVRE
ZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIGtleVJlZ3Ms
IHJlc3VsdEdQUik7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBrZXlSZWdz
KTsKKworICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0ZDM0MjdiYzgyZThjOWIyNDdhYzg3MWEw
MjAwMDFiYjIzODI5ZjI2Li4wNjY3NDA3ODVkNWJmYmY5MzBjMzI1ODBkNGU5ZmFjMGYyZWRiODk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC01MTQ0LDIwICs1MTQ0LDEwOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+
YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
RGVsQnlLaW5kIGtpbmQ+CisgICAgdm9pZCBjb21waWxlRGVsQnkoKQorICAgIHsKKyAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50OworICAgICAgICBhdXRvIGJhc2UgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkOwor
ICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAg
ICAgICAgIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKV07CisgICAgICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7
CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShiYXNlLCBW
YWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgYXV0byBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFsdWVSZXA6OlNvbWVM
YXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rl
cihzdWJzY3JpcHQpOworICAgICAgICB9CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25v
dENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworCisgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQorICAg
ICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworCisg
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBub2RlID0g
bV9ub2RlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRk
VW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgICAg
ICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQorICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcykt
Pmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhw
YXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1z
WzBdLmdwcigpOworCisgICAgICAgICAgICAgICAgY29uc3RleHByIGF1dG8gb3B0aW1pemF0aW9u
RnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtp
bmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1
YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIo
KSk7CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBn
ZW5lcmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQg
PT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBC
b3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5HUFIpOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIHJl
dHVybkdQUik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisK
KyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAg
ICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlua0J1
ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3Ra
ZXJvNjQocGF0Y2hwb2ludCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5SWQo
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZhbHVl
IGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBhdXRvIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAg
ICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVs
ZXRlQnlJZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgbV9vdXQuY29uc3RJbnRQ
dHIodWlkKSkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsPigpOwog
ICAgIH0KIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKCkKICAgICB7Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZt
Q2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWwsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6
Tm9ybWFsQnlWYWw+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UHVzaCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRlNDQ0
YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1
NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAg
bWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0
Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2VsZlBh
dGNoKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhEZWxC
eVJlcGxhY2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2OWNkMWI3
ODc0NGU4Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAg
ICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1fZGVs
QnlWYWxJbmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VP
ZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxs
TGlua0luZm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9p
ZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9k
ZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3VsdCBK
SVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRjaEJ1
ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRj
aEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZm
ZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsK
KyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFs
aXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1
NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9l
bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5
SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1dEJ5
SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CisgICAg
ICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBWZWN0
b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklU
SW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFs
Q29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8
Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYgKzkz
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhp
c0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBV
SU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsK
KyAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAg
dW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBt
X2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJ
bnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlu
a0luZm9JbmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2
ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLjhlZGFmOTkxM2JjOTVjYTQyYzU4ZTZiZWRlZDYwY2U5
MjczMzAwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY2IEBAIFZfSklUT3BlcmF0aW9u
X0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlWYWxH
ZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHBy
b3BlcnR5LCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQor
eworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAgIEFT
U0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJhc2VH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BS
ID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVz
dWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9
IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIo
KTsKKyNlbmRpZgorfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwor
ICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBq
aXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCisg
ICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQoreworICAgIEFT
U0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0
UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1Zh
bHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVP
cmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3Rl
cnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKKyAg
ICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJbmZvLT5i
YXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0
eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFz
ZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisjZW5k
aWYKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xv
d1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3Rh
cnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OworfQorCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaAppbmRleCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li43
NTUwODZhOGQ5YWJlMWJmMTAxNGM0ZTU5ZDE2ZWNiNjc3NjQxNzI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNDIs
NiArMTQyLDU2IEBAIHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitjbGFz
cyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAg
IEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigK
KyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0
aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9q
dW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExpbmtCdWZmZXImIGZh
c3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAg
IHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAg
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKworY2xhc3MgSklURGVsQnlJZEdlbmVyYXRv
ciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5SWRHZW5lcmF0b3Io
KSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93
UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExp
bmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVm
ZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitw
cml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogY2xhc3MgSklUSW5C
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJ
VEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0OGRjNjMz
NC4uN2JkZjFmNzMyYmY0ZTA1ZDliODU2OTZlZjQ2ODQ3ZjNiNTYxMDc2YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTQyLDcgKzIxNDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQogICAg
IAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1MCwzMSArMjE1MCw1MSBA
QCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBi
b29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCkpOwor
ICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlk
KSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlm
ICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVs
ZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi0KLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0
dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmco
dm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAg
ICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1
ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3Jt
YWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpOworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwg
dWlkKTsKIH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxOTAsNyArMjIxMCw3IEBAIHN0YXRpYyBib29s
IGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBWTSYKICAgICBlbHNlIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IGtl
eS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHkp
OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQpAQCAtMjE5OCwy
MCArMjIxOCw0MiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgcmV0dXJuIGNvdWxkRGVs
ZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKSkpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVu
dGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAg
aWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
KyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRj
aERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXkp
CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNs
b3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0
aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3Bl
Q2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVm
ZjgyYTMwMGMuLjYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsMTAgKzI1MSwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVm
YXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRF
Uk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVu
dFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmpl
Y3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFt
ZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYWJmNTJmNzEz
ZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJmNi4uNWRjMGIxMTFlMTk4ZTk0MDRhMzc2MGUw
MmRmODc1M2UzMDg4MGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICszODcsMzkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CisgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBKSVREZWxCeUlk
R2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDApOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRGVsQnlJZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpLmltcGwoKTsKKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJ
ZHNbbV9kZWxCeUlkSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIG1fY29kZUJsb2NrLT5pZGVudGlm
aWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkgKzQyOCw0MiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDEsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJl
Z1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsK
KyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDApOworICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1
ZVJlZ3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDAp
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRjOGJk
YWVlZjE0Yy4uYjBiMjFjYmVlOThlYzMxZGZhYzljNDk2MzU0NGFiZjk5ZTQzN2I0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC0xMjMsNyArMTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9w
ZXJ0eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eUlkR2VuZXJpYywgcmVnVDAsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVy
dHkpLmltcGwoKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDAsIHJl
Z1QxKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1Qw
LCByZWdUMSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzMsOSArMTM1LDE0IEBAIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2Fk
MihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QzLCByZWdUMikpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5l
cmljLCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDAsIHJlZ1QxKSk7CisgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwLCByZWdUMSkpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKSB7IH0KK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikg
eyB9CisKIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5VmFsPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
aW5kZXggOTE4MjA0MTU1NGJkYzc2YzE5MWNiMTM4NWQxM2E5YzgxZmZkNDVlYi4uYmU3NTAxZWYy
MmMxODMzZTRmYjdmMDZhOWFiZTNhYWIwNzZlZGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9m
ZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShw
cm90b3R5cGVBY2Nlc3NDaGFpbikpOworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0
cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2Fj
aGVhYmxlQ3VzdG9tKCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAg
ICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpKSB7CkBAIC03MzQsNiArNzM0LDcyIEBAIHZv
aWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJp
Y1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZURlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZh
bHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1
bHQ7CisKKyAgICB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29k
ZUJsb2NrLT5tX2xvY2ssIGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKworICAgICAgICBpZiAo
Zm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOworCisgICAgICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpIHx8ICFvbGRTdHJ1Y3R1
cmUgfHwgIW9sZFN0cnVjdHVyZS0+aXNPYmplY3QoKSB8fCAhb2xkU3RydWN0dXJlLT5wcm9wZXJ0
eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKKworICAgICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVEZWxldGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBuZXdDYXNlOworCisgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKKyAgICAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5l
d09mZnNldCk7CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUt
PnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAg
ICAgQVNTRVJUKG5ld09mZnNldCA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAg
IEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlv
bigpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAg
ICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQobmV3T2Zmc2V0KSk7CisgICAgICAgICAgICBu
ZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKHZtLCBjb2RlQmxvY2ssIENhY2hlYWJs
ZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0
cnVjdHVyZSk7CisgICAgICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
IHsKKyAgICAgICAgICAgIGlmIChzbG90LmlzTm9uY29uZmlndXJhYmxlKCkpCisgICAgICAgICAg
ICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3ND
YXNlOjpEZWxldGVOb25Db25maWd1cmFibGUsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlO
YW1lKSwgaW52YWxpZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUo
dm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzcywgQ2FjaGVhYmxlSWRlbnRpZmll
cihwcm9wZXJ0eU5hbWUpLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0
cik7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNl
KGxvY2tlciwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOworCisg
ICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgeworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBwcm9wZXJ0
eU5hbWUpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1
YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJu
IHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0
ZXI7Cit9CisKK3ZvaWQgcmVwYXRjaERlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUg
YmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQor
eworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAg
IGlmICh0cnlDYWNoZURlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFs
dWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVw
T25DYWNoZSkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5l
cmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIHByb3Bl
cnR5TmFtZSkpOworICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAg
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOwor
ICAgIH0KK30KKwogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09i
amVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3VuZCwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkBA
IC0xMzkxLDYgKzE0NTcsMTUgQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9
CiAKK3ZvaWQgcmVzZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBpZiAoa2luZCA9PSBEZWxCeUtp
bmQ6Ok5vcm1hbCkKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZSk7CisgICAgZWxzZQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRp
bWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCiBzdGF0aWMgdm9pZCByZXNldFBhdGNo
YWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDZm
MGYyNjQxMWVjZGVhMTkyYjcwNjIxMGU4YTk5NDRiYjRmOWZlMzkuLmMxZDk5NTlhZGFmZDM2NTc2
MmU4OTE3OWFiM2MwZWVkNjZlNTg3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CkBAIC00MSw5ICs0MSwxNSBAQCBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CiAgICAgRGlyZWN0CiB9
OwogCitlbnVtIGNsYXNzIERlbEJ5S2luZCB7CisgICAgTm9ybWFsLAorICAgIE5vcm1hbEJ5VmFs
Cit9OworCiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJs
b2NrKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwog
dm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIEdldEJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1
dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0
Y2hEZWxCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYs
IEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIERlbEJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25z
dCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFu
Y2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUg
cHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5r
Rm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3Qq
IGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTUzLDYg
KzU5LDcgQEAgdm9pZCB1bmxpbmtGb3IoVk0mLCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1Bv
bHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYs
IENhbGxWYXJpYW50KTsKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwordm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2
b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxs
PEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxl
ZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCmluZGV4IDIyNTRmY2M0Mjk2MTdjZTgzOTdkMjRlNTUwZTFhY2VjNjdiNjE0NDMuLmZh
Y2E3YmY0ZTE3OGQ0MjVmZmJlZmZlOTU0ZThmMzFlYjAwMjA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtOTI1LDcgKzkyNSw4IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpCiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGJvb2wgY291bGREZWxldGUg
PSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIGNvdWxkRGVsZXRlID0g
YmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSwg
c2xvdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKCFjb3VsZERlbGV0
ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsK
QEAgLTExMDgsNyArMTEwOSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxf
YnlfdmFsKQogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBw
cm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAppbmRleCBmZmIz
ZWI5ZDAwNWNmNmZkMDhmZmQyYmI4OGI5ZDU4N2JhZWQwZmY2Li4xMDdiNWQ2MDcyMDM3MDUxZjZh
N2MxZTljYjBjMTVmMjY1ODk3OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTQyLDYgKzQy
LDcgQEAgaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIAogaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6
OkNhY2hlYWJsZUlkZW50aWZpZXIoSlNDZWxsKiBpZGVudGlmaWVyKQogeworICAgIEFTU0VSVChp
c0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKGlkZW50aWZpZXIpKTsKICAgICBzZXRDZWxsQml0cyhp
ZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAppbmRleCBmZTZjNmI3ZDg0YzQ3ZWRlZTExYWFjMTFmNjQ4NGE3MmQ0MTdiYzQ2Li43YTU5Yjhm
ZGIwYzIyY2NiYmQyOGQ4MDMxZGE4YTE3ZWUwNTM3MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFi
bGUgewogICAgIHVzaW5nIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICBQdXRCeUluZGV4RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZ
KHB1dEJ5SW5kZXgpOwogCi0gICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJv
b2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICB1c2lu
ZyBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIERlbGV0ZVBy
b3BlcnR5RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRlbGV0ZVByb3BlcnR5KTsKIAog
ICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAppbmRleCA5NmEzNjM1ZTY4MjczOTNl
ZTgzNmQ4MDQ3NzcyNGEyNWQ1NDZjMjYxLi5mNjk5OWU3MzQ4NGUyYWJkODgxNDU0ZjExNDgzMTBj
MDJkNGYyYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YQogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwg
dmFsdWUsIHNsb3QpOwogfQogCi1ib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
aWRlbnQpCitib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpAQCAtMjI5LDcgKzIyOSw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAg
ICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZ2xvYmFsT2Jq
ZWN0KTsKICAgICAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFy
Z3VtZW50czo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCmluZGV4IGZkM2EyN2JmNzM1NTRkNWVl
NGE2ZTMxZDBiYTBjYWQxNTc2MDVmZjUuLjAwYzUzNDc1NjA1YTczYjJiM2ViMzhkM2NmODEzMjg4
MzRmZjFiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCiAgICAgYm9v
bCBzcGVjaWFsc01hdGVyaWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5k
ZXggMGUyYmMzYTI3MTljMmE5MzUzZTdkNzUyMWE4NzliZDEyZDc0MDA2OS4uMWRlODIzOTUwOWUw
YzhkN2E1NmEzMjQxNGZmZThhNzRhOWI3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC05ODUsNyArOTg1LDggQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgICAgIENIRUNLX0VYQ0VQVElP
TigpOwogICAgICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVs
ZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90
KTsKICAgICB9CiAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBh
ZDZmNmI0ODAwZWY1Nzg1NjFjYWVkYzlkZGJiYzgyZjI1MzJlNjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApAQCAt
MCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRl
ICJQcm9wZXJ0eVNsb3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBEZWxldGVQ
cm9wZXJ0eVNsb3QgeworcHVibGljOgorICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hl
YWJsZSwgRGVsZXRlSGl0LCBDb25maWd1cmFibGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUg
fTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCgpCisgICAgICAgIDogbV9vZmZzZXQoaW52YWxp
ZE9mZnNldCkKKyAgICAgICAgLCBtX2NhY2hlYWJpbGl0eShDYWNoaW5nQWxsb3dlZCkKKyAgICAg
ICAgLCBtX3R5cGUoVW5jYWNoZWFibGUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0Q29u
ZmlndXJhYmxlTWlzcygpCisgICAgeworICAgICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxl
dGVNaXNzOworICAgIH0KKworICAgIHZvaWQgc2V0Tm9uY29uZmlndXJhYmxlKCkKKyAgICB7Cisg
ICAgICAgIG1fdHlwZSA9IE5vbmNvbmZpZ3VyYWJsZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhp
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgeworICAgICAgICBtX3R5cGUgPSBEZWxldGVI
aXQ7CisgICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKworICAgIGJvb2wgaXNDYWNo
ZWFibGVEZWxldGUoKSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBV
bmNhY2hlYWJsZTsgfQorICAgIGJvb2wgaXNEZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gRGVsZXRlSGl0OyB9CisgICAgYm9vbCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsgfQorICAgIGJv
b2wgaXNOb25jb25maWd1cmFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmln
dXJhYmxlOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNh
Y2hpbmcoKQorICAgIHsKKyAgICAgICAgbV9jYWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dl
ZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVhYmlsaXR5ID09IENhY2hpbmdBbGxvd2VkOyB9CisKKyAgICBQcm9wZXJ0eU9m
ZnNldCBtX29mZnNldDsKKyAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OworICAg
IFR5cGUgbV90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGYxODIxZDU1
NmEzZDQwNDQ5MzY3NWVhZTI1ZmEyZTQ2NjczZWM0M2EuLjY4NWM3YWNiYzExYzYyZDIzMzc3ZDMy
YzRkZTlhMjBiNjU4NzhhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRXJyb3JDb25z
dHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVycm9yQ29uc3RydWN0b3I6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9yQ29uc3RydWN0b3IqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpAQCAtOTUsNyArOTUs
NyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0u
cHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0KQogICAgICAgICB0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CiAKLSAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmlu
ZGV4IDkzZDUyNzE0ODZmNjZmZGU3NTNlNDlhNDAxNmYxNjgzOGU5NzU3MjEuLjlhNWE0NjMyMWIz
ZGJiNzY0YzJhMWI1MjFkOTI2OGY4ZDE0MzUzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBFcnJvclByb3RvdHlwZSopOwogCiAg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEVycm9yQ29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggZmQ0OGJiZjM0YzMwNDMwZDJlNzBkZTU3NDk4ZTliNTFl
NmFjMjQ0ZC4uMWQ1MGNkMTc0ZmM0N2Q5MjIxNzE4OGUzMjVmZjU3YWU4ZDE1YjgxYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5
NywxMiArMjk3LDEyIEBAIGJvb2wgRXJyb3JJbnN0YW5jZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCi1ib29sIEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgRXJyb3JJbnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIEVycm9ySW5zdGFuY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNl
bGwpOwogICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplRXJyb3JJbmZvSWZOZWVkZWQodm0sIHBy
b3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuaAppbmRleCBmMWZhYzU5NjgyZDllMDI2NTA4Y2I0ZmY4YzliMjY3YjRlZTc2
ZTg3Li40MDA2MDhkMDhhODM0Y2QzMWU2MTJlNzNhYjUzMWNiMGEzY2ExMWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC05OSw3ICs5OSw3
IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9p
ZCBjb21wdXRlRXJyb3JJbmZvKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAppbmRleCBjZTEwZjdmZTQ4NzNlNGE0N2JlMTQxZTI1
NTY5YWQ2NDhhZmY5ZDI4Li40NzEyMTY3MzAzNjQ4MjhmZTI3NzBlMjM0ODY5YWNlNzA5MDhkMWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1l
bnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50
cy5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMx
YmI0MzBmNmQ1OGIxZDViMTE1ZGE1MTNjNWJjYzBiZjUzLi5hNWE5ZWNiMzIyYTIwZGE4ZmUyNDMz
ZmZkNTQ3YTc4YWZjNjAyY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAg
Ym9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm8KICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlj
a2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1
bHQgPSBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNs
b3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+
CkBAIC0xNTgsNyArMTYwLDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVHlwZT4KLWJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgaWRlbnQpCitib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxUeXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpAQCAtMTc1LDcgKzE3Nyw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKE9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQogICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbmRleCkpOwogCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGlkZW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IDAzNDg3ZjYxZTBmMmZjNzUxYmE3MDNiNzBjYTM2
ZDAyMjIxNjM0ZGUuLjYwMWYxZTQ5ZjE1Y2Q1MDFhMGUwYTc1ZWUyODUwNmYzMmIwZGIzYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xMjcs
NyArMTI3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBzZXRQcm90
b3R5cGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7
IH0KIAogcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA2ZDA3NTkxNzExZWVk
YmMyOGUwZTRkYTc4NDk4MjJhYjhkNjZmNWQxLi5iY2UzNjU1YTMxOTJlYTI5MGZlN2YwNDA4MjRh
Mzg4NmY2YjA0ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cApAQCAtMzA2LDcgKzMwNiw3IEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJh
eSo+KGNlbGwpOwpAQCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzRm9yUVNvcnQoY29uc3Qgdm9pZCog
YSwgY29uc3Qgdm9pZCogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApp
bmRleCAzMTE2NWI1ZmY0OTI1NGNjMWE2YzQ3OTAyYjc5MTBhYzRhN2Q5YmZmLi5jZGMzOWI1MTJk
N2VlM2ExNWNmMWFlYzJlMGEyZDkzZDlhYWFkMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMzZDFi
YjYwZjhiNTMzYjE4NjA1OGVlYWQ4MWI3NS4uNTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFi
MWVkYzRhNzQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVs
cGVyczsKK2NsYXNzIERlbGV0ZVByb3BlcnR5U2xvdDsKIGNsYXNzIEpTQmlnSW50OwogY2xhc3Mg
Q2FsbEZyYW1lOwogY2xhc3MgSlNDZWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKaW5kZXggMjcxMzUyYjIxNzQ3MDM1NmRmNDAzZmRkOWNkZTYwZGVmODg4MTYwNy4u
MGU2N2Y4NjY3NmQ1ODY1YWE4OGYwNGYzNWFkYTc0MzIxZTAyY2YwOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBib29sIEpT
Q2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIGlkZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmll
cikKK2Jvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVj
dChnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9i
YWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXIpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxP
YmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlk
ZW50aWZpZXIsIHNsb3QpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNjY1ZDA4
ODljZjQ0NjFjM2FiMGEyYWY0YjA3YzZhNThjOTA0MjFjNC4uMDYyZTgzZGIzOWFiMzRhNmVmNGZk
YTM2ZmZhNTBlNGMxMTFkOTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRl
eChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgYm9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDE0NmE5MTMyZDQ3MzUyNDJjMTA2ZTY1NTY0
Nzc4ZTE3ZWQ3YmFiOGMuLjFiMjU1MjNjOThmYmIwOWUzN2Y4YTQ3NDMxOWJmNzZjMzJkOGE4Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0x
NTIsNyArMTUyLDcgQEAgYm9vbCBKU0RhdGFWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKIH0KIAog
Ym9vbCBKU0RhdGFWaWV3OjpkZWxldGVQcm9wZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAg
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTRGF0YVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNEYXRhVmlldyo+KGNlbGwpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgSlNEYXRhVmlldzo6
ZGVsZXRlUHJvcGVydHkoCiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT5ieXRlT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmFz
ZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNEYXRhVmlldzo6Z2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oCmluZGV4IDg2NDEwZTYxYWQ3ZTkxZDgyYTY3ZTk3ZWZiYjRmMzJmMWJjMTJlNzguLjk4
YThjYzhiMzk4ZmZkZDdhMWM5NGJlNjU3ZjY1NWU2Y2M3YjlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBw
dXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAppbmRleCBjZDZlYzE1ZWUwOWE5ZjM0Y2FmMmYyOTQwMGZjOTZkOWE1OWQ0ZGJj
Li40MzQ2YWFhZWViNmE4ZWY1ZjUzMjg1ZTFkNWFiNmY3NzIxMWE5NGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBA
IGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBC
YXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KSk7CiB9CiAKLWJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjE3LDcgKzYxNyw3
IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICB9CiAgICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAog
Ym9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYWRkZGUyYWMw
M2E0MTBjNzA4YTc5MzRiNWE1ZDA2ODljYTFmZmFjZC4uMThhYjQ3NTQzZmQ3ODI5NzhhZmVhOTcy
YzhjOWFjNmQ4NzAyY2JmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaApAQCAtMTc5LDcgKzE3OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBmMDhmODUyNDY5YmVmZDZjNWFkNDNh
ZjJhNTAwOTJiZWVmZTJiMzlhLi4zYjdiYmRlNzY1Y2UxYzM1NjU1MGVjZDU4Yjc3ZmVkOWQ2MTA2
ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTMwNSw3ICszMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDBjYWZiZDI3NmNmNzRkMGM4NWVmOGJl
N2RiZTQwM2QzYzc2NGIzNDIuLjU4ZmJiNTc1NjJiNzEwMDc5ZTY1MTQwZjdlMDllNzA4MDQ4ZmEz
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00MzgsNyArNDM4LDcgQEAgYm9v
bCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVmaW5lT3duUHJvcGVydHkoCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTQ1MCw3ICs0NTAsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
OjpkZWxldGVQcm9wZXJ0eSgKICAgICBpZiAocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFz
ZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtNDg0LDcgKzQ4NCw4
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5
QnlJbmRleCgKICAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7Ci0gICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2Vs
bCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20o
dm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9y
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IGIzYzk4MGE0NjYyYWVlZWExMjQwYTU2NmM1ZDRhMThhOTI4NzFmN2UuLjBmODkwMzAw
YmViNzg0YzcxNzlhODczZmFjZmNiMmE4NGQwYzllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzMTQsNyArMTMxNCw4IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmFkZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IElkZW50aWZpZXImCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICBtZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBhZGRHbG9i
YWxWYXIocHJvcGVydHlOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGYzNDVjNTAyN2FiYTk0
MDg0NDcxZTMxYjdiOGQ3ZWUyYTJmODg3MTMuLjk3NGI5MmI1NGUxYTMzODMxNjlkZWZhYjJhOWE3
ZGRlNjQ2ZGEwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTEyNywxMyArMTI3LDEzIEBAIGJvb2wgSlNM
ZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0
eShnbG9iYWxPYmplY3QtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1i
b29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiti
b29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCBkMDEzYjUxZWZhMjk3ZWJmMDNjYTQy
NDAwMTdhNjdhY2MxM2I5Mzk3Li4wNWU0ZTY1YzJkZDQ5M2ZmN2E0ZTMxYTQ4MjZiNzBjMjUwYzU3
OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAppbmRleCBm
ZWI1NTEwODc0ODAzOTBkMzQwOWU2Y2FhOTQ4MDBiNzI5ZjdjNzNkLi44NThhOTQyZmU3MzU1Y2Y4
YzExODA1YThkMDVlMDY1M2Y4YTIxODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBA
IGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBC
YXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KSk7CiB9CiAKLWJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQorYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0g
QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaAppbmRleCBkYWVhYjY2MmZjMDRkYWJkZDI2ZDE0
MTQ1ZjM2ZWIxN2UyNzkyYTc5Li4wMTMwZjg3ZmI5OGJiMmE4MmRhYTI5YTU5NjM1MmU3MTliYjdl
ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVu
dmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgog
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9s
VGFibGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAppbmRleCAyYmRiMTMwNWViMGM0YmU5NjA4MDY1YmQz
NDg1OWM3YWYxNDhiMmExLi4xZmM2YTI2NWI4Y2E2NWFkMTE5MDJmNWQwMTNlZDY1ZDg2NTYxODgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC0xOTksMTIgKzE5OSwxMiBAQCBib29sIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAog
ICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAKICAgICByZXR1cm4gIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5h
bWUudWlkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKaW5kZXggOGVlZjYyMWUzYjg0ZmE2NjI4Y2ZhMmY4
MTRkYTYyOGYwNjc4N2QxZC4uODExMzY0ZGQxN2ExM2U3ZWZiZmNmMWM5ZTI4NjMwZTI0MmE3MTI0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAKaW5kZXggZDBkMTcyMWNmMWRlYjgzM2Y5Y2IwMWUyYmYzMjFiMDZlZDQxOTZjOS4uZWRh
MmQ2MjM1MDk5ZWQzMDFiYjBhZTExNDUxNGYzMmUxNTRjYjYyNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTc1OSw5ICs3NTksMTAgQEAgTkVW
RVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAg
ICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogICAgICAgICAgICAgICAg
IEpTVmFsdWUgZmlsdGVyZWRWYWx1ZSA9IGNhbGxSZXZpdmVyKG9iamVjdCwganNTdHJpbmcodm0s
IHByb3Auc3RyaW5nKCkpLCBvdXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5p
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9wLCBzbG90KTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChv
YmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9wLCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAg
ICAgIGluZGV4U3RhY2subGFzdCgpKys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKaW5kZXggYWNkMjlkZWQ4MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFk
Zi4uMzQ3MzJlMWMyYmYzNmZlNWQ3OTc3YzFiZGUyNWNkYWVkNjNhYzliMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTk3Miw3ICsxOTcyLDcgQEAg
Ym9vbCBKU09iamVjdDo6aGFzUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIHByb3BlcnQKIH0KIAogLy8gRUNNQSA4LjYuMi41Ci1ib29sIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE5OTksOCArMTk5OSwxMCBAQCBib29sIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcgogCiAgICAgYm9vbCBwcm9wZXJ0eUlzUHJlc2VudCA9IGlzVmFsaWRPZmZz
ZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogICAgIGlm
IChwcm9wZXJ0eUlzUHJlc2VudCkgewotICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlICYmIHZtLmRlbGV0ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSkKKyAgICAgICAgaWYgKGF0dHJp
YnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9wZXJ0
eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpIHsK
KyAgICAgICAgICAgIHNsb3Quc2V0Tm9uY29uZmlndXJhYmxlKCk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKIAog
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtMjAwOCw3
ICsyMDEwLDkgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgICAgIG9mZnNldCA9
IHN0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlO
YW1lLCBbXSAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQs
IFByb3BlcnR5T2Zmc2V0KSB7IH0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUs
IHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7Ci0gICAgICAg
ICAgICBpZiAodGhpc09iamVjdC0+bV9idXR0ZXJmbHkgJiYgIXN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkg
eworICAgICAgICAgICAgc2xvdC5zZXRIaXQob2Zmc2V0KTsKKyAgICAgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSkt
Pm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhp
c09iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJm
bHkpOwogICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0
ZXJmbHkodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCksIG51bGxwdHIpOwogICAgICAgICAg
ICAgICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+bWF4T2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldCk7CkBAIC0yMDIwLDcgKzIwMjQs
OCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogCiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCkKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9m
ZnNldCktPmNsZWFyKCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBzbG90LnNldENvbmZp
Z3VyYWJsZU1pc3MoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjAzMCw4ICsyMDM1LDEw
IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7
CiAgICAgCi0gICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCi0gICAgICAgIHJldHVybiB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSkpOworICAgIGlmIChpID4gTUFYX0FSUkFZ
X0lOREVYKSB7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkpLCBzbG90KTsKKyAgICB9CiAg
ICAgCiAgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgewogICAgIGNhc2Ug
QUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgpAQCAtMzYyNSw3ICszNjMyLDggQEAgYm9vbCB2YWxp
ZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KgogICAgIC8vIEEgZ2VuZXJpYyBkZXNjcmlwdG9yIGlzIHNpbXBseSBjaGFu
Z2luZyB0aGUgYXR0cmlidXRlcyBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQogICAgIGlmIChkZXNj
cmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuYXR0
cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYmIG9iamVjdCkgewotICAgICAgICAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRv
cihnbG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlw
dG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAg
ICAgIH0KQEAgLTM2NDEsNyArMzY0OSw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAg
ICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0
LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVz
T3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM2NjUsNyAr
MzY3NCw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFs
T2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRy
aWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM3
MTgsNyArMzcyOCw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKIAogICAgIEdldHRlclNldHRl
ciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
Z2V0dGVyLCBzZXR0ZXIpOwogCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgdW5zaWduZWQgYXR0cnMgPSBkZXNj
cmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KTsKICAgICBvYmplY3Qt
PnB1dERpcmVjdEFjY2Vzc29yKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0
ZXIsIGF0dHJzIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGVjNjMwMGVhOWI5NzJjZTliYTBmYWQ4MTgy
NTdhZmIyMGQ4MmEyZWQuLjY5M2JkYmI5OTdkNjQ0MjA4MDY1MWMyN2VkZGU3YjA4OGExNDE1NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRl
bGV0ZVByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmRleGlu
Z0hlYWRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKQEAgLTYyMyw3ICs2MjQsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCmluZGV4IDljNDc5MzRlNGEzZDkxOTlmYTk4NDJk
ZDA1MmNlODhkMjQxNTJhYzEuLmQwYmJjMmM1YTJkMjIxOTEyN2NkOTliMzAyMDkzMDg4NzIxMjNi
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC05MSwx
MCArOTEsMTAgQEAgYm9vbCBKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0
LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVmaW5lT3duUHJv
cGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0
KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTUHJveHk6OmlzRXh0ZW5zaWJsZShKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm94eS5oCmluZGV4IDM1MWU2NjhkMjU5MGQ5Yjk3YzhmNGJiYTJiZmZiNDAw
ZGIzZjIxMDkuLjViZTdiZjBkMmU1YThiMzJjNzk0YzBiMjU4OTU3OThmYzVmOWVmOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJv
dGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggNjMwZTFiNzhiYjIwNmU3YWY2MTdj
M2M2ODJjMzRmNWUxNzU1ZjVkNS4uMTI1ZjZjMzE1MGU5NmFlY2Q1Mzc0NzMxZmRhOGQ5YTdiYWZi
YTI0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQCB2b2lkIEpTU3ltYm9sVGFibGVP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKIH0KIAotYm9v
bCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTU3ltYm9sVGFibGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTU3ltYm9sVGFibGVPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNTeW1ib2xUYWJsZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICh0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApp
bmRleCBjN2MxZTIwYTY1NDc2YmM3MDY4ZWU2M2RlZDk4YjMzNWRmNzM2YjIxLi5iNTY4ZThmOTJh
OTgzZmI0Y2MyMDNhN2EwNjIxODBhZTRmZTU5MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKIAogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZT
eW1ib2xUYWJsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N5bWJvbFRhYmxlT2JqZWN0
LCBtX3N5bWJvbFRhYmxlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCmluZGV4IGI2NTIwMjIxYTgxNTk4ZmZlZjJhNWUxNGE4MGZkNGU1NGRjNjlj
NmUuLmIwN2UwYTAyOTMzMjgyNjEwMzZmNDExMDZlZWVlOWU1ZjkwYzY2NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTY4NSwxMiArNjg1
LDEyIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgUHJveHlPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUHJveHlP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0
Kj4oY2VsbCk7CiAgICAgYXV0byBwZXJmb3JtRGVmYXVsdERlbGV0ZSA9IFsmXSAoKSAtPiBib29s
IHsKICAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXNPYmplY3QtPnRhcmdldCgpOwotICAg
ICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxl
dGVQcm9wZXJ0eSh0YXJnZXQsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
cmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJv
cGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsK
ICAgICByZXR1cm4gdGhpc09iamVjdC0+cGVyZm9ybURlbGV0ZShnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgcGVyZm9ybURlZmF1bHREZWxldGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKaW5kZXggMTdjYTI5ZmIwYTNmZGRiYTcxZWI2ODI0OWMw
OTljYTI4YTNkNjJlZC4uZWU1YmQ5MDU4Y2ZhODE4YTQ2NzRhNTIyYmY2MGEyY2EwOWVhYzFiYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCkBAIC04NSw3
ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAg
c3RhdGljIGJvb2wgcHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBib29sIGlzRXh0ZW5zaWJsZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApp
bmRleCA0NmRjYjc1MDZkYTU3MGU0Yzk3ZWI5M2EwOWMwMDQ4MWE1MTUzODI3Li4xY2UxYjRjMzNh
YWYxYTQ1ZGYwNzI0MWY0ZGQzMGM2N2Q2N2EyZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTcxLDEyICs3MSwxMiBAQCBib29sIFJl
Z0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUmVnRXhw
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFJlZ0V4cE9iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+bGFzdEluZGV4KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgKaW5kZXggNWU5OWViMzhiNzEzYTk0MjYzNzE5MWE4OWYwYjdjOTZjNWZiYjcxNC4uODU3Y2Ey
ZTcyYWYzNDBlYWUzNjU3MDFkNTVjYTA3ZWQ4M2UwYjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAobV9y
ZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyB8IGxhc3RJbmRleElzTm90V3JpdGFi
bGVGbGFnKTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmlj
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCmluZGV4IDUxNTc1Mjc2NWVjYjAyZDE5
YzA0MGU5ZjIxYjk2NDlmNzUxN2I5NDcuLjUxZGJjNjdjNTdmODE1NjFmYTc4ZDE5NGVmYWYwNDlj
MDdhOGFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlj
dEV2YWxBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgU3RyaWN0RXZhbEFjdGl2
YXRpb246OlN0cmljdEV2YWxBY3RpdmF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTU2NvcGUKIHsKIH0KIAotYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFN0cmljdEV2
YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2
YXRpb24uaAppbmRleCBjZGNjMjFiN2U1ZmE3YjEwOTZiMjZkMTg3MDc0Y2JmMTdlYjgzYzI5Li4y
NDE1NDVlODE2OTM2MmJmNjkyMGE5MTliOGZlMGZkYmI3YTEwMDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc2NvcGU7CiAgICAgfQogCi0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ3N2I5Y2FmYjNmYTAwOGYw
ZjcwNTY4YjZkYjZmNGExNTE4NmQwNmUuLjQ4NmRkOTI3M2I3NTA1OGE0N2Y3NjlhM2ZjZjg3NzVl
NjkwY2QzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikp
OwogfQogCi1ib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7
CkBAIC0xMzQsNyArMTM0LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHIKICAgICBPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlu
ZGV4ICYmIHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgoaW5kZXgudmFs
dWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVu
c2lnbmVkIGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5o
CmluZGV4IGEzNDA1ODE3ODkzNGQ4NTI1MGFjYjNhM2U0ZGEzNTJmMjI3ODY1MjMuLjY5ZjI2Yjdk
NzI0YmJlZjczMjMzMTk0N2U4MGI3YzdmYWZjZjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGVkYTQ0NmJmYmUyNjdh
YjAxYjg1MmUxNWZkZTljOWMzMGU2ZjU4ZTYuLjUyMDVkZDczODFjYzMxNWM4MTE2MzU1MGFhMWRj
YTIxOWYzNWZjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcApAQCAtNTQwLDggKzU0MCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9w
ZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVy
cmVkKQogewotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9w
ZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAg
IHJldHVybiBuZXdTdHJ1Y3R1cmU7CiAKQEAgLTU0OSwxNiArNTQ4LDEzIEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJvCiAgICAgICAgIHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0
LCBkZWZlcnJlZCk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVm
ZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKQorU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFpc0Nv
bXBpbGF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxl
RGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAotICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcyk7Ci0KICAgICBjb25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7
CisgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGlu
Z1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5h
bWUudWlkKCksIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zm
c2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5z
aXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5z
aXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKTsKQEAgLTU2OCwxMSArNTY0LDI3IEBAIFN0cnVjdHVy
ZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmUoVk0mIHZtLCBTdHJ1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1N0cnVjdHVyZSogU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQpCit7CisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJv
cGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92
ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZz
ZXQmIG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIHN0cnVjdHVyZS0+
Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcyk7CisgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAgcmV0dXJuIHJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpyZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNl
dCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQog
ewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICBBU1NFUlQoIVN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCkpOworICAgIEFTU0VSVCghU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwogCiAgICAgaW50IHRyYW5zaXRpb25Db3VudCA9
IDA7CiAgICAgZm9yIChhdXRvKiBzID0gc3RydWN0dXJlOyBzICYmIHRyYW5zaXRpb25Db3VudCA8
PSBzX21heFRyYW5zaXRpb25MZW5ndGg7IHMgPSBzLT5wcmV2aW91c0lEKCkpCkBAIC0xMjAzLDcg
KzEyMTUsNyBAQCBSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFw
ZShKU1ZhbHVlIHZhbHVlLCBib29sJiBzYXdQb2x5UHJvdAogCiB2b2lkIFN0cnVjdHVyZTo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludChSYXdQb2ludGVyKHRo
aXMpLCAiOlsiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCB7Iik7CisgICAgb3V0LnByaW50
KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oaWQoKSkpLCAiLCAiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCB7Iik7CiAgICAgCiAg
ICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaAppbmRleCA1MmNkM2M3MWQ5MjBmMmY4YTk3YjQ2MGI5MGUwZWM3MGQ1ZDcx
MWFmLi5hZTIwYWU5NmJhNDAzMmY2YWExZjk0YmUzYzE3NGI3NjNjNzNmYWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2lu
Y2x1ZGUgIkRlbGV0ZVByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKQEAgLTE5MSw3ICsx
OTIsOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSog
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogcmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSog
PSBudWxscHRyKTsKLSAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
ID0gbnVsbHB0cik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlPZmZzZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3Rv
dHlwZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSwgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUmKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKFZNJiwgU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0
aW9uKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dEZpcmUqID0gbnVsbHB0cik7CkBAIC00NzcsNiArNDc5LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCopIGNvbnN0OworICAg
IGJvb2wgbWF5SGF2ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0Owog
ICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAKQEAgLTcxNiw2ICs3MTksNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogICAgIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0
cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFBy
b3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAKICAgICAvLyBUaGlzIHdp
bGwgcmV0dXJuIHRoZSBzdHJ1Y3R1cmUgdGhhdCBoYXMgYSB1c2FibGUgcHJvcGVydHkgdGFibGUs
IHRoYXQgcHJvcGVydHkgdGFibGUsCiAgICAgLy8gYW5kIHRoZSBsaXN0IG9mIHN0cnVjdHVyZXMg
dGhhdCB3ZSB2aXNpdGVkIGJlZm9yZSB3ZSBnb3QgdG8gaXQuIElmIGl0IHJldHVybnMgYQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4
IDBjZDk4ZDUyYWNjN2Y3MTRjMDViMTUzZTA4MTM5ZTQ5MWNkOGNmOGMuLmZlMjg1ODc0MDk0ZGFj
MzA3MDc1ZDJjNzYxZTIzMjJhNDYwMTc1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTIyNCwxMCArMjI0LDIzIEBAIGlubGlu
ZSBib29sIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKiBjZWxsKSBj
b25zdAogICAgIAogICAgIGlmICghaXNUeXBlZFZpZXcodHlwZWRBcnJheVR5cGVGb3JUeXBlKG1f
YmxvYi50eXBlKCkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJu
IGpzQ2FzdDxjb25zdCBKU0FycmF5QnVmZmVyVmlldyo+KGNlbGwpLT5tb2RlKCkgPT0gV2FzdGVm
dWxUeXBlZEFycmF5OwogfQogCitpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGlu
Z0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdAoreworICAgIG11c3RDaGVja0NlbGwg
PSBmYWxzZTsKKyAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghaXNUeXBlZFZpZXcodHlwZWRBcnJheVR5
cGVGb3JUeXBlKG1fYmxvYi50eXBlKCkpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bXVzdENoZWNrQ2VsbCA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGlubGluZSBib29s
IFN0cnVjdHVyZTo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gdHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKCkgJiYgZ2xvYmFsT2JqZWN0KCkgPT0gbGV4aWNhbEdsb2JhbE9iamVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBkZmYxZGYxOWFjODRh
OWVkMzY0YjU5N2Q1ZGQ5ZDA0MWJlYzQ3OGIzLi5kYWFhY2IxNGRmYzBhYzVhZjY0MTA4NGExODli
NjYyZTM1MjQ3Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwCkBAIC01NTYsNyArNTU2LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpCisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JikKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQpAQCAtMjgyOCw2ICsyODI4LDE1IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uR2V0Q29uY3VycmVudGx5KEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0YXJnZXQpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGZ1bmN0aW9uLT5hcmVOYW1lQW5kTGVuZ3RoT3JpZ2luYWwo
dm0pKSk7Cit9CisKIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewog
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CkBAIC0yOTU5LDYgKzI5NjgsOCBA
QCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBhZGRGdW5jdGlv
bih2bSwgImdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0IiwgSlNEb2xsYXJWTUhlbHBlcjo6ZnVu
Y3Rpb25HZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCwgMSk7CiAgICAgYWRkRnVuY3Rpb24odm0s
ICJnZXRDb25jdXJyZW50bHkiLCBmdW5jdGlvbkdldENvbmN1cnJlbnRseSwgMik7CiAKKyAgICBh
ZGRGdW5jdGlvbih2bSwgImhhc093bkxlbmd0aFByb3BlcnR5IiwgZnVuY3Rpb25IYXNPd25MZW5n
dGhQcm9wZXJ0eSwgMSk7CisKICAgICBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRD
b3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iamVjdERvaW5nU2lkZUVm
ZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIGpzTnVsbCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Nw
ZWN0cnVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCmluZGV4IGNiOGQzYmIwMzA1Mjg5
MTA4YThkODgxZjAwMjMxNDY4NDMyZmFjZjAuLjQ1ODViMTAwYWM3ZGE5NDgyMTRhZDhjOGZmYmIy
MTk0YWFjNzBlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKKysrIGIv
U291cmNlL1dURi93dGYvU3BlY3RydW0uaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCA9IDEpCiAgICAg
eworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGlmICghY291bnQpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5
cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwpAQCAtNTgsNiAr
NTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQ291bnRlclR5cGUgZ2V0KGNvbnN0IFQmIGtleSkg
Y29uc3QKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgY29u
c3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0g
bV9tYXAuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTY2LDggKzY4LDYgQEAgcHVi
bGljOgogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgp
OyB9CiAgICAgCi0gICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9
Ci0gICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KICAgICBjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIApAQCAt
OTgsNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb3JkZXJlZCBmcm9t
IGxvd2VzdC1jb3VudCB0byBoaWdoZXN0LWNvdW50LgogICAgIFZlY3RvcjxLZXlBbmRDb3VudD4g
YnVpbGRMaXN0KCkgY29uc3QKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsK
ICAgICAgICAgVmVjdG9yPEtleUFuZENvdW50PiBsaXN0OwogICAgICAgICBmb3IgKGNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBiZWdpbigpOyBpdGVyICE9IGVuZCgpOyArK2l0ZXIpCiAgICAgICAgICAg
ICBsaXN0LmFwcGVuZChLZXlBbmRDb3VudChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKSk7CkBAIC0x
MDYsMTcgKzEwNywyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KICAg
ICAKLSAgICB2b2lkIGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9CisgICAgdm9pZCBjbGVhcigp
CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fbWFwLmNs
ZWFyKCk7CisgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAg
dm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKKyAgICAgICAgTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX21hcC5yZW1vdmVJZihbJmZ1bmN0b3JdICh0
eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikg
ewogICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIua2V5LCBw
YWlyLnZhbHVlKSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCiBwcml2YXRlOgorICAg
IG11dGFibGUgTG9jayBtX2xvY2s7CiAgICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKaW5kZXggMjA1MDZmOGVjZmFjNjUzZTU1YWQwNDgxZGRhNTYwZjVmZDcyYTU0ZC4uZjdh
ODk1NTdlZDU2YWNlZjkxM2E0YTFmNmQ3MjQ2NzUyZTE0Y2Q1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzE0LDEzICszMTQs
MTMgQEAgYm9vbCBKU0RPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBCYXNlOjpwdXRCeUluZGV4
KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOwogfQogCi1ib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRE9NV2luZG93KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBk
ZWxldGluZyBwcm9wZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCiAgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDFlZjA2YzI2ZWUyNTJkZTY2OGMxZGVkZTkxYzVk
ZGY2YTBkZGZkZTUuLjg0YjlhMTNlMTllYTE4OWRmMzA3NDc2MDY1ZGQzNzNlNTFlNGY2NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBA
IC0xNjMsMTMgKzE2MywxMyBAQCBib29sIEpTTG9jYXRpb246OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdQogICAgIHJldHVybiBK
U09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFs
dWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNMb2Nh
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25s
eSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS53aW5kb3coKSwgVGhyb3dTZWN1cml0eUVy
cm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTTG9jYXRpb246OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggZTJlZWRmZDVi
MGM1YWE3MTg3MGRhNzY1NDM5N2UzNWI5OWE4MmNhYy4uMGNiNjdlZjI5YzYyYmY4Y2M0NDZhMGVj
ZTMxYzlmZTUzNTE1N2E0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtODIsNyArODIsNyBAQCBib29sIEpT
UmVtb3RlRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQsIEpTVmFsdWUsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTUmVtb3RlRE9N
V2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lKQorYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICBWTSYgdm0gPSBsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMzVkYjRkMjhjY2Q2OTA3NGZlMWNjNTVhMDRjOGE4MzE4YjhhNTExOS4u
NWZkMjNkZjhkY2YwYjNkYTc2NDNlYTUxY2FkODk4OGIzZmQxMGM3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTEzMDEs
NyArMTMwMSw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5CiAgICAgIyBUaGlzIGltcGxl
bWVudHMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBsYXRmb3JtLW9i
amVjdC1kZWxldGUgZm9yIHRoZQogICAgICMgZm9yIHRoZSBkZWxldGVQcm9wZXJ0eSBvdmVycmlk
ZSBob29rLgogCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAie1xuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgdGhpc09i
amVjdCA9ICpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKQEAgLTEzMjEsNyArMTMy
MSw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5CiAKICAgICAjIEZJWE1FOiBJbnN0ZWFk
IG9mIGNhbGxpbmcgZG93biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHksIHBlcmhhcHMgd2Ugc2hv
dWxkIGltcGxlbWVudAogICAgICMgdGhlIHJlbWFpbmVkIG9mIHRoZSBhbGdvcml0aG0gb3Vyc2Vs
dmVzLgotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7XG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIApAQCAtMjY5Niw3ICsyNjk2
LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgaWYgKEluc3RhbmNlT3ZlcnJp
ZGVzRGVsZXRlUHJvcGVydHkoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQ
cm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCk7XG4iKTsKICAgICB9CiAKQEAgLTQzMjQsNyArNDMyNCw4IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgICAgICB9CkBAIC03NTEyLDcgKzc1MTMsOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckhlbHBlck1ldGhvZHMKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJHty
dW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJs
ZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIH1cbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5jcHAKaW5kZXggMzA1NDg4NzdhNWNlNDQzNmU1YWU3ODNjZDA3Yjk5YjVlN2I0MjcyOC4uYWNl
MTM0NTI5NzU2MTVkOGRiNTZkMjI0NDcwNTJlY2E2Y2UzMDdlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
bmFibGVkQnlTZXR0aW5nLmNwcApAQCAtMTM3LDcgKzEzNyw4IEBAIHZvaWQgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0
aW5nT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpAQCAtMTQ1LDcg
KzE0Niw4IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1
dGUiKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAo
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggZGVlOTZj
ZWQxZmY5MjYwMGUyMjkyZWZhM2Y5NDFkNGRkNzdhYzY1YS4uZWMzYjg2Yzk1ZmVlOTJhZWI4ZmFm
OGQxM2NjNjM5MzA5ODkyNWQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcApAQCAtMTA4LDcgKzEwOCw4IEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImFT
ZWNyZXRBdHRyaWJ1dGUiKSwgc3RybGVuKCJhU2VjcmV0QXR0cmlidXRlIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQog
ICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGZlMjg5NWY3YmQ1OGUxM2NkYWE3
OTliOTBlNDhkOWI4Mjg2MWQ1NjYuLjI5ZWM4NGNiNzc0M2NlYzM0ZjFhOWQ2NjQ1ZDAzNjA0MmYw
ZTYwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Y3BwCkBAIC0xOTAsMTQgKzE5MCwxNCBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsbwogICAgIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0g
KmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJv
cGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJv
cGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQotICAgIHJl
dHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGws
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKaW5kZXgg
MGVhNGJiMTFiODYwNTMwMTE2NTdmZDZlYTYzZjI0NmQ0ZDgyZTUwYS4uMTM4ZDRjMThmOGY0NmJj
MzQzMzEwOWJkMDMyMzk1NjM3ZDBhYzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRp
b25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA1MWQxMDAzMzZjOTI2MWZiNTA5ZGNhZTdl
ZmM0MjQ5YWZhN2ViMGE0Li5hOGRhY2IzN2Q1Yzg4ZTJkYTkwYTA2NTY1OTdiOGU2MmM2M2E3NjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsCiAgICAg
SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0
aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+
KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKQEAgLTIwNCw3
ICsyMDQsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsTwogCiAgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgfQotICAgIHJldHVybiBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgKaW5kZXggNzkx
YmUxODJlYjFiMzY5NjkyMWRlOTc2OTUyNzI5ZjBiNGYwYjM0YS4uMDU1ZDNkZjkyMzgxOGMwMDc2
N2YxODk1ZGY2NzI1ZjViYzBlZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVu
dW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggNGE4MGZmNTg4MDZlNzVhMjM3Mzc5NTA4
MmE4MTA3OWI5ZjJlYWJlNy4uZjZjOTAxYmExN2JkZDlhMmUwZDc0OTUxMWJkNmI1N2U3MDZlOWE2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIu
Y3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0cKICAgICBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3Qg
PSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKj4oY2VsbCk7CiAgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIGJv
b2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplCiAgICAgICAgIGltcGwubmFtZWREZWxldGVyKHByb3BlcnR5
TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAog
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVu
c2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuaAppbmRleCA1NGUwMjU0NzhlMWRjMzk5MDcwNzMzZTQ5OWIwMTYzMTQ5MDEyNDllLi5h
ODU4YTI3MTU0YmQzYzYzNjRmYzQ1YTY0N2ZmNDJiNmI0NzI1MDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCA5NTM5MDBj
MjFlMmYzNjg5ZWM1ZDViZmI5OGFjYmEyMTUzYTI4M2YxLi5kNTE1OTBjYjY0OGQxZDZhYmFiMGUx
OWVkZjhhMDJjOTAyYjc0YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsTwogICAg
IGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICByZXR1
cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGws
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oCmluZGV4IGE5OTQ1YmFmYzYxMTQzZTU3NmZm
ZDYwZmVjOGVlZTY5NjRiOWYwMzAuLjJmZWE4ZDkwZjRmNGExODQyYzhlMTkyYWYzNWQ4NWM3ZDE4
Njg5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBK
U0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6
SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA3NjQ5MDZmYTdhZDhiNDUxNWMxNzZmMzVjMjI0
MDA3M2ZiYzAzNTAxLi4wOGVkZmY4ZGQ1ZjNkYzc4ZTc4YWEwZDgxMGM0ZTE3ZTlmZDJkNzAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCkBAIC0xNTcsNDUgKzE1Nyw1MiBAQCB2b2lkIEpTVGVzdE5vZGVQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjYWxjdWxhdGVT
ZWNyZXRSZXN1bHQiKSwgc3RybGVuKCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImdldFNl
Y3JldEJvb2xlYW4iKSwgc3RybGVuKCJnZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQo
KSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSwg
c3RybGVuKCJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdu
b3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQo
KSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVudHJpZXMiKSwgc3RybGVuKCJlbnRyaWVzIikpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9y
RW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigia2V5cyIpLCBzdHJsZW4oImtleXMiKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0
b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ2YWx1ZXMiKSwgc3RybGVuKCJ2YWx1
ZXMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9t
SXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmb3JFYWNoIiksIHN0cmxl
bigiZm9yRWFjaCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVj
dHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qo
dm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAppbmRleCBhOTg5MzBlMjk1MTQxNzQ1NTFkMTAwYTlmNzg3NWJjYTBlZWZh
MmNlLi5iODNjYWVhNTAyNjc3Mjc3MzEwZDlhZWVmYjk3NWJmYzZmYWViM2Y1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cApAQCAtMTk4NCwxNCArMTk4NCwxNiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYgogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVu
YWJsZWQoKSkgewogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGlt
ZUF0dHJpYnV0ZVN0YXRpYyIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0
aWMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkgewogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRp
YyIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Jmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKIH0KQEAg
LTIzNDcsOTAgKzIzNDksMTA0IEBAIHZvaWQgSlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
biIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSk7CiAgICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmICgh
KHdvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS5zb21lV29ybGQoKSAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkIiksIHN0cmxlbigiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVu
YWJsZWQiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICBpZiAoIXdvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS5zb21lV29ybGQoKSkgewog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSwgc3RybGVuKCJ3b3JsZFNw
ZWNpZmljTWV0aG9kIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSwgc3RybGVuKCJjYWxj
dWxhdGVTZWNyZXRSZXN1bHQiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
LSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQo
KSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImdldFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJnZXRT
ZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ0
ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJ0ZXN0RmVhdHVyZUdldFNlY3Jl
dEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgIH0KICNlbmRpZgogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIp
LCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICgh
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICBoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
ImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIpLCBzdHJsZW4oImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1Nl
Y3VyZUNvbnRleHQoKXx8IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hbGxvd3NNZWRpYURldmljZXMoKSkpIHsKICAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJtZWRpYURldmljZXMiKSwgc3RybGVuKCJtZWRpYURldmljZXMiKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAg
ICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCl8fCBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aGFz
U2VydmljZVdvcmtlclNjaGVtZSgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInNlcnZpY2VXb3Jr
ZXJzIiksIHN0cmxlbigic2VydmljZVdvcmtlcnMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQog
ICAgIGlmICghKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS50ZXN0RmVhdHVyZTFFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0
UnVudGltZUF0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNl
bmRpZgogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50
ZXN0RmVhdHVyZUVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInJ1bnRpbWVDb25kaXRp
b25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIiksIHN0cmxlbigicnVudGltZUNvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
LSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRl
IiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlm
ICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSwgc3RybGVuKCJjb25k
aXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgLy8gQWRkaW5nIGJhY2sgYXR0
cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSByZWFkLXdyaXRlIHZh
cmlhbnQgYWJvdmUuIAogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmpl
Y3QuY3BwCmluZGV4IGZlZWJkZWY3YmM0NWU5OGM5MzA4ZmRmYmRlMTEwYjk5ZmRkZGNhMmMuLjMy
YzEzYjllYjQwNzA4MzVlYjI1ODM3MTk2ZDc4MzI1OGFjNTk3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtMzkxLDggKzM5MSw5IEBAIGJvb2wgX05QTl9SZW1vdmVQ
cm9wZXJ0eShOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CiAgICAgICAgIGlmIChpLT5pc1N0cmluZygpKQotICAgICAgICAgICAgb2JqLT5pbXAtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxHbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmplY3QsIGktPnN0cmlu
ZygpKSk7CisgICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllckZyb21OUElkZW50
aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpLCBzbG90KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5udW1iZXIoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCAy
MmYwYjhkOWQ4ZmFlNGE3OWM2YjYzMWU5MzVjYjZhZGM3ZDk0ZmZmLi5kYmM2ZDNiMWUxOWY5YzIx
ZDliNjBjMTdlZGZmOTcxNjAwNjdjMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC00NTcsOCArNDU3LDkgQEAgLSAodm9pZClyZW1vdmVX
ZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgIEpTQzo6
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAKLSAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nKGtleSkpKTsKKyAgICBbc2VsZiBfaW1wXS0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nKGtleSkpLCBzbG90KTsK
IAogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgYWRkRXhj
ZXB0aW9uVG9Db25zb2xlKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCA1ZWQyMWYxMzRlZjRhYWI1ZGMwYzU1YTQ1ZGU2
YTYzZDI3YzZiZTJlLi42MjI5NjM2OGViYjkwYzUwYjlkZTdmYTA3ODJjOWM2ZmEyODU5MTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtMTMzLDcgKzEz
Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxE
YXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29u
c3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwog
CiAgICAgYm9vbCB0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gRklYTUU6IEN1
cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBh
cmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRl
cm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMTll
ZDE5Y2JjN2FlM2VlNDY3Nzk2YjEwM2NiZmU3NjE2MDlhZDczMC4uNmU4NzdkMmViN2Y0NGQwM2Ey
OGUxNzEwODNiZDNkMGYwYmI5ODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIENhbGxUeXBlIE9iamNGYWxsYmFja09i
amVjdEltcDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAg
ICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdElt
cDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
Citib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmlu
ZGV4IDRkMjk3YzcwZDZiMWI2YzFhZjg4ZjkxNGJlODVmNjBkZjAzY2M5YjEuLmVjMzU4OGZjNTY1
OTU1M2Y1MjcyODNjNThhNzM1ODAyMTMyOWFjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIFJ1bnRpbWVBcnJheTo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKIH0KIAotYm9vbCBSdW50aW1lQXJy
YXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KQorYm9vbCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBm
YWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IGZjZjVlMzNm
YjExNDAxODUxMDc5OTMwZmJkMTE3NjEzNTQ1MmM3ZTYuLjI5ODEyYTY2ZDZmMDEyNGUzODM2MjVm
OTU2MDE5Y2EzM2JjM2JkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaApA
QCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAKLSAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0TGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9hcnJheS0+Z2V0TGVuZ3RoKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGEwMzZiNjY2MmQ0ODcyZjY4ZGM1MjY0NWJhMWFm
MmJhMTUzMzAzMmQuLjlkNWQ2MGRlZjM1NzU0YmUxZTBlMDYyMGU0MWVkYjk4ZWZlMzllZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMjAwLDcgKzIwMCw3
IEBAIGJvb2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9v
bCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7
CiAgICAgLy8gQ2FuIG5ldmVyIHJlbW92ZSBhIHByb3BlcnR5IG9mIGEgUnVudGltZU9iamVjdC4K
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCmlu
ZGV4IDZjYmY3YmY3OTZiMGE4OTQwNGI5NDIyNzVkNjUxZTYwZTczMjQ1ODIuLjNjMTBkOGJkNTBm
M2I3ZGFhNDg0MjIxNGI5ZTA0ZjA0M2FmZGYyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXgg
MmVmYjIyNTIzZjkyMWU5MmFiZDAyMTZlYjBjZDFmZmQxMDAzNjJiZS4uMDVkMTI5MjkzOTU4MmYw
NGM0MzJkMzBjMTQyZGJhNWRhYTBiZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTM2MSw3ICsz
NjEsNyBAQCBib29sIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LWJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNOUE9iamVjdCo+KGNl
bGwpLT5kZWxldGVQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBucElkZW50aWZpZXJGcm9t
SWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCA4NTU4ODk0OWEz
MDYwNGM2OWY3N2NjYzNmNjBlNTQ2OTc3ZmZhYzZkLi40ODAzYzBiYzU3MWY5NzdkZGMyNzIyYmJh
Yjk2YjZkMjdjMmE5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7
CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5k
ZXggMzZmMjhlZTZmYjAxMDJkOGMxNzcxM2M2MDhiNjE0ZWFmODVkZGI3Ni4uOGI5ZmNkZjMwODUy
ZDFkMjIyYTViM2JkNTkwNmRhNGJhZmU0M2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTIyOSw4
ICsyMjksOSBAQCBib29sIE5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KE5QSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2pzT2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG1fanNPYmplY3QuZ2V0KCksIGxl
eGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworCisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG1fanNPYmplY3QuZ2V0KCksIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIs
IHNsb3QpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9qc09iamVjdC0+aGFzUHJvcGVy
dHkobGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllclJlcC0+bnVtYmVyKCkpKSB7CiAgICAg
ICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCmluZGV4IDMwMzJhZmEyODBmYTkyN2Q4NzczMjBlYjgxY2JkOTA3MTAy
NTU5N2UuLjEyY2U0MDljNTQzYzIyODgyMjc3MTliMmQ0MTA4YmYyYTg3OWQ0OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTExNDEsOCArMTE0MSw5IEBA
IGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0eSh1aW50MzJf
dCBvYmplY3RJRCwgY29uc3QgSWRlbnRpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCi0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNjUyMTJmZmExZDc1YTk0MTY2MWYzNzZjOWQyZWMwNTk1MmYzYjg2
OC4uNGUxZTk4ZDM0OTkyNWZlZjg4Nzg1YWNlMTVlNTJiYTRhYTczMzFjMiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBA
QAorMjAyMC0wMi0xNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+
CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qczoKKyAgICAgICAgKGRlbGV0ZS5DLnBy
b3RvdHlwZS56KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlu
bGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAobm9Jbmxp
bmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lu
bGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZh
bCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAg
ICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVk
LgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3Nl
cnRfbmVxKToKKyAgICAgICAgKGFzc2VydF90aHJvd3MpOgorICAgICAgICAobm9JbmxpbmUuYXNz
ZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2Vy
dF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lu
bGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9Jbmxp
bmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFr
ZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxl
dGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxl
dGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNz
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3Ry
dWN0dXJlLmpzOgorICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hl
LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAg
ICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChhc3NlcnRfdGhyb3dzKToKKyAgICAgICAgKG5v
SW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lu
bGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLm1ha2VGb28pOgorICAg
ICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRf
bmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0
ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6
CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJs
ZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlE
ZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAg
IChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MudGVzdERlbGV0ZUluZGV4Lm1ha2VGb281KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC50ZXN0QmlnaW50RGVsZXRl
QnlWYWwubWFrZUZvbzcpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlW
YWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RCaWdpbnRE
ZWxldGVCeVZhbC50ZXN0U3ltYm9sRGVsZXRlQnlWYWwubWFrZUZvbzgpOgorICAgICAgICAobm9J
bmxpbmUudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxldGVCeVZhbCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0U3ltYm9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0ZUJ5VmFsLm1h
a2VGb285KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xEZWxldGVCeVZhbC50ZXN0T2Jq
RGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iakRlbGV0ZUJ5VmFsLnRlc3RT
dHJpY3QubWFrZUZvbzEwKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmpEZWxldGVCeVZhbC50
ZXN0U3RyaWN0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTdHJpY3QudGVzdE92ZXJyaWRlLmFy
ci5qKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTdHJpY3QudGVzdE92ZXJyaWRlKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RPdmVycmlkZSk6CisKIDIwMjAtMDItMTQgIFRhZGV1IFphZ2FsbG8g
IDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZDogZml4IGJyb2tlbiB0
ZXN0cyBhZGRlZCBpbiByMjU2NjY1CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKaW5kZXgg
NDlhMzFiN2YyNDdjMWJkMGFjYTgyY2IyMmRmMjBlOGYxYmY2MWJkZC4uNTRiYmE4MmU2OTljNjJj
Y2NhODk0NTE2ZTYyYjdlNmNhMWY1MTIwMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCisrKyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5q
cwpAQCAtMSw0ICsxLDQgQEAKLS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2Vy
aWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8vQCBza2lwIGlmICRt
b2RlbCA9fiAvXkFwcGxlIFdhdGNoLwogZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIp
CiAgICAgICAgIHRocm93IG5ldyBFcnJvcjsKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gZG9U
ZXN0KHpWYWwpIHsKIH0KIG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAw
MDsgKytpKSB7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKICAgICBjb25zdCBY
ID0geyBpIH0KICAgICBDLnByb3RvdHlwZS56ID0gWAogICAgIGRvVGVzdChYKQpAQCAtMzYsNyAr
MzYsNyBAQCBmb3IgKGxldCBpPTA7IGk8MTAwMDA7ICsraSkgewogCiBkZWxldGUgQy5wcm90b3R5
cGUuegogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDAwMDsgKytpKSB7Citmb3IgKGxldCBpID0gMDsg
aSA8IDIwMDAwMDA7ICsraSkgewogICAgIGdldFooe3o6IGl9KQogICAgIGRvVGVzdCh1bmRlZmlu
ZWQpCiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVy
dHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
ZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
YmFmZmFjOThlNTYzZDVmMzdmNmVlMjA5MDg1ZDY0ODNjOTY4MWQxCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1w
b2x5bW9ycGhpYy5qcwpAQCAtMCwwICsxLDUzIEBACitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9u
KSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0
aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChh
ICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBh
ICsgIiA9PT0gIiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBp
ZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAi
ICsgYSArICIgIT09ICIgKyBiKTsKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2Vy
dF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0Rl
bEJ5VmFsKGkpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9
IHt9CisgICAgICAgIGZvb1siYmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAg
ICAgZGVsZXRlIGZvb1siYmF6IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5v
SW5saW5lKG1ha2VGb282KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChs
ZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0K
KworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEo
T2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkK
KyAgICAgICAgZm9vWyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09
IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5s
aW5lKHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDMwMDAw
OyArK2kpIHsKKyAgICB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKQorfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDk5MTJkYTRiYmJhYWQwNTIxZTU1MTI1YzkwN2U1ZmIyY2RjMTRlNAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1p
bmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSwxNzQgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAv
XkFwcGxlIFdhdGNoLworCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFj
b25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOwor
fQorCitmdW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIp
OworfQorCitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIg
KyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQgdGhyZXcg
PSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW4oKQorICAgIH0gY2F0Y2ggeworICAgICAg
ICB0aHJldyA9IHRydWUKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KQorfQorbm9JbmxpbmUoYXNz
ZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25vSW5saW5l
KGFzc2VydF90aHJvd3MpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgewor
ICAgIGZ1bmN0aW9uIG1ha2VGb28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBm
b28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegor
ICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBh
cnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgYXJyW2pdID0gbWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiAr
IGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1
bmN0aW9uIG1ha2VGb28yKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJh
eiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAg
ICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSBtYWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiAr
IGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVE
ZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpIHsK
KyAgICBmdW5jdGlvbiBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxl
dGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJu
IGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBBcnJh
eSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vMygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmpl
Y3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisg
ICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6
IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30KK25v
SW5saW5lKHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAgICAg
ICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAy
CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0
X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXosIHRydWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2Jhcics
IHsKKyAgICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQor
ICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNz
ZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5v
SW5saW5lKG1ha2VGb280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkKKyAg
ICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3Qg
Zm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFz
c2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcg
PT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1
ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30K
K25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAyMDAwMDsgKytpKSB7CisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRl
c3RDYWNoZWFibGVEZWxldGVCeVZhbCgpCisgICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkKK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3Ry
dWN0dXJlLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBz
LWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMKaW5kZXggNzc5NWRjNTgxNTc4ZTRjMzk4MWMyMmFjODc2
YzQ1NTQxM2U2NGQzYy4uYTkzOWFhZTNhYzhhY2NjMjIxNGRkN2U3ZDgwMjQ0MjFhODE2NDVkOSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBz
LWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVs
ZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMKQEAgLTI0LDUgKzI0LDUg
QEAgZnVuY3Rpb24gZG9UZXN0KCkgewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQg
aT0wOyBpPDEwMDAwMDAwOyArK2kpIGRvVGVzdCgpCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAw
MDA7ICsraSkgZG9UZXN0KCkKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXBy
b3BlcnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1p
bmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGUwZGEwMTMxNTkxMTlmNjAzMDBmZDEwZTIxY2Mx
YTQ4Y2U3NmJiOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9w
ZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSw0MjEgQEAKKy8vQCBydW5EZWZhdWx0KCIt
LXVzZUJpZ0ludD10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlm
ICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQi
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIg
KyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9
PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZnVuKSB7CisgICAgbGV0IHRo
cmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuKCkKKyAgICB9IGNhdGNoIHsKKyAg
ICAgICAgdGhyZXcgPSB0cnVlCisgICAgfQorICAgIGFzc2VydCh0aHJldykKK30KK25vSW5saW5l
KGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCitub0lu
bGluZShhc3NlcnRfdGhyb3dzKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgp
IHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5i
YXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vKQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAg
ICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZv
bykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBm
b28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1
ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpIHsKKyAg
ICBmdW5jdGlvbiBtYWtlRm9vMigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZv
by5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiJd
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIpCisKKyAg
ICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAg
ICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZv
bykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBm
b28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1
ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQo
KSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAg
ICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEo
ZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEo
T2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZv
bykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAx
CisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0g
MworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICB9Cit9
Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFy
ID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFz
c2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBm
b28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29i
YXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFs
c2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFs
c2UpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAg
IGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAg
ICBub0lubGluZShtYWtlRm9vNCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgp
CisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNv
bnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAg
ICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCgh
KCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28u
YmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9v
WyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9
Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2Z1bmN0aW9uIHRl
c3REZWxldGVJbmRleCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNSgpIHsKKyAgICAgICAgbGV0
IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAg
ICAgIGZvb1swXSA9IDIzCisgICAgICAgIGZvb1sxXSA9IDI1CisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb29bMV0sIHRy
dWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9Cisg
ICAgbm9JbmxpbmUobWFrZUZvbzUpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzUo
KQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBj
b25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2Vy
dCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChm
b28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQo
Zm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1swXSwg
MjMpCisgICAgICAgIGFzc2VydF9lcShmb29bMV0sIHVuZGVmaW5lZCkKKyAgICAgICAgZm9vWzFd
ID0gMQorICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCAxKQorICAgIH0KK30KK25vSW5saW5lKHRl
c3REZWxldGVJbmRleCkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkgewor
ICAgIGZ1bmN0aW9uIG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAg
Zm9vWyJiYXoiK2ldID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9v
WyJiYXoiK2ldCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZv
bzYpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0K
KworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVj
dC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdFBvbHltb3JwaGljRGVsQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RCaWdpbnREZWxldGVC
eVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9
CisgICAgICAgIGZvb1sxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbl0g
PSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dCisgICAgICAgIHJldHVybiBmb28KKyAgICB9
CisgICAgbm9JbmxpbmUobWFrZUZvbzcpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZv
bzcoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAg
ICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3Nl
cnQoISgxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbiBpbiBmb28pKQor
ICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAg
ICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0QmlnaW50RGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgp
IHsKKyAgICBjb25zdCBzeW1ib2wgPSBTeW1ib2woJ2ZvbycpOworCisgICAgZnVuY3Rpb24gbWFr
ZUZvbzgoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEK
KyAgICAgICAgYXNzZXJ0KCEoU3ltYm9sKCdmb28nKSBpbiBmb28pKQorICAgICAgICBhc3NlcnQo
c3ltYm9sIGluIGZvbykKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tz
eW1ib2xdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzgp
CisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzgoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAg
ICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAg
Zm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQor
ICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVz
dFN5bWJvbERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0T2JqRGVsZXRlQnlWYWwoKSB7Cisg
ICAgY29uc3Qgc3ltYm9sID0geyBpOiAiZm9vIiB9OworCisgICAgZnVuY3Rpb24gbWFrZUZvbzko
KSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEKKyAgICAg
ICAgYXNzZXJ0KHN5bWJvbCBpbiBmb28pCisgICAgICAgIGFzc2VydCghKHsgaTogImZvbyIgfSBp
biBmb28pKQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5bWJvbF0K
KyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOSkKKworICAg
IGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBhcnJbal0gPSBtYWtlRm9vOSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9
IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAg
IGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9v
KS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAgICAgICBm
b28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1
ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T2JqRGVs
ZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgZnVuY3Rpb24gbWFrZUZvbzEwKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRy
dWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAg
ICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAg
ICB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgZm9vLmZvb2JhcikKKyAg
ICAgICAgYXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAg
fQorICAgIG5vSW5saW5lKG1ha2VGb28xMCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtl
Rm9vMTAoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikK
KyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3Nl
cnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNz
ZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisgICAgfQorfQorbm9JbmxpbmUodGVzdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdE92ZXJyaWRl
KCkgeworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBmdW5jdGlvbigpIHsgfQorICAgICAgICBhc3Nl
cnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIHRydWUpCisgICAgICAgIGRl
bGV0ZSBhcnJbal0ubGVuZ3RoCisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJv
cGVydHkoYXJyW2pdKSwgZmFsc2UpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9l
cShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkK
KyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBq
XSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3RPdmVycmlkZSkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAg
ICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFs
KCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlJZE1pc3MoKQorICAgIHRlc3REZWxldGVJbmRleCgpCisgICAgdGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwoaSkKKyAgICB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKQorICAgIHRlc3RTeW1i
b2xEZWxldGVCeVZhbCgpCisgICAgdGVzdFN0cmljdCgpCisgICAgdGVzdE92ZXJyaWRlKCkKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390968</attachid>
            <date>2020-02-17 13:37:35 -0800</date>
            <delta_ts>2020-02-18 11:53:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200217133734.patch</filename>
            <type>text/plain</type>
            <size>213852</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDc5NzZiMmM5NDRiNDA5OWU1NWViZWU5ZjA5NzBkNWM2MDVhODQ0Li45ZjJhY2QwN2QwZWYzM2Nh
YTk3M2ZhZDA2ZTQ1YzRmYTI3MjU5ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTE2ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFJlbW92ZSBy
ZW1haW5pbmcgV1RGX0VYUE9SVCBhbmQgV1RGX0lNUE9SVCBieSByZXBsYWNpbmcgdGhlbSB3aXRo
IFdURl9FWFBPUlRfREVDTEFSQVRJT04gYW5kIFdURl9JTVBPUlRfREVDTEFSQVRJT04KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
NWRiNDcwMjkzMzRiNTFjZDEyMTI4ODFiYjBlZDE5Mjc4MTRmZWY3My4uYjVlZDgxZDI3NGY5YmFj
MGQxMGFlMTc1MDQzMGUzOTQzY2ViODVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMi0x
NCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAg
SW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNw
ZWN0cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Z2V0IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6U3BlY3RydW06OmJ1aWxkTGlzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0
cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpyZW1vdmVJZik6CisgICAgICAg
IChXVEY6OlNwZWN0cnVtOjpiZWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNwZWN0cnVt
OjplbmQpOiBEZWxldGVkLgorCiAyMDIwLTAyLTE3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCB0cmFjZSBwb2ludHMgZm9yIGxheWVyIGZs
dXNoIHJ1bmxvb3Agb2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NDhlZGFjNTlhMTBjNTQxMGE4ODVj
YWE2ZmU3N2NjYjEzNGMzZDZlLi44YmUwNGE5OWZmNmFjODk5ZDhlYzQyYjg1ZjgyYmUyMWNiYTU3
ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNo
YXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBk
ZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlRGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
b2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAg
ICAgICgtW1dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6XSk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgor
ICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMjAtMDItMTcgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERCOiBpbmRl
eCBjdXJzb3IgaXRlcmF0aW9uIGlzIHNsb3cgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgaW5kZXgg
cmVjb3JkcyBmcm9tIGRpZmZlcmVudCBvYmplY3Qgc3RvcmVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE5NzU4OGMy
YWI4NGYzODViMWNkNDkxYzc0OTEwMDcyNzdjZTZlNDQuLmNiMGFjOWM3Zjg1YmQ0ZTlmZjZlMTY5
MmFlMDNkOTFhNzRhYmI4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTQg
IEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElu
bGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAtMDItMTcgIFBl
ciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFkZCB0
ZWxlbWV0cnkgd2l0aCBiYWNrdHJhY2UgZm9yIHNwZWNpZmljIHJ1bGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggY2FjMDg3MGRiNTA2M2FjODk5NDQ2ODNiNjZjZDAzMGE5ODk1YWJj
YS4uMDhiMDY0OTdhMmYzYjRkNzVjNDRjZjAyZmQ3Nzc4ZGYzNjkxNTM2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUg
ZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJv
cGVydHkpOgorCiAyMDIwLTAyLTE0ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYXNrIFdlYkdMIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgKaW5kZXggMDM0YjM1N2MwNzM4ZTM0OTEyNTg4NThkNzA2OTg5ZmVmY2I0
ODMzZC4uOTJjYTkyNDc3OTYyYmMwNGM3YThlYjg2YTFmNDE1ZDJiMTg3ZjM2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTIwMiw3ICsyMDIs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogCiAgICAgc3RhdGljIGJv
b2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAppbmRleCBjZDUxMWJmZDI4NGEwMTMyNTJhNjQwNWE2NzA3YWFkMTM3YTFiY2Ni
Li40YmVjMzNhNzJkYzI4NDc3YTYxMzU2ZmRiOTIwYTQ3Njg2MmVkNzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApA
QCAtMzczLDcgKzM3Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtNDE4LDcgKzQxOCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFBh
cmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpAQCAtNDI2LDcgKzQyNiw4
IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFs
T2JqZWN0KTsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3QqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1l
KSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGY3ZjlkYWIzZjI4YWRjMGVhYmIyYmRlOGIy
NTA2NzcyYWQyNWZmY2UuLjlkZjg3OGU1ODhmYTJhZWYwNjIyYWM2OTU4NzgxYWJlNjdhMzdlNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC00NzksNyAr
NDc5LDggQEAgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5Rm9yS2V5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVIKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9u
SWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRo
cm93KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50KTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9
IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29w
ZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01MzQsNyArNTM1
LDggQEAgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHIKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9
IHRvSlMob2JqZWN0KTsKIAotICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LT5pZGVudGlmaWVyKCZ2bSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJv
b2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZ2bSksIHNsb3Qp
OwogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA5MWU0MjdjMzBjNTExNjNlZGQ5ZjEwNmQ0MmY5NWUwOWQwMmJlOWM0Li43NTU2ZTk1NmZjNjMy
ZjdlMmI5ZDBlMWFkYmY3Y2E4MWY4ZThmMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC04MTUsNiArODE1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9E
YXRlSW5zdGFuY2VDYWNoZS5oCiAgICAgcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMu
aAorICAgIHJ1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKICAgICBydW50aW1lL0RpcmVjdEFy
Z3VtZW50c09mZnNldC5oCiAgICAgcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAg
cnVudGltZS9EaXNhbGxvd1Njb3BlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YWY0MmMyYWU4ZmU1OTJiZjZkNjgyODUzODk3NmQwY2Y2ZGE2ZGIxZi4uZmI3NDU2NTE3ZjhmNzRj
NjlmMWM5ZDViZGMyMDJjNGY2ZTQ0MTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExNzgsNiArMTE3OCw3IEBACiAJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBF
Q0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQw
RDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1
RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3MzRCNjU1
NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEg
LyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzNFMzc5OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9v
cFN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLzsg
fTsKIAkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI3OTU4RDdGQTEx
NDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdDRCAv
KiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTcxLDYgKzM5NzIsNyBA
QAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThCMDA1
RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8q
IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlT
bG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xv
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1
NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVu
Z3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkz
MzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVj
ZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0Iy
QzMwOTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzA4NCw2ICs3MDg2LDcgQEAKIAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyog
RGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERh
dGVQcm90b3R5cGUuaCAqLywKIAkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzLmggKi8sCisJCQkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8q
IERlbGV0ZVByb3BlcnR5U2xvdC5oICovLAogCQkJCTBGRTA1MDBGMUFBOTA5MTEwMEQzM0IzMyAv
KiBEaXJlY3RBcmd1bWVudHMuY3BwICovLAogCQkJCTBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAv
KiBEaXJlY3RBcmd1bWVudHMuaCAqLywKIAkJCQkwRkUwNTAwRDFBQTkwOTExMDBEMzNCMzMgLyog
RGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNwcCAqLywKQEAgLTkyMDksNiArOTIxMiw3IEBACiAJCQkJ
RkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8q
IERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTczNEI2NTU1MjNGNUMx
MDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBEZXN0cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdElu
dGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNjYyLDcgKzEwNjY2LDYgQEAKIAkJMDg2
N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0g
UEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0ZXMgPSB7Ci0JCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdl
dHNJblBhcmFsbGVsID0gWUVTOwogCQkJCURlZmF1bHRCdWlsZFN5c3RlbVR5cGVGb3JXb3Jrc3Bh
Y2UgPSBPcmlnaW5hbDsKIAkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFz
dFVwZ3JhZGVDaGVjayA9IDEwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHAKaW5kZXggMmFmNDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjli
YTk3NS4uYzRmMTY3MWU1MDE0YjVkNDdjZGVlYjkxMGRmMjM5NmRlODIxYjQxMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMs
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgSW5IaXQ6CiAgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFi
bGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5
TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNv
bmRpdGlvblNldCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5
cGVBY2Nlc3NDaGFpbikKIHsKQEAgLTEyMyw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmNyZWF0ZURlbGV0ZSgKKyAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBp
ZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2Fz
ZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8v
IFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVsb3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tD
ZWxsOworICAgICAgICBuZXdTdHJ1Y3R1cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVk
VG9DaGVja0NlbGwpOworCisgICAgICAgIGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwg
b2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nl
c3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVp
cmVzSWRlbnRpZmllck5hbWVNYXRjaCgpIGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdl
IGRvbid0IGN1cnJlbnRseSBoYXZlIGEgYnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8g
Y2FyZSBhYm91dCB0aGUgaWRlbnRpZmllci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2Fz
ZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxl
dGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0
R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQz
MlByb3BlcnR5Q2hlY2soKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgw
LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBj
YXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERl
bGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBH
ZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVw
ZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2Fz
ZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0
aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgor
ICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9yPEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxz
KSBjb25zCiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxz
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoK
ICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJv
b2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QK
IAogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgog
ICAgIGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBA
IC02NjMsNyArNjk5LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4g
PSAiKTsKICAgICAgICAgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwg
b3V0KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisg
ICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAg
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3Ry
dWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAg
IGVsc2UgaWYgKG1fc3RydWN0dXJlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3Ry
dWN0dXJlID0gIiwgcG9pbnRlckR1bXAobV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3
NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKSBjb25zdAogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5z
aXRpb246CisgICAgY2FzZSBEZWxldGU6CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5p
c01hcmtlZChtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0x
ODUxLDcgKzE4ODgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVk
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAg
ICAgICAgICAgICAgICAgdmFsdWVSZWdzLApAQCAtMTg5Niw2ICsxOTMzLDY3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKworICAgIGNhc2UgRGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2
YWx1ZVJlZ3MpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKyAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlk
YXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3BlcnR5RGVsZXRp
b25UcmFuc2l0aW9uKCkpOworCisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJl
c2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNl
cnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVk
VG9DaGVja0NlbGw7CisgICAgICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1
cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAg
IC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQg
dG8gY2hlY2sgdGhlIGpzY2VsbC4KKyAgICAgICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhp
bmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFt
YXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdl
IGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ugb3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAg
ICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVhZGVyOworCisgICAgICAgIGppdC5tb3ZlVmFsdWUo
SlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOworCisgICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJl
QW5kQ2xlYXJCdXR0ZXJmbHkpIHsKKyAgICAgICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3Rv
cmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIGJhc2VHUFIpOworICAgICAg
ICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgaml0
LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsKKyAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG1fb2Zmc2V0KSAqIHNpemVv
ZihKU1ZhbHVlKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAg
ICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBvZmZzZXRJbkJ1dHRlcmZseShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KG5ld1N0cnVjdHVyZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3Jl
MzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRz
KSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgICAgICBh
bGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0
YXRlKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6IHsKKyAgICAgICAgaml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihmYWxzZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkp
OworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjYXNlIERlbGV0ZU1pc3M6IHsKKyAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMih0cnVlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRl
LnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBB
cnJheUxlbmd0aDogewogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAppbmRleCA3OWQzMTAxNTVl
OTNhNTQ1M2QyODYxYzQzMjI3YmEzYmFjMTlmMjc3Li5jNmM4MTg0NDYzNDFkMGE0M2M2N2FlYzkz
MTgzMzM3NDc4N2QxODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmgKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6
IHVpbnQ4X3QgewogICAgICAgICBMb2FkLAogICAgICAgICBUcmFuc2l0aW9uLAorICAgICAgICBE
ZWxldGUsCisgICAgICAgIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwKKyAgICAgICAgRGVsZXRlTWlz
cywKICAgICAgICAgUmVwbGFjZSwKICAgICAgICAgTWlzcywKICAgICAgICAgR2V0R2V0dGVyLApA
QCAtMTQ2LDggKzE0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRy
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCgpLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0
cik7CiAKICAgICAvLyBUaGlzIGNyZWF0ZSBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgZm9yIHRyYW5z
aXRpb25zLgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZN
JiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CisKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogICAgIAogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZN
JiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIApAQCAtMTU3LDcgKzE2Myw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbikKKyAg
ICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCiAgICAg
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKTsKICAgICAgICAgcmV0dXJu
IG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAgLTE2NSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAK
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFRyYW5zaXRpb24pOworICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5z
aXRpb24gfHwgbV90eXBlID09IERlbGV0ZSk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5n
ZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDEzMjQwOWMwYTQ1MTBiZGZhOGVjZTMzYjc0MzQ3
MTYwMmQ3YjBlNzkuLmIxNjZjMzBjMThhNTIzYTc2MjVmMzlhZjZiNzg5NTA2N2FhNWYwY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcApAQCAtNzk1LDYgKzc5NSwxNSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2Fz
ZTo6VHJhbnNpdGlvbjoKICAgICAgICAgb3V0LnByaW50KCJUcmFuc2l0aW9uIik7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZToKKyAgICAgICAgb3V0LnByaW50
KCJEZWxldGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRl
Tm9uQ29uZmlndXJhYmxlOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU5vbkNvbmZpZ3VyYWJs
ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzOgor
ICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU1pc3MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgQWNjZXNzQ2FzZTo6UmVwbGFjZToKICAgICAgICAgb3V0LnByaW50KCJSZXBsYWNlIik7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDYxNzg3MzdmOWY4YTljZDBiNmRkYWQ1N2YxY2Yx
MmVmZTRmY2E3MDUuLjk2YTFiYWVjYmU0Y2JiYjc2ZGJkZWRhODA1NjVhMmM1OTg2NTUyMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcApAQCAtMjc2LDYgKzI3NiwxMiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6
CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ss
ICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzVHlwZTo6RGVsZXRlQnlWYWw6CisgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhp
cywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAK
ICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaAppbmRleCBkZGNlODVlYzAyNTU1NzZjOWUzNDUxZjY0NzM2ZDEyYzM4
OTQyODAzLi5iNTc1YmRkMjE2MTljMmRmZTRmMTgyZmFlZDkwZjI2OGU5ZTI2MTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApA
QCAtNTUsNyArNTUsOSBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdl
dEJ5VmFsLAogICAgIFB1dCwKICAgICBJbiwKLSAgICBJbnN0YW5jZU9mCisgICAgSW5zdGFuY2VP
ZiwKKyAgICBEZWxldGVCeUlELAorICAgIERlbGV0ZUJ5VmFsCiB9OwogCiBlbnVtIGNsYXNzIENh
Y2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJTY29wZS5jcHAKaW5kZXggMjZlMjgyOTM5ZTlhY2E4ODY1YzIyMTc3M2MyYTQxZTAy
ODA5NGRkYS4uNDhiNWI4NmZhNGI5ZTg2NWVhNDhkYzk5YTQ5M2JkOTQ4ZDA3NGYzZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAt
MTI5LDE0ICsxMjksMTQgQEAgYm9vbCBEZWJ1Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+cHV0KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRGVi
dWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlclNj
b3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4o
Y2VsbCk7CiAgICAgQVNTRVJUKHNjb3BlLT5pc1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUtPmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZv
aWQgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAppbmRleCBmZjRjZTFiMWRhNGI1NzkwZGU4YWQ5ODhhNzFm
NjAyY2RmMjYxNjc0Li40MzI3YzFmMDJjNjkyNzg0NTA4ZTBhOWExYTIxNDk3NzVlZGQ4MDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNv
bnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlM2UyMDhkMmRhMWNkNzM5YmZh
Y2M4YzM0YzU0OTdjYzU2MmRiOTM2Li4zODcxNTkxNzg5MDMxMjBhNjEyNjQ1ZTRhMjM0MzUxM2Jh
NWRiZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cApAQCAtMjQ2LDYgKzI0Niw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMs
IGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBsaW5r
QnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBsaW5rQnVmZmVy
KTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAg
ICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ4ODA4NzRjMjg1YWI3ZDQ0N2ViODkz
YTZlOGI0YmJmMDEwNzMxZDQuLjJmYjZhZDhmNjJmOTVhMjZlNmNkYjgyNmFhNmQxY2Q2N2YxOTQ3
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE5
MSw3ICsxOTEsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9wdXRCeUlkcy5hcHBlbmQo
SW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsK
ICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFkZERlbEJ5SWQoY29uc3QgSklURGVsQnlJZEdlbmVy
YXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCisgICAgeworICAgICAgICBt
X2RlbEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4o
Z2VuLCBzbG93UGF0aCkpOworICAgIH0KKworICAgIHZvaWQgYWRkRGVsQnlWYWwoY29uc3QgSklU
RGVsQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQorICAg
IHsKKyAgICAgICAgbV9kZWxCeVZhbHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxC
eVZhbEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwogICAgIHZvaWQgYWRkSW5z
dGFuY2VPZihjb25zdCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJh
dG9yKiBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKElubGlu
ZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CkBA
IC0zNDgsNiArMzU4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVy
PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiwgND4gbV9n
ZXRCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJh
dG9yPiwgND4gbV9wdXRCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERl
bEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdy
YXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5VmFsczsKICAgICBWZWN0b3I8
SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKICAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBt
X2luc3RhbmNlT2ZzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NjQyYjE2MzU2ZjkwZTljMzg2MDJlYmM1N2ZkOWUwNGEwZjQ1YjUyOC4uODUzZGM4OTJhYWI1MjYw
NGJkODJkMmNkMzMyM2Y1MGVkNmE4MWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExNDgsMzggKzExNDgsNzIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIGF1dG8qIHByb3BlcnR5ID0gaWRlbnRpZmllclVJ
RChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOwogCi0gICAgdmFsdWUudXNlKCk7CisgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7Cisg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAot
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eUlkLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGlk
ZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGlm
ICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpKQorICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpKTsK
IAotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
CisgICAgICAgIHZhbHVlUmVncywgcmVzdWx0R1BSKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSwKKyAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCB2YWx1ZVJlZ3MsIHByb3BlcnR5KTsKKworICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93
UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkp
OworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIHsKICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVl
T3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCiAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJl
Z3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAKLSAgICBiYXNlLnVzZSgpOwotICAgIGtleS51c2UoKTsKKyAgICBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25I
YW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAg
ICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCi0g
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywga2V5
UmVncyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0Nhc2VzOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbChiYXNlUmVncykpOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMigpKS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CiAKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICBKSVRE
ZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIGtleVJlZ3Ms
IHJlc3VsdEdQUik7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBrZXlSZWdz
KTsKKworICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0ZDM0MjdiYzgyZThjOWIyNDdhYzg3MWEw
MjAwMDFiYjIzODI5ZjI2Li4wNjY3NDA3ODVkNWJmYmY5MzBjMzI1ODBkNGU5ZmFjMGYyZWRiODk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC01MTQ0LDIwICs1MTQ0LDEwOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+
YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
RGVsQnlLaW5kIGtpbmQ+CisgICAgdm9pZCBjb21waWxlRGVsQnkoKQorICAgIHsKKyAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50OworICAgICAgICBhdXRvIGJhc2UgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkOwor
ICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAg
ICAgICAgIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKV07CisgICAgICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7
CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShiYXNlLCBW
YWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgYXV0byBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFsdWVSZXA6OlNvbWVM
YXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rl
cihzdWJzY3JpcHQpOworICAgICAgICB9CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25v
dENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworCisgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQorICAg
ICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworCisg
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBub2RlID0g
bV9ub2RlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRk
VW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgICAg
ICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQorICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcykt
Pmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhw
YXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1z
WzBdLmdwcigpOworCisgICAgICAgICAgICAgICAgY29uc3RleHByIGF1dG8gb3B0aW1pemF0aW9u
RnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtp
bmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1
YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIo
KSk7CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBn
ZW5lcmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQg
PT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBC
b3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5HUFIpOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIHJl
dHVybkdQUik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisK
KyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAg
ICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlua0J1
ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3Ra
ZXJvNjQocGF0Y2hwb2ludCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5SWQo
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZhbHVl
IGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBhdXRvIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAg
ICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVs
ZXRlQnlJZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgbV9vdXQuY29uc3RJbnRQ
dHIodWlkKSkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsPigpOwog
ICAgIH0KIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKCkKICAgICB7Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZt
Q2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWwsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6
Tm9ybWFsQnlWYWw+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UHVzaCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRlNDQ0
YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1
NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAg
bWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0
Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2VsZlBh
dGNoKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhEZWxC
eVJlcGxhY2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2OWNkMWI3
ODc0NGU4Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAg
ICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1fZGVs
QnlWYWxJbmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VP
ZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxs
TGlua0luZm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9p
ZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9k
ZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3VsdCBK
SVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRjaEJ1
ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRj
aEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZm
ZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsK
KyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFs
aXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1
NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9l
bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5
SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1dEJ5
SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CisgICAg
ICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBWZWN0
b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklU
SW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFs
Q29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8
Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYgKzkz
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhp
c0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBV
SU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsK
KyAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAg
dW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBt
X2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJ
bnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlu
a0luZm9JbmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2
ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLjhlZGFmOTkxM2JjOTVjYTQyYzU4ZTZiZWRlZDYwY2U5
MjczMzAwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY2IEBAIFZfSklUT3BlcmF0aW9u
X0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlWYWxH
ZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHBy
b3BlcnR5LCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQor
eworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAgIEFT
U0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJhc2VH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BS
ID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVz
dWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9
IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIo
KTsKKyNlbmRpZgorfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwor
ICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBq
aXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCisg
ICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQoreworICAgIEFT
U0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0
UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1Zh
bHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVP
cmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3Rl
cnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKKyAg
ICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJbmZvLT5i
YXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0
eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFz
ZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisjZW5k
aWYKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xv
d1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3Rh
cnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OworfQorCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaAppbmRleCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li43
NTUwODZhOGQ5YWJlMWJmMTAxNGM0ZTU5ZDE2ZWNiNjc3NjQxNzI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNDIs
NiArMTQyLDU2IEBAIHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitjbGFz
cyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAg
IEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigK
KyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0
aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9q
dW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExpbmtCdWZmZXImIGZh
c3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAg
IHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAg
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKworY2xhc3MgSklURGVsQnlJZEdlbmVyYXRv
ciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5SWRHZW5lcmF0b3Io
KSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0KTsKKworICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93
UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExp
bmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVm
ZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitw
cml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogY2xhc3MgSklUSW5C
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJ
VEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0OGRjNjMz
NC4uN2JkZjFmNzMyYmY0ZTA1ZDliODU2OTZlZjQ2ODQ3ZjNiNTYxMDc2YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTQyLDcgKzIxNDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQogICAg
IAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1MCwzMSArMjE1MCw1MSBA
QCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBi
b29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCkpOwor
ICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlk
KSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlm
ICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVs
ZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi0KLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0
dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmco
dm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAg
ICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1
ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3Jt
YWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpOworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwg
dWlkKTsKIH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxOTAsNyArMjIxMCw3IEBAIHN0YXRpYyBib29s
IGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBWTSYKICAgICBlbHNlIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IGtl
eS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHkp
OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQpAQCAtMjE5OCwy
MCArMjIxOCw0MiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgcmV0dXJuIGNvdWxkRGVs
ZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKSkpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVu
dGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAg
aWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
KyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRj
aERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXkp
CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNs
b3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0
aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3Bl
Q2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVm
ZjgyYTMwMGMuLjYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsMTAgKzI1MSwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVm
YXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRF
Uk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVu
dFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmpl
Y3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFt
ZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYWJmNTJmNzEz
ZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJmNi4uNWRjMGIxMTFlMTk4ZTk0MDRhMzc2MGUw
MmRmODc1M2UzMDg4MGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICszODcsMzkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CisgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBKSVREZWxCeUlk
R2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDApOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRGVsQnlJZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpLmltcGwoKTsKKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJ
ZHNbbV9kZWxCeUlkSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIG1fY29kZUJsb2NrLT5pZGVudGlm
aWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkgKzQyOCw0MiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDEsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJl
Z1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsK
KyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDApOworICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1
ZVJlZ3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDAp
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRjOGJk
YWVlZjE0Yy4uN2QxNDE2OGNiNWMxZjhjYjM4ZWIxYzIyNjg3NDk2NjFjNGY3YmU3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC0xMjMsNyArMTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9w
ZXJ0eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eUlkR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1w
bCgpKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCwgcmVnVDEpKTsK
KyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDAsIHJlZ1Qx
KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEzMyw5ICsxMzUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJhc2Us
IHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJl
Z1QyKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDAsIHJlZ1QxKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QsIEpTVmFsdWVSZWdzKHJlZ1QwLCByZWdUMSkpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKSB7IH0KK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9CisKIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdl
dEJ5VmFsPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTE4MjA0
MTU1NGJkYzc2YzE5MWNiMTM4NWQxM2E5YzgxZmZkNDVlYi4uYmU3NTAxZWYyMmMxODMzZTRmYjdm
MDZhOWFiZTNhYWIwNzZlZGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2Ug
PSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3Ry
dWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpOworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3
U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9t
KCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZUN1c3RvbSgpKSB7CkBAIC03MzQsNiArNzM0LDcyIEBAIHZvaWQgcmVwYXRjaFB1
dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5j
dGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZURlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisKKyAgICB7
CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2ssIGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKworICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1
cmUoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisg
ICAgICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpIHx8ICFvbGRTdHJ1Y3R1cmUgfHwgIW9sZFN0
cnVjdHVyZS0+aXNPYmplY3QoKSB8fCAhb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAg
ICBpZiAoIXNsb3QuaXNDYWNoZWFibGVEZWxldGUoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNl
OworCisgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKKyAgICAgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG5ld09mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCk7Cisg
ICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0
cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNj
ZXNzZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNTRVJUKG5l
d09mZnNldCA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgQVNT
RVJUKGlzVmFsaWRPZmZzZXQobmV3T2Zmc2V0KSk7CisgICAgICAgICAgICBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKHZtLCBjb2RlQmxvY2ssIENhY2hlYWJsZUlkZW50aWZpZXIo
cHJvcGVydHlOYW1lKSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzbG90LmlzTm9uY29uZmlndXJhYmxlKCkpCisgICAgICAgICAgICAgICAgbmV3Q2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVO
b25Db25maWd1cmFibGUsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxp
ZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9j
aywgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzcywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5h
bWUpLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAg
IH0KKworICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgY29k
ZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChy
ZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFj
ZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWUpKTsKKyAg
ICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKHZt
LCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdC5zaG91
bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7Cit9CisKK3Zv
aWQgcmVwYXRjaERlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNo
ZURlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgewor
ICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFs
dWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIHByb3BlcnR5TmFtZSkpOwor
ICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgIH0KK30KKwog
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkBAIC0xMzkxLDYgKzE0
NTcsMTUgQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAo
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKK3ZvaWQgcmVz
ZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkK
KyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgZWxz
ZQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOworfQorCiBzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDZmMGYyNjQxMWVjZGVh
MTkyYjcwNjIxMGU4YTk5NDRiYjRmOWZlMzkuLmMxZDk5NTlhZGFmZDM2NTc2MmU4OTE3OWFiM2Mw
ZWVkNjZlNTg3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00MSw5ICs0
MSwxNSBAQCBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CiAgICAgRGlyZWN0CiB9OwogCitlbnVtIGNs
YXNzIERlbEJ5S2luZCB7CisgICAgTm9ybWFsLAorICAgIE5vcm1hbEJ5VmFsCit9OworCiB2b2lk
IHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNo
R2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2lu
ZCk7CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNW
YWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xv
dCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxCeShKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2lu
ZCk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09i
amVjdCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNs
b3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBT
dHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2Fs
bEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTUzLDYgKzU5LDcgQEAgdm9p
ZCB1bmxpbmtGb3IoVk0mLCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2Fs
bChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50
KTsKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5
S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owordm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlL
aW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
IHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQ
dHJUYWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4
IDIyNTRmY2M0Mjk2MTdjZTgzOTdkMjRlNTUwZTFhY2VjNjdiNjE0NDMuLmZhY2E3YmY0ZTE3OGQ0
MjVmZmJlZmZlOTU0ZThmMzFlYjAwMjA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtOTI1LDcgKzkyNSw4IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcERlbEJ5SWQ+KCk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBnZXRPcGVyYW5kKGNh
bGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSwgc2xvdCk7CiAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKQEAgLTExMDgsNyAr
MTEwOSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1
YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAppbmRleCBmZmIzZWI5ZDAwNWNmNmZk
MDhmZmQyYmI4OGI5ZDU4N2JhZWQwZmY2Li4xMDdiNWQ2MDcyMDM3MDUxZjZhN2MxZTljYjBjMTVm
MjY1ODk3OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWFibGVJZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTQyLDYgKzQyLDcgQEAgaW5saW5l
IENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKIAogaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlk
ZW50aWZpZXIoSlNDZWxsKiBpZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc0NhY2hlYWJsZUlk
ZW50aWZpZXJDZWxsKGlkZW50aWZpZXIpKTsKICAgICBzZXRDZWxsQml0cyhpZGVudGlmaWVyKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBmZTZj
NmI3ZDg0YzQ3ZWRlZTExYWFjMTFmNjQ4NGE3MmQ0MTdiYzQ2Li43YTU5YjhmZGIwYzIyY2NiYmQy
OGQ4MDMxZGE4YTE3ZWUwNTM3MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaApAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVz
aW5nIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
ICAgICBQdXRCeUluZGV4RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHB1dEJ5SW5kZXgp
OwogCi0gICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICB1c2luZyBEZWxldGVQcm9w
ZXJ0eUZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIERlbGV0ZVByb3BlcnR5RnVuY3Rp
b25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRlbGV0ZVByb3BlcnR5KTsKIAogICAgIHVzaW5nIERl
bGV0ZVByb3BlcnR5QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmNwcAppbmRleCA5NmEzNjM1ZTY4MjczOTNlZTgzNmQ4MDQ3Nzcy
NGEyNWQ1NDZjMjYxLi5mNjk5OWU3MzQ4NGUyYWJkODgxNDU0ZjExNDgzMTBjMDJkNGYyYTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogICAgIHJldHVy
biBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3Qp
OwogfQogCi1ib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCitib29s
IENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q2xv
bmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpA
QCAtMjI5LDcgKzIyOSw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHx8IGlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2Jq
ZWN0LT5tYXRlcmlhbGl6ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZ2xvYmFsT2JqZWN0KTsKICAgICAK
LSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpZGVudCk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Nsb25lZEFyZ3VtZW50cy5oCmluZGV4IGZkM2EyN2JmNzM1NTRkNWVlNGE2ZTMxZDBiYTBj
YWQxNTc2MDVmZjUuLjAwYzUzNDc1NjA1YTczYjJiM2ViMzhkM2NmODEzMjg4MzRmZjFiYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBA
IC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCiAgICAgYm9vbCBzcGVjaWFsc01h
dGVyaWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMGUyYmMzYTI3
MTljMmE5MzUzZTdkNzUyMWE4NzliZDEyZDc0MDA2OS4uMWRlODIzOTUwOWUwYzhkN2E1NmEzMjQx
NGZmZThhNzRhOWI3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC05ODUsNyArOTg1LDggQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAg
ICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZmNmI0ODAwZWY1
Nzg1NjFjYWVkYzlkZGJiYzgyZjI1MzJlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApAQCAtMCwwICsxLDgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNs
b3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Qg
eworcHVibGljOgorICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hlYWJsZSwgRGVsZXRl
SGl0LCBDb25maWd1cmFibGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUgfTsKKworICAgIERl
bGV0ZVByb3BlcnR5U2xvdCgpCisgICAgICAgIDogbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKKyAg
ICAgICAgLCBtX2NhY2hlYWJpbGl0eShDYWNoaW5nQWxsb3dlZCkKKyAgICAgICAgLCBtX3R5cGUo
VW5jYWNoZWFibGUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlTWlz
cygpCisgICAgeworICAgICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxldGVNaXNzOworICAg
IH0KKworICAgIHZvaWQgc2V0Tm9uY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAgICAgIG1fdHlw
ZSA9IE5vbmNvbmZpZ3VyYWJsZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhpdChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCisgICAgeworICAgICAgICBtX3R5cGUgPSBEZWxldGVIaXQ7CisgICAgICAg
IG1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKworICAgIGJvb2wgaXNDYWNoZWFibGVEZWxldGUo
KSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBVbmNhY2hlYWJsZTsg
fQorICAgIGJvb2wgaXNEZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRGVsZXRl
SGl0OyB9CisgICAgYm9vbCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsgfQorICAgIGJvb2wgaXNOb25jb25m
aWd1cmFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmlndXJhYmxlOyB9CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fb2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQorICAg
IHsKKyAgICAgICAgbV9jYWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dlZDsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVh
YmlsaXR5ID09IENhY2hpbmdBbGxvd2VkOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKKyAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OworICAgIFR5cGUgbV90eXBl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGYxODIxZDU1NmEzZDQwNDQ5MzY3
NWVhZTI1ZmEyZTQ2NjczZWM0M2EuLjY4NWM3YWNiYzExYzYyZDIzMzc3ZDMyYzRkZTlhMjBiNjU4
NzhhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8RXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpAQCAtOTUsNyArOTUsNyBAQCBib29sIEVy
cm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+c3RhY2tUcmFjZUxpbWl0KQogICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDkzZDUyNzE0
ODZmNjZmZGU3NTNlNDlhNDAxNmYxNjgzOGU5NzU3MjEuLjlhNWE0NjMyMWIzZGJiNzY0YzJhMWI1
MjFkOTI2OGY4ZDE0MzUzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAKaW5kZXggZmQ0OGJiZjM0YzMwNDMwZDJlNzBkZTU3NDk4ZTliNTFlNmFjMjQ0ZC4uMWQ1
MGNkMTc0ZmM0N2Q5MjIxNzE4OGUzMjVmZjU3YWU4ZDE1YjgxYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5NywxMiArMjk3LDEy
IEBAIGJvb2wgRXJyb3JJbnN0YW5jZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29s
IEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JJ
bnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9ySW5z
dGFuY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNlbGwpOwogICAgIHRo
aXNPYmplY3QtPm1hdGVyaWFsaXplRXJyb3JJbmZvSWZOZWVkZWQodm0sIHByb3BlcnR5TmFtZSk7
Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aAppbmRleCBmMWZhYzU5NjgyZDllMDI2NTA4Y2I0ZmY4YzliMjY3YjRlZTc2ZTg3Li40MDA2MDhk
MDhhODM0Y2QzMWU2MTJlNzNhYjUzMWNiMGEzY2ExMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCBjb21wdXRlRXJy
b3JJbmZvKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHMuaAppbmRleCBjZTEwZjdmZTQ4NzNlNGE0N2JlMTQxZTI1NTY5YWQ2NDhhZmY5
ZDI4Li40NzEyMTY3MzAzNjQ4MjhmZTI3NzBlMjM0ODY5YWNlNzA5MDhkMWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC01MCw3
ICs1MCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMxYmI0MzBmNmQ1OGIx
ZDViMTE1ZGE1MTNjNWJjYzBiZjUzLi5hNWE5ZWNiMzIyYTIwZGE4ZmUyNDMzZmZkNTQ3YTc4YWZj
NjAyY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAgYm9vbCBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm8KICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpw
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CkBAIC0xNTgsNyAr
MTYwLDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4KLWJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQp
Citib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxU
eXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDcg
KzE3Nyw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbmRleCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5oCmluZGV4IDAzNDg3ZjYxZTBmMmZjNzUxYmE3MDNiNzBjYTM2ZDAyMjIxNjM0ZGUu
LjYwMWYxZTQ5ZjE1Y2Q1MDFhMGUwYTc1ZWUyODUwNmYzMmIwZGIzYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xMjcsNyArMTI3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jikg
eyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0
ZToKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA2ZDA3NTkxNzExZWVkYmMyOGUwZTRkYTc4
NDk4MjJhYjhkNjZmNWQxLi5iY2UzNjU1YTMxOTJlYTI5MGZlN2YwNDA4MjRhMzg4NmY2YjA0ODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzA2LDcg
KzMwNiw3IEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwpA
QCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzRm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9p
ZCogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAzMTE2NWI1
ZmY0OTI1NGNjMWE2YzQ3OTAyYjc5MTBhYzRhN2Q5YmZmLi5jZGMzOWI1MTJkN2VlM2ExNWNmMWFl
YzJlMGEyZDkzZDlhYWFkMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMzZDFiYjYwZjhiNTMzYjE4
NjA1OGVlYWQ4MWI3NS4uNTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFiMWVkYzRhNzQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDAsNiAr
NDAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKK2NsYXNz
IERlbGV0ZVByb3BlcnR5U2xvdDsKIGNsYXNzIEpTQmlnSW50OwogY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgSlNDZWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5k
ZXggMjcxMzUyYjIxNzQ3MDM1NmRmNDAzZmRkOWNkZTYwZGVmODg4MTYwNy4uMGU2N2Y4NjY3NmQ1
ODY1YWE4OGYwNGYzNWFkYTc0MzIxZTAyY2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBib29sIEpTQ2VsbDo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGlkZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwogfQogCi1ib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKK2Jvb2wgSlND
ZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZt
KCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNs
b3QpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNjY1ZDA4ODljZjQ0NjFjM2Fi
MGEyYWY0YjA3YzZhNThjOTA0MjFjNC4uMDYyZTgzZGIzOWFiMzRhNmVmNGZkYTM2ZmZhNTBlNGMx
MTFkOTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE4MCw3
ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgYm9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBFQ01BTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwCmluZGV4IDE0NmE5MTMyZDQ3MzUyNDJjMTA2ZTY1NTY0Nzc4ZTE3ZWQ3YmFi
OGMuLjFiMjU1MjNjOThmYmIwOWUzN2Y4YTQ3NDMxOWJmNzZjMzJkOGE4YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xNTIsNyArMTUyLDcg
QEAgYm9vbCBKU0RhdGFWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKIH0KIAogYm9vbCBKU0RhdGFW
aWV3OjpkZWxldGVQcm9wZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEpTRGF0YVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNEYXRhVmlldyo+
KGNlbGwpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVy
dHkoCiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlT2Zm
c2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNEYXRhVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4
IDg2NDEwZTYxYWQ3ZTkxZDgyYTY3ZTk3ZWZiYjRmMzJmMWJjMTJlNzguLjk4YThjYzhiMzk4ZmZk
ZDdhMWM5NGJlNjU3ZjY1NWU2Y2M3YjlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApp
bmRleCBjZDZlYzE1ZWUwOWE5ZjM0Y2FmMmYyOTQwMGZjOTZkOWE1OWQ0ZGJjLi40MzQ2YWFhZWVi
NmE4ZWY1ZjUzMjg1ZTFkNWFiNmY3NzIxMWE5NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wgSlNGdW5j
dGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAK
LWJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Z1
bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgSlNG
dW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKICAgICB9CiAgICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogYm9vbCBKU0Z1bmN0
aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYWRkZGUyYWMwM2E0MTBjNzA4YTc5
MzRiNWE1ZDA2ODljYTFmZmFjZC4uMThhYjQ3NTQzZmQ3ODI5NzhhZmVhOTcyYzhjOWFjNmQ4NzAy
Y2JmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAt
MTc5LDcgKzE3OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
OwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAppbmRleCBmMDhmODUyNDY5YmVmZDZjNWFkNDNhZjJhNTAwOTJiZWVm
ZTJiMzlhLi4zYjdiYmRlNzY1Y2UxYzM1NjU1MGVjZDU4Yjc3ZmVkOWQ2MTA2ZjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKQEAgLTMwNSw3ICszMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsK
IAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCmluZGV4IDBjYWZiZDI3NmNmNzRkMGM4NWVmOGJlN2RiZTQwM2QzYzc2
NGIzNDIuLjU4ZmJiNTc1NjJiNzEwMDc5ZTY1MTQwZjdlMDllNzA4MDQ4ZmEzNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00MzgsNyArNDM4LDcgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVmaW5lT3duUHJvcGVydHkoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpk
ZWxldGVQcm9wZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1MCw3ICs0
NTAsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9w
ZXJ0eSgKICAgICBpZiAocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtNDg0LDcgKzQ4NCw4IEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCgKICAg
ICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0
dXJuIGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5
TmFtZSksIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGIzYzk4
MGE0NjYyYWVlZWExMjQwYTU2NmM1ZDRhMThhOTI4NzFmN2UuLjBmODkwMzAwYmViNzg0YzcxNzlh
ODczZmFjZmNiMmE4NGQwYzllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzMTQsNyArMTMxNCw4IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmFkZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IElkZW50aWZpZXImCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBhZGRHbG9iYWxWYXIocHJvcGVy
dHlOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGYzNDVjNTAyN2FiYTk0MDg0NDcxZTMxYjdi
OGQ3ZWUyYTJmODg3MTMuLjk3NGI5MmI1NGUxYTMzODMxNjlkZWZhYjJhOWE3ZGRlNjQ2ZGEwNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmly
b25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAKQEAgLTEyNywxMyArMTI3LDEzIEBAIGJvb2wgSlNMZXhpY2FsRW52aXJv
bm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShnbG9iYWxPYmpl
Y3QtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEpTTGV4aWNh
bEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTGV4aWNh
bEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5
KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaAppbmRleCBkMDEzYjUxZWZhMjk3ZWJmMDNjYTQyNDAwMTdhNjdhY2Mx
M2I5Mzk3Li4wNWU0ZTY1YzJkZDQ5M2ZmN2E0ZTMxYTQ4MjZiNzBjMjUwYzU3OWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAppbmRleCBmZWI1NTEwODc0ODAz
OTBkMzQwOWU2Y2FhOTQ4MDBiNzI5ZjdjNzNkLi44NThhOTQyZmU3MzU1Y2Y4YzExODA1YThkMDVl
MDY1M2Y4YTIxODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgSlNNb2R1
bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVyCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAK
LWJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTM4LDcg
KzEzOCw3IEBAIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuaAppbmRleCBkYWVhYjY2MmZjMDRkYWJkZDI2ZDE0MTQ1ZjM2ZWIxN2Uy
NzkyYTc5Li4wMTMwZjg3ZmI5OGJiMmE4MmRhYTI5YTU5NjM1MmU3MTliYjdlZmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcAppbmRleCAyYmRiMTMwNWViMGM0YmU5NjA4MDY1YmQzNDg1OWM3YWYxNDhi
MmExLi4xZmM2YTI2NWI4Y2E2NWFkMTE5MDJmNWQwMTNlZDY1ZDg2NTYxODgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwCkBAIC0xOTksMTIgKzE5OSwxMiBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAogICAgIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQotICAgICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICByZXR1
cm4gIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgKaW5kZXggOGVlZjYyMWUzYjg0ZmE2NjI4Y2ZhMmY4MTRkYTYyOGYwNjc4
N2QxZC4uODExMzY0ZGQxN2ExM2U3ZWZiZmNmMWM5ZTI4NjMwZTI0MmE3MTI0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXgg
ZDBkMTcyMWNmMWRlYjgzM2Y5Y2IwMWUyYmYzMjFiMDZlZDQxOTZjOS4uZWRhMmQ2MjM1MDk5ZWQz
MDFiYjBhZTExNDUxNGYzMmUxNTRjYjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTc1OSw5ICs3NTksMTAgQEAgTkVWRVJfSU5MSU5FIEpT
VmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgZmls
dGVyZWRWYWx1ZSA9IGNhbGxSZXZpdmVyKG9iamVjdCwganNTdHJpbmcodm0sIHByb3Auc3RyaW5n
KCkpLCBvdXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKLSAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgp
KQotICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICAg
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIG1f
Z2xvYmFsT2JqZWN0LCBwcm9wLCBzbG90KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChvYmplY3QsIG1fZ2xv
YmFsT2JqZWN0LCBwcm9wLCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIGluZGV4U3Rh
Y2subGFzdCgpKys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggYWNkMjlkZWQ4MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFkZi4uMzQ3MzJlMWMy
YmYzNmZlNWQ3OTc3YzFiZGUyNWNkYWVkNjNhYzliMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTk3Miw3ICsxOTcyLDcgQEAgYm9vbCBKU09iamVj
dDo6aGFzUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIHByb3BlcnQKIH0KIAogLy8gRUNNQSA4LjYuMi41Ci1ib29sIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKQEAgLTE5OTksOCArMTk5OSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cgogCiAgICAgYm9vbCBwcm9wZXJ0eUlzUHJlc2VudCA9IGlzVmFsaWRPZmZzZXQoc3RydWN0dXJl
LT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogICAgIGlmIChwcm9wZXJ0eUlz
UHJlc2VudCkgewotICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlICYmIHZtLmRlbGV0ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSkKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpIHsKKyAgICAgICAgICAg
IHNsb3Quc2V0Tm9uY29uZmlndXJhYmxlKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KICAgICAgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKIAogICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtMjAwOCw3ICsyMDEwLDkgQEAg
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+
cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBbXSAoY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQsIFByb3BlcnR5T2Zm
c2V0KSB7IH0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7Ci0gICAgICAgICAgICBpZiAodGhp
c09iamVjdC0+bV9idXR0ZXJmbHkgJiYgIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAm
JiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAg
ICAgc2xvdC5zZXRIaXQob2Zmc2V0KTsKKyAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNh
cGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJmbHkpOwogICAgICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkodm0sIHRo
aXNPYmplY3QtPnN0cnVjdHVyZUlEKCksIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIG9mZnNl
dCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bWF4
T2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldCk7CkBAIC0yMDIwLDcgKzIwMjQsOCBAQCBib29sIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcgogCiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkK
ICAgICAgICAgICAgIHRoaXNPYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmNsZWFy
KCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBzbG90LnNldENvbmZpZ3VyYWJsZU1pc3Mo
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjAzMCw4ICsyMDM1LDEwIEBAIGJvb2wgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgCi0gICAg
aWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCi0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaSkpOworICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKSB7Cisg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkpLCBzbG90KTsKKyAgICB9CiAgICAgCiAgICAgc3dp
dGNoICh0aGlzT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOgpAQCAtMzYyNSw3ICszNjMyLDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KgogICAgIC8vIEEgZ2VuZXJpYyBkZXNjcmlwdG9yIGlzIHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0
cmlidXRlcyBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQogICAgIGlmIChkZXNjcmlwdG9yLmlzR2Vu
ZXJpY0Rlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuYXR0cmlidXRlc0VxdWFs
KGRlc2NyaXB0b3IpICYmIG9iamVjdCkgewotICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxPYmpl
Y3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0
ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgICAgIH0KQEAgLTM2
NDEsNyArMzY0OSw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgaWYgKCFvYmpl
Y3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1
cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM2NjUsNyArMzY3NCw4IEBAIGJv
b2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBp
ZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJp
ZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM3MTgsNyArMzcyOCw4
IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKIAogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0
ZXIpOwogCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgdW5zaWduZWQgYXR0cnMgPSBkZXNjcmlwdG9yLmF0dHJp
YnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KTsKICAgICBvYmplY3QtPnB1dERpcmVjdEFj
Y2Vzc29yKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCmluZGV4IGVjNjMwMGVhOWI5NzJjZTliYTBmYWQ4MTgyNTdhZmIyMGQ4MmEy
ZWQuLjY5M2JkYmI5OTdkNjQ0MjA4MDY1MWMyN2VkZGU3YjA4OGExNDE1NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRlbGV0ZVByb3BlcnR5
U2xvdC5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKQEAgLTYyMyw3ICs2MjQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29u
c3Q7CiAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKSBj
b25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwCmluZGV4IDljNDc5MzRlNGEzZDkxOTlmYTk4NDJkZDA1MmNlODhkMjQx
NTJhYzEuLmQwYmJjMmM1YTJkMjIxOTEyN2NkOTliMzAyMDkzMDg4NzIxMjNiNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAg
Ym9vbCBKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09i
amVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
UHJveHkqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRh
YmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiBib29sIEpTUHJveHk6OmlzRXh0ZW5zaWJsZShKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5oCmluZGV4IDM1MWU2NjhkMjU5MGQ5Yjk3YzhmNGJiYTJiZmZiNDAwZGIzZjIxMDkuLjVi
ZTdiZjBkMmU1YThiMzJjNzk0YzBiMjU4OTU3OThmYzVmOWVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAKaW5kZXggNjMwZTFiNzhiYjIwNmU3YWY2MTdjM2M2ODJjMzRmNWUx
NzU1ZjVkNS4uMTI1ZjZjMzE1MGU5NmFlY2Q1Mzc0NzMxZmRhOGQ5YTdiYWZiYTI0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKIH0KIAotYm9vbCBKU1N5bWJvbFRh
YmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTU3ltYm9sVGFi
bGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEpTU3ltYm9sVGFibGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNTeW1ib2xUYWJsZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5zeW1ib2xU
YWJsZSgpLT5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQg
SlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBjN2MxZTIw
YTY1NDc2YmM3MDY4ZWU2M2RlZDk4YjMzNWRmNzM2YjIxLi5iNTY4ZThmOTJhOTgzZmI0Y2MyMDNh
N2EwNjIxODBhZTRmZTU5MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFi
bGUuZ2V0KCk7IH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTeW1ib2xUYWJsZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N5bWJvbFRhYmxlT2JqZWN0LCBtX3N5bWJvbFRh
YmxlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3Bw
CmluZGV4IGI2NTIwMjIxYTgxNTk4ZmZlZjJhNWUxNGE4MGZkNGU1NGRjNjljNmUuLmIwN2UwYTAy
OTMzMjgyNjEwMzZmNDExMDZlZWVlOWU1ZjkwYzY2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTY4NSwxMiArNjg1LDEyIEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJveHlPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUHJveHlPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7CiAg
ICAgYXV0byBwZXJmb3JtRGVmYXVsdERlbGV0ZSA9IFsmXSAoKSAtPiBib29sIHsKICAgICAgICAg
SlNPYmplY3QqIHRhcmdldCA9IHRoaXNPYmplY3QtPnRhcmdldCgpOwotICAgICAgICByZXR1cm4g
dGFyZ2V0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0
YXJnZXQsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRhcmdl
dC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKICAgICByZXR1cm4g
dGhpc09iamVjdC0+cGVyZm9ybURlbGV0ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgcGVy
Zm9ybURlZmF1bHREZWxldGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJveHlPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmgKaW5kZXggMTdjYTI5ZmIwYTNmZGRiYTcxZWI2ODI0OWMwOTljYTI4YTNkNjJl
ZC4uZWU1YmQ5MDU4Y2ZhODE4YTQ2NzRhNTIyYmY2MGEyY2EwOWVhYzFiYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCkBAIC04NSw3ICs4NSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
ICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wg
cHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRp
YyBib29sIGlzRXh0ZW5zaWJsZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0NmRjYjc1
MDZkYTU3MGU0Yzk3ZWI5M2EwOWMwMDQ4MWE1MTUzODI3Li4xY2UxYjRjMzNhYWYxYTQ1ZGYwNzI0
MWY0ZGQzMGM2N2Q2N2EyZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAKQEAgLTcxLDEyICs3MSwxMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+bGFzdEluZGV4KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggNWU5
OWViMzhiNzEzYTk0MjYzNzE5MWE4OWYwYjdjOTZjNWZiYjcxNC4uODU3Y2EyZTcyYWYzNDBlYWUz
NjU3MDFkNTVjYTA3ZWQ4M2UwYjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAobV9yZWdFeHBBbmRMYXN0
SW5kZXhJc05vdFdyaXRhYmxlRmxhZyB8IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFnKTsKICAg
ICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwCmluZGV4IDUxNTc1Mjc2NWVjYjAyZDE5YzA0MGU5ZjIxYjk2
NDlmNzUxN2I5NDcuLjUxZGJjNjdjNTdmODE1NjFmYTc4ZDE5NGVmYWYwNDljMDdhOGFkNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgU3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmlj
dEV2YWxBY3RpdmF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUKIHsK
IH0KIAotYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFN0cmljdEV2YWxBY3RpdmF0aW9u
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAppbmRl
eCBjZGNjMjFiN2U1ZmE3YjEwOTZiMjZkMTg3MDc0Y2JmMTdlYjgzYzI5Li4yNDE1NDVlODE2OTM2
MmJmNjkyMGE5MTliOGZlMGZkYmI3YTEwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc2NvcGU7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ3N2I5Y2FmYjNmYTAwOGYwZjcwNTY4YjZkYjZm
NGExNTE4NmQwNmUuLjQ4NmRkOTI3M2I3NTA1OGE0N2Y3NjlhM2ZjZjg3NzVlNjkwY2QzOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAt
MTI1LDcgKzEyNSw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwogfQogCi1ib29s
IFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJpbmdP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBTdHJpbmdPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CkBAIC0xMzQsNyAr
MTM0LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHIKICAgICBPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNP
YmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgoaW5kZXgudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGEzNDA1
ODE3ODkzNGQ4NTI1MGFjYjNhM2U0ZGEzNTJmMjI3ODY1MjMuLjY5ZjI2YjdkNzI0YmJlZjczMjMz
MTk0N2U4MGI3YzdmYWZjZjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGVkYTQ0NmJmYmUyNjdhYjAxYjg1MmUxNWZk
ZTljOWMzMGU2ZjU4ZTYuLjUyMDVkZDczODFjYzMxNWM4MTE2MzU1MGFhMWRjYTIxOWYzNWZjZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtNTQw
LDggKzU0MCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRp
b24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSogU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVm
ZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewotICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCwgZGVmZXJyZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lLCBvZmZzZXQpOwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBuZXdT
dHJ1Y3R1cmU7CiAKQEAgLTU0OSwxNiArNTQ4LDEzIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
CiAgICAgICAgIHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7
CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9t
RXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92
ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkpOwogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
KTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAotICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7Ci0gICAgc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cyk7Ci0KICAgICBjb25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7CisgICAgb2Zmc2V0
ID0gaW52YWxpZE9mZnNldDsKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24g
PSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0
dHJpYnV0ZXMsIGlzQWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5n
VHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGlu
ZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5z
aXRpb25PZmZzZXQoKTsKQEAgLTU2OCwxMSArNTY0LDI3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBT
dHJ1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQp
Cit7CisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CisgICAgc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVp
ZCgpLCBhdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkK
K3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVu
dGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcyk7CisgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAgcmV0dXJuIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1v
dmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewogICAgIEFTU0VS
VCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCkpOworICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIG9mZnNldCkpOwogCiAgICAgaW50IHRyYW5zaXRpb25Db3VudCA9IDA7CiAgICAgZm9y
IChhdXRvKiBzID0gc3RydWN0dXJlOyBzICYmIHRyYW5zaXRpb25Db3VudCA8PSBzX21heFRyYW5z
aXRpb25MZW5ndGg7IHMgPSBzLT5wcmV2aW91c0lEKCkpCkBAIC0xMjAzLDcgKzEyMTUsNyBAQCBS
ZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlIHZh
bHVlLCBib29sJiBzYXdQb2x5UHJvdAogCiB2b2lkIFN0cnVjdHVyZTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBj
bGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCB7Iik7CisgICAgb3V0LnByaW50KFJhd1BvaW50ZXIo
dGhpcyksICI6WyIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaWQoKSkpLCAi
LCAiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCB7Iik7CiAgICAgCiAgICAgQ29tbWFQcmlu
dGVyIGNvbW1hOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAppbmRleCA1MmNkM2M3MWQ5MjBmMmY4YTk3YjQ2MGI5MGUwZWM3MGQ1ZDcxMWFmLi5hZTIwYWU5
NmJhNDAzMmY2YWExZjk0YmUzYzE3NGI3NjNjNzNmYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ2xh
c3NJbmZvLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUgIkRlbGV0
ZVByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKQEAgLTE5MSw3ICsxOTIsOCBAQCBwdWJs
aWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlU
cmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogcmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsK
LSAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3Rp
bmdTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0
JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7
CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0
aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3Rp
bmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRp
b24oVk0mLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSwgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3Ry
dWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVs
bHB0cik7CkBAIC00NzcsNiArNDc5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBib29s
IGhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCopIGNvbnN0OworICAgIGJvb2wgbWF5SGF2
ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0OwogICAgIAogICAgIGJv
b2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAKQEAgLTcxNiw2ICs3MTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGFk
ZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0
Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAKICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRo
ZSBzdHJ1Y3R1cmUgdGhhdCBoYXMgYSB1c2FibGUgcHJvcGVydHkgdGFibGUsIHRoYXQgcHJvcGVy
dHkgdGFibGUsCiAgICAgLy8gYW5kIHRoZSBsaXN0IG9mIHN0cnVjdHVyZXMgdGhhdCB3ZSB2aXNp
dGVkIGJlZm9yZSB3ZSBnb3QgdG8gaXQuIElmIGl0IHJldHVybnMgYQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IDBjZDk4ZDUyYWNj
N2Y3MTRjMDViMTUzZTA4MTM5ZTQ5MWNkOGNmOGMuLmZlMjg1ODc0MDk0ZGFjMzA3MDc1ZDJjNzYx
ZTIzMjJhNDYwMTc1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTIyNCwxMCArMjI0LDIzIEBAIGlubGluZSBib29sIFN0cnVj
dHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKiBjZWxsKSBjb25zdAogICAgIAog
ICAgIGlmICghaXNUeXBlZFZpZXcodHlwZWRBcnJheVR5cGVGb3JUeXBlKG1fYmxvYi50eXBlKCkp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIGpzQ2FzdDxjb25z
dCBKU0FycmF5QnVmZmVyVmlldyo+KGNlbGwpLT5tb2RlKCkgPT0gV2FzdGVmdWxUeXBlZEFycmF5
OwogfQogCitpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hlYWRlcihib29s
JiBtdXN0Q2hlY2tDZWxsKSBjb25zdAoreworICAgIG11c3RDaGVja0NlbGwgPSBmYWxzZTsKKyAg
ICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmICghaXNUeXBlZFZpZXcodHlwZWRBcnJheVR5cGVGb3JUeXBlKG1f
YmxvYi50eXBlKCkpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbXVzdENoZWNrQ2Vs
bCA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGlubGluZSBib29sIFN0cnVjdHVyZTo6
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCkKIHsKICAgICByZXR1cm4gdHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgJiYg
Z2xvYmFsT2JqZWN0KCkgPT0gbGV4aWNhbEdsb2JhbE9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBkZmYxZGYxOWFjODRhOWVkMzY0YjU5N2Q1
ZGQ5ZDA0MWJlYzQ3OGIzLi5kYWFhY2IxNGRmYzBhYzVhZjY0MTA4NGExODliNjYyZTM1MjQ3Y2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC01NTYs
NyArNTU2LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIAotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCisgICAgc3Rh
dGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKICAgICB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMjgyOCw2
ICsyODI4LDE1IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
R2V0Q29uY3VycmVudGx5KEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KHZtLCB0YXJnZXQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGZ1bmN0aW9uLT5hcmVOYW1lQW5kTGVuZ3RoT3JpZ2luYWwodm0pKSk7Cit9CisK
IHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CkBAIC0yOTU5LDYgKzI5NjgsOCBAQCB2b2lkIEpTRG9s
bGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBhZGRGdW5jdGlvbih2bSwgImdldFN0
cnVjdHVyZVRyYW5zaXRpb25MaXN0IiwgSlNEb2xsYXJWTUhlbHBlcjo6ZnVuY3Rpb25HZXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uTGlzdCwgMSk7CiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRDb25jdXJy
ZW50bHkiLCBmdW5jdGlvbkdldENvbmN1cnJlbnRseSwgMik7CiAKKyAgICBhZGRGdW5jdGlvbih2
bSwgImhhc093bkxlbmd0aFByb3BlcnR5IiwgZnVuY3Rpb25IYXNPd25MZW5ndGhQcm9wZXJ0eSwg
MSk7CisKICAgICBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0
YXR1c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhv
dXRDb3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpz
TnVsbCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmggYi9T
b3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCmluZGV4IGNiOGQzYmIwMzA1Mjg5MTA4YThkODgxZjAw
MjMxNDY4NDMyZmFjZjAuLjQ1ODViMTAwYWM3ZGE5NDgyMTRhZDhjOGZmYmIyMTk0YWFjNzBlZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKKysrIGIvU291cmNlL1dURi93
dGYvU3BlY3RydW0uaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBh
ZGQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCA9IDEpCiAgICAgeworICAgICAgICBM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGlmICghY291bnQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwpAQCAtNTgsNiArNTksNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgQ291bnRlclR5cGUgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKICAgICB7
CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgY29uc3RfaXRlcmF0b3Ig
aXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTY2LDggKzY4LDYgQEAgcHVibGljOgogICAgIAog
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgCi0g
ICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9Ci0gICAgaXRlcmF0
b3IgZW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIApAQCAtOTgsNiArOTgsNyBA
QCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb3JkZXJlZCBmcm9tIGxvd2VzdC1jb3Vu
dCB0byBoaWdoZXN0LWNvdW50LgogICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gYnVpbGRMaXN0KCkg
Y29uc3QKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgVmVj
dG9yPEtleUFuZENvdW50PiBsaXN0OwogICAgICAgICBmb3IgKGNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBiZWdpbigpOyBpdGVyICE9IGVuZCgpOyArK2l0ZXIpCiAgICAgICAgICAgICBsaXN0LmFwcGVu
ZChLZXlBbmRDb3VudChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKSk7CkBAIC0xMDYsMTcgKzEwNywy
MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KICAgICAKLSAgICB2b2lk
IGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9CisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAg
ICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAg
fQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCByZW1vdmVJ
Zihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciht
X2xvY2spOwogICAgICAgICBtX21hcC5yZW1vdmVJZihbJmZ1bmN0b3JdICh0eXBlbmFtZSBIYXNo
TWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlwZSYgcGFpcikgewogICAgICAgICAg
ICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBhaXIua2V5LCBwYWlyLnZhbHVlKSk7
CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCiBwcml2YXRlOgorICAgIG11dGFibGUgTG9j
ayBtX2xvY2s7CiAgICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4gbV9tYXA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXgg
MjA1MDZmOGVjZmFjNjUzZTU1YWQwNDgxZGRhNTYwZjVmZDcyYTU0ZC4uZjdhODk1NTdlZDU2YWNl
ZjkxM2E0YTFmNmQ3MjQ2NzUyZTE0Y2Q1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzE0LDEzICszMTQsMTMgQEAgYm9vbCBK
U0RPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBCYXNlOjpwdXRCeUluZGV4KHRoaXNPYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1i
b29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBwcm9w
ZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCiAgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25D
dXN0b20uY3BwCmluZGV4IDFlZjA2YzI2ZWUyNTJkZTY2OGMxZGVkZTkxYzVkZGY2YTBkZGZkZTUu
Ljg0YjlhMTNlMTllYTE4OWRmMzA3NDc2MDY1ZGQzNzNlNTFlNGY2NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNjMsMTMgKzE2
MywxMyBAQCBib29sIEpTTG9jYXRpb246OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdQogICAgIHJldHVybiBKU09iamVjdDo6cHV0
QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRo
cm93KTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNMb2NhdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWxl
dGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNPYmplY3QtPndyYXBwZWQoKS53aW5kb3coKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggZTJlZWRmZDViMGM1YWE3MTg3MGRh
NzY1NDM5N2UzNWI5OWE4MmNhYy4uMGNiNjdlZjI5YzYyYmY4Y2M0NDZhMGVjZTMxYzlmZTUzNTE1
N2E0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3Rl
RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtODIsNyArODIsNyBAQCBib29sIEpTUmVtb3RlRE9NV2lu
ZG93OjpwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFs
dWUsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTUmVtb3RlRE9NV2luZG93OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lKQorYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMzVkYjRkMjhjY2Q2OTA3NGZlMWNjNTVhMDRjOGE4MzE4YjhhNTExOS4uNWZkMjNkZjhkY2Yw
YjNkYTc2NDNlYTUxY2FkODk4OGIzZmQxMGM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTEzMDEsNyArMTMwMSw3IEBA
IHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5CiAgICAgIyBUaGlzIGltcGxlbWVudHMgaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1kZWxldGUg
Zm9yIHRoZQogICAgICMgZm9yIHRoZSBkZWxldGVQcm9wZXJ0eSBvdmVycmlkZSBob29rLgogCi0g
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29s
ICR7Y2xhc3NOYW1lfTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7
CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nh
c3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHN1YiBH
ZW5lcmF0ZURlbGV0ZVByb3BlcnR5CiAKICAgICAjIEZJWE1FOiBJbnN0ZWFkIG9mIGNhbGxpbmcg
ZG93biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHksIHBlcmhhcHMgd2Ugc2hvdWxkIGltcGxlbWVu
dAogICAgICMgdGhlIHJlbWFpbmVkIG9mIHRoZSBhbGdvcml0aG0gb3Vyc2VsdmVzLgotICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNl
bGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIApAQCAtMjY5Niw3ICsyNjk2LDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzRGVsZXRlUHJv
cGVydHkoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Qm
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCk7XG4iKTsKICAgICB9CiAKQEAgLTQzMjQsNyArNDMyNCw4IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIp
LCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9
CkBAIC03NTEyLDcgKzc1MTMsOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhv
ZHMKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJHtydW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwi
KSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5kZXgg
MzA1NDg4NzdhNWNlNDQzNmU1YWU3ODNjZDA3Yjk5YjVlN2I0MjcyOC4uYWNlMTM0NTI5NzU2MTVk
OGRiNTZkMjI0NDcwNTJlY2E2Y2UzMDdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcApAQCAtMTM3LDcgKzEzNyw4IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJs
ZWRCeVNldHRpbmdPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9u
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpAQCAtMTQ1LDcgKzE0Niw4IEBAIHZv
aWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSwgc3RybGVu
KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggZGVlOTZjZWQxZmY5MjYwMGUy
MjkyZWZhM2Y5NDFkNGRkNzdhYzY1YS4uZWMzYjg2Yzk1ZmVlOTJhZWI4ZmFmOGQxM2NjNjM5MzA5
ODkyNWQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAt
MTA4LDcgKzEwOCw4IEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImFTZWNyZXRBdHRyaWJ1
dGUiKSwgc3RybGVuKCJhU2VjcmV0QXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0
dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGZlMjg5NWY3YmQ1OGUxM2NkYWE3OTliOTBlNDhkOWI4
Mjg2MWQ1NjYuLjI5ZWM4NGNiNzc0M2NlYzM0ZjFhOWQ2NjQ1ZDAzNjA0MmYwZTYwYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0xOTAs
MTQgKzE5MCwxNCBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsbwogICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
cywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJp
ZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVy
dHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQotICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKaW5kZXggMGVhNGJiMTFiODYw
NTMwMTE2NTdmZDZlYTYzZjI0NmQ0ZDgyZTUwYS4uMTM4ZDRjMThmOGY0NmJjMzQzMzEwOWJkMDMy
Mzk1NjM3ZDBhYzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlND
OjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAppbmRleCA1MWQxMDAzMzZjOTI2MWZiNTA5ZGNhZTdlZmM0MjQ5YWZhN2Vi
MGE0Li5hOGRhY2IzN2Q1Yzg4ZTJkYTkwYTA2NTY1OTdiOGU2MmM2M2E3NjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAg
LTE5MCw3ICsxOTAsNyBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsCiAgICAgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0g
KmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KGNlbGwpOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBi
b29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsTwogCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCk7CiAgICAgfQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
Y2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b246OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgKaW5kZXggNzkxYmUxODJlYjFiMzY5
NjkyMWRlOTc2OTUyNzI5ZjBiNGYwYjM0YS4uMDU1ZDNkZjkyMzgxOGMwMDc2N2YxODk1ZGY2NzI1
ZjViYzBlZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAKaW5kZXggNGE4MGZmNTg4MDZlNzVhMjM3Mzc5NTA4MmE4MTA3OWI5ZjJl
YWJlNy4uZjZjOTAxYmExN2JkZDlhMmUwZDc0OTUxMWJkNmI1N2U3MDZlOWE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0cKICAgICBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplCiAgICAgICAgIGltcGwubmFtZWREZWxldGVyKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJu
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaAppbmRl
eCA1NGUwMjU0NzhlMWRjMzk5MDcwNzMzZTQ5OWIwMTYzMTQ5MDEyNDllLi5hODU4YTI3MTU0YmQz
YzYzNjRmYzQ1YTY0N2ZmNDJiNmI0NzI1MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51
bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6
OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCA5NTM5MDBjMjFlMmYzNjg5ZWM1
ZDViZmI5OGFjYmEyMTUzYTI4M2YxLi5kNTE1OTBjYjY0OGQxZDZhYmFiMGUxOWVkZjhhMDJjOTAy
Yjc0YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
CiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBh
dXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKQEAg
LTIxOCw3ICsyMTgsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsTwogICAgIGlmIChpc1Zpc2li
bGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICByZXR1cm4gaW1wbC5kZWxl
dGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAg
IH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5oCmluZGV4IGE5OTQ1YmFmYzYxMTQzZTU3NmZmZDYwZmVjOGVlZTY5
NjRiOWYwMzAuLjJmZWE4ZDkwZjRmNGExODQyYzhlMTkyYWYzNWQ4NWM3ZDE4Njg5ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0
aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcAppbmRleCA3NjQ5MDZmYTdhZDhiNDUxNWMxNzZmMzVjMjI0MDA3M2ZiYzAzNTAx
Li4wOGVkZmY4ZGQ1ZjNkYzc4ZTc4YWEwZDgxMGM0ZTE3ZTlmZDJkNzAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
CkBAIC0xNTcsNDUgKzE1Nyw1MiBAQCB2b2lkIEpTVGVzdE5vZGVQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQi
KSwgc3RybGVuKCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c1NlY3VyZUNvbnRleHQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImdldFNlY3JldEJvb2xlYW4i
KSwgc3RybGVuKCJnZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAg
ICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJ0ZXN0
RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImVudHJpZXMiKSwgc3RybGVuKCJlbnRyaWVzIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigia2V5cyIpLCBzdHJsZW4oImtleXMiKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ2YWx1ZXMiKSwgc3RybGVuKCJ2YWx1ZXMiKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFi
bGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmb3JFYWNoIiksIHN0cmxlbigiZm9yRWFjaCIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
ICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0Rp
Y3Rpb25hcnkoKSkKICAgICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAppbmRleCBhOTg5MzBlMjk1MTQxNzQ1NTFkMTAwYTlmNzg3NWJjYTBlZWZhMmNlLi5iODNjYWVh
NTAyNjc3Mjc3MzEwZDlhZWVmYjk3NWJmYzZmYWViM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTk4NCwx
NCArMTk4NCwxNiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYgogICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkgewog
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0
YXRpYyIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkgewogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpLCBzdHJsZW4o
ImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTIzNDcsOTAgKzIz
NDksMTA0IEBAIHZvaWQgSlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpLCBzdHJsZW4o
ImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmICghKHdvcmxkRm9yRE9N
T2JqZWN0KCp0aGlzKS5zb21lV29ybGQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
ImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIiksIHN0cmxl
bigiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQiKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBp
ZiAoIXdvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS5zb21lV29ybGQoKSkgewogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSwgc3RybGVuKCJ3b3JsZFNwZWNpZmljTWV0aG9k
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSwgc3RybGVuKCJjYWxjdWxhdGVTZWNyZXRS
ZXN1bHQiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImdldFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJnZXRTZWNyZXRCb29sZWFu
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1
cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50
ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ0ZXN0RmVhdHVyZUdl
dFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNl
bmRpZgogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIpLCBzdHJsZW4oImNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2Vk
VG9Xb3JrZXJGdW5jdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQo
KXx8IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5hbGxvd3NNZWRpYURldmljZXMoKSkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJtZWRpYURldmljZXMiKSwgc3RybGVuKCJtZWRpYURldmljZXMiKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIShqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCl8fCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aGFzU2VydmljZVdvcmtl
clNjaGVtZSgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInNlcnZpY2VXb3JrZXJzIiksIHN0cmxl
bigic2VydmljZVdvcmtlcnMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
LSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVy
ZTFFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVu
YWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdy
aXRlQXR0cmlidXRlIiksIHN0cmxlbigicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRy
aWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlIiksIHN0cmxlbigi
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhw
b3NlZFRvV29ya2VyQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgLy8gQWRkaW5nIGJhY2sgYXR0cmlidXRlLCBidXQg
YXMgcmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSByZWFkLXdyaXRlIHZhcmlhbnQgYWJvdmUu
IAogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0
RmVhdHVyZUVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9q
c29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4
IGZlZWJkZWY3YmM0NWU5OGM5MzA4ZmRmYmRlMTEwYjk5ZmRkZGNhMmMuLjMyYzEzYjllYjQwNzA4
MzVlYjI1ODM3MTk2ZDc4MzI1OGFjNTk3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcApAQCAtMzkxLDggKzM5MSw5IEBAIGJvb2wgX05QTl9SZW1vdmVQcm9wZXJ0eShOUFAs
IE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlm
IChpLT5pc1N0cmluZygpKQotICAgICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJG
cm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmplY3QsIGktPnN0cmluZygpKSk7CisgICAg
ICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmotPmlt
cCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIobGV4aWNh
bEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpLCBzbG90KTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KG9i
ai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5udW1iZXIoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCAyMmYwYjhkOWQ4ZmFl
NGE3OWM2YjYzMWU5MzVjYjZhZGM3ZDk0ZmZmLi5kYmM2ZDNiMWUxOWY5YzIxZDliNjBjMTdlZGZm
OTcxNjAwNjdjMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tCkBAIC00NTcsOCArNDU3LDkgQEAgLSAodm9pZClyZW1vdmVXZWJTY3JpcHRLZXk6
KE5TU3RyaW5nICopa2V5CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgIEpTQzo6RGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CiAKLSAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShbc2VsZiBfaW1wXSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgU3RyaW5nKGtleSkpKTsKKyAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nKGtleSkpLCBzbG90KTsKIAogICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25z
b2xlKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaAppbmRleCA1ZWQyMWYxMzRlZjRhYWI1ZGMwYzU1YTQ1ZGU2YTYzZDI3YzZiZTJl
Li42MjI5NjM2OGViYjkwYzUwYjlkZTdmYTA3ODJjOWM2ZmEyODU5MTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogCiAgICAgYm9vbCB0
b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlz
IGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZp
cnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUgbG9uZ2VyIHRlcm0uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMTllZDE5Y2JjN2FlM2Vl
NDY3Nzk2YjEwM2NiZmU3NjE2MDlhZDczMC4uNmU4NzdkMmViN2Y0NGQwM2EyOGUxNzEwODNiZDNk
MGYwYmI5ODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjkwLDcgKzI5MCw3IEBAIENhbGxUeXBlIE9iamNGYWxsYmFja09iamVjdEltcDo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAgICAgcmV0dXJuIENh
bGxUeXBlOjpIb3N0OwogfQogCi1ib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIE9iamNG
YWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDRkMjk3Yzcw
ZDZiMWI2YzFhZjg4ZjkxNGJlODVmNjBkZjAzY2M5YjEuLmVjMzU4OGZjNTY1OTU1M2Y1MjcyODNj
NThhNzM1ODAyMTMyOWFjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgIHJldHVy
biB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZhbHVlQXQobGV4aWNhbEdsb2Jh
bE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKIH0KIAotYm9vbCBSdW50aW1lQXJyYXk6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBSdW50
aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IGZjZjVlMzNmYjExNDAxODUxMDc5
OTMwZmJkMTE3NjEzNTQ1MmM3ZTYuLjI5ODEyYTY2ZDZmMDEyNGUzODM2MjVmOTU2MDE5Y2EzM2Jj
M2JkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSk7CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0TGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9hcnJheS0+Z2V0TGVuZ3RoKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCmluZGV4IGEwMzZiNjY2MmQ0ODcyZjY4ZGM1MjY0NWJhMWFmMmJhMTUzMzAzMmQu
LjlkNWQ2MGRlZjM1NzU0YmUxZTBlMDYyMGU0MWVkYjk4ZWZlMzllZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIGJvb2wgUnVu
dGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBSdW50aW1lT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSkKK2Jvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgLy8gQ2Fu
IG5ldmVyIHJlbW92ZSBhIHByb3BlcnR5IG9mIGEgUnVudGltZU9iamVjdC4KICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCmluZGV4IDZjYmY3YmY3
OTZiMGE4OTQwNGI5NDIyNzVkNjUxZTYwZTczMjQ1ODIuLjNjMTBkOGJkNTBmM2I3ZGFhNDg0MjIx
NGI5ZTA0ZjA0M2FmZGYyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5o
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIEpTVmFsdWUg
ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggMmVmYjIyNTIzZjky
MWU5MmFiZDAyMTZlYjBjZDFmZmQxMDAzNjJiZS4uMDVkMTI5MjkzOTU4MmYwNGM0MzJkMzBjMTQy
ZGJhNWRhYTBiZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBib29s
IEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgSlNOUE9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNOUE9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNOUE9iamVjdCo+KGNlbGwpLT5kZWxldGVQ
cm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihw
cm9wZXJ0eU5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCA4NTU4ODk0OWEzMDYwNGM2OWY3N2Nj
YzNmNjBlNTQ2OTc3ZmZhYzZkLi40ODAzYzBiYzU3MWY5NzdkZGMyNzIyYmJhYjk2YjZkMjdjMmE5
Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSk7CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBO
UElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggMzZmMjhlZTZm
YjAxMDJkOGMxNzcxM2M2MDhiNjE0ZWFmODVkZGI3Ni4uOGI5ZmNkZjMwODUyZDFkMjIyYTViM2Jk
NTkwNmRhNGJhZmU0M2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTIyOSw4ICsyMjksOSBAQCBi
b29sIE5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUp
CiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2pzT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG1fanNPYmplY3QuZ2V0KCksIGxleGljYWxHbG9iYWxP
YmplY3QsIGlkZW50aWZpZXIpOworCisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG1fanNP
YmplY3QuZ2V0KCksIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNsb3QpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9qc09iamVjdC0+aGFzUHJvcGVydHkobGV4aWNhbEds
b2JhbE9iamVjdCwgaWRlbnRpZmllclJlcC0+bnVtYmVyKCkpKSB7CiAgICAgICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCmluZGV4IDMwMzJhZmEyODBmYTkyN2Q4NzczMjBlYjgxY2JkOTA3MTAyNTU5N2UuLjEyY2U0
MDljNTQzYzIyODgyMjc3MTliMmQ0MTA4YmYyYTg3OWQ0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTExNDEsOCArMTE0MSw5IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0eSh1aW50MzJfdCBvYmplY3RJRCwg
Y29uc3QgSWRlbnRpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNjUyMTJmZmExZDc1YTk0MTY2MWYzNzZjOWQyZWMwNTk1MmYzYjg2OC4uNGUxZTk4ZDM0
OTkyNWZlZjg4Nzg1YWNlMTVlNTJiYTRhYTczMzFjMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMC0wMi0x
NCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAg
SW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1m
cm9tLXByb3RvdHlwZS1jaGFpbi5qczoKKyAgICAgICAgKGRlbGV0ZS5DLnByb3RvdHlwZS56KToK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1w
b2x5bW9ycGhpYy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0
X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5v
SW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RQb2x5bW9ycGhpY0RlbEJ5
VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRf
ZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAg
IChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAgICogbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAg
ICAgICAgKGFzc2VydF90aHJvd3MpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5l
LmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQu
bm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Ro
cm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0
ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0
Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFi
bGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzOgor
ICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4K
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0
X25lcSk6CisgICAgICAgIChhc3NlcnRfdGhyb3dzKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2Vy
dC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRf
dGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLm1ha2VGb28pOgorICAgICAgICAobm9Jbmxp
bmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5l
LmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VG
b28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAgICAgIChu
b0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRl
QnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRl
c3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lubGluZS50
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6
CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0
ZUluZGV4Lm1ha2VGb281KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgpOgorICAgICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUlu
ZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC50ZXN0QmlnaW50RGVsZXRlQnlWYWwubWFrZUZv
bzcpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwudGVzdEJpZ2lu
dERlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RCaWdpbnREZWxldGVCeVZhbC50
ZXN0U3ltYm9sRGVsZXRlQnlWYWwubWFrZUZvbzgpOgorICAgICAgICAobm9JbmxpbmUudGVzdEJp
Z2ludERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0U3ltYm9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0ZUJ5VmFsLm1ha2VGb285KToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xEZWxldGVCeVZhbC50ZXN0T2JqRGVsZXRlQnlWYWwp
OgorICAgICAgICAobm9JbmxpbmUudGVzdE9iakRlbGV0ZUJ5VmFsLnRlc3RTdHJpY3QubWFrZUZv
bzEwKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmpEZWxldGVCeVZhbC50ZXN0U3RyaWN0KToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RTdHJpY3QudGVzdE92ZXJyaWRlLmFyci5qKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RTdHJpY3QudGVzdE92ZXJyaWRlKToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RPdmVycmlkZSk6CisKIDIwMjAtMDItMTQgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZDogZml4IGJyb2tlbiB0ZXN0cyBhZGRlZCBp
biByMjU2NjY1CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJv
cGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKaW5kZXggNDlhMzFiN2YyNDdj
MWJkMGFjYTgyY2IyMmRmMjBlOGYxYmY2MWJkZC4uNTRiYmE4MmU2OTljNjJjY2NhODk0NTE2ZTYy
YjdlNmNhMWY1MTIwMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRk
ZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFw
cGxlIFdhdGNoLwogZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIpCiAgICAgICAgIHRo
cm93IG5ldyBFcnJvcjsKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gZG9UZXN0KHpWYWwpIHsK
IH0KIG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7Citm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKICAgICBjb25zdCBYID0geyBpIH0KICAg
ICBDLnByb3RvdHlwZS56ID0gWAogICAgIGRvVGVzdChYKQpAQCAtMzYsNyArMzYsNyBAQCBmb3Ig
KGxldCBpPTA7IGk8MTAwMDA7ICsraSkgewogCiBkZWxldGUgQy5wcm90b3R5cGUuegogCi1mb3Ig
KGxldCBpPTA7IGk8MTAwMDAwMDsgKytpKSB7Citmb3IgKGxldCBpID0gMDsgaSA8IDIwMDAwMDA7
ICsraSkgewogICAgIGdldFooe3o6IGl9KQogICAgIGRvVGVzdCh1bmRlZmluZWQpCiB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNh
Y2hlLXBvbHltb3JwaGljLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmFmZmFjOThlNTYz
ZDVmMzdmNmVlMjA5MDg1ZDY0ODNjOTY4MWQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5q
cwpAQCAtMCwwICsxLDUzIEBACitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYg
KCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIp
OworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiAr
IGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09
ICIgKyBiKTsKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5s
aW5lKGFzc2VydF9uZXEpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsK
KyAgICBmdW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvb1siYmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZv
b1siYmF6IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b282KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAg
ICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciK2pdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciK2pdID09IDMpCisgICAgICAg
IGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5
bW9ycGhpY0RlbEJ5VmFsKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDMwMDAwOyArK2kpIHsKKyAg
ICB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDk5MTJkYTRiYmJhYWQwNTIxZTU1MTI1YzkwN2U1ZmIyY2RjMTRlNAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anMKQEAgLTAsMCArMSwxNzQgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdhdGNo
LworCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlv
biBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitmdW5j
dGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAg
ICB0cnkgeworICAgICAgICBmdW4oKQorICAgIH0gY2F0Y2ggeworICAgICAgICB0aHJldyA9IHRy
dWUKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KQorfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9Jbmxp
bmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25vSW5saW5lKGFzc2VydF90aHJv
d3MpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9u
IG1ha2VGb28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQor
ICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1
cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcgQXJy
YXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJy
W2pdID0gbWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAg
ICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAg
ICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIg
aW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKwor
ZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VG
b28yKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAg
ICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJu
IGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFyciA9IG5ldyBBcnJh
eSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAg
ICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAg
ICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIg
aW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCkK
KworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlv
biBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAx
CisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwg
dHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0K
KyAgICBub0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9v
MygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNz
ZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0
KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2Vy
dChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RD
YWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVC
eUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAgICAgICAgbGV0IGZvbyA9
IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFz
c2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBm
b28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisK
KyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAg
ICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNz
ZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvby5m
b29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pd
CisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmpl
Y3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAg
ICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAz
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDsg
KytpKSB7CisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVE
ZWxldGVCeVZhbCgpCisgICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanMKaW5kZXggNzc5NWRjNTgxNTc4ZTRjMzk4MWMyMmFjODc2YzQ1NTQxM2U2NGQz
Yy4uYTkzOWFhZTNhYzhhY2NjMjIxNGRkN2U3ZDgwMjQ0MjFhODE2NDVkOSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMKQEAgLTI0LDUgKzI0LDUgQEAgZnVuY3Rpb24g
ZG9UZXN0KCkgewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAw
MDAwOyArK2kpIGRvVGVzdCgpCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7ICsraSkgZG9U
ZXN0KCkKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGlu
ZS1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGUwZGEwMTMxNTkxMTlmNjAzMDBmZDEwZTIxY2MxYTQ4Y2U3NmJiOQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUt
Y2FjaGUuanMKQEAgLTAsMCArMSw0MjEgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUJpZ0ludD10
cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9u
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZnVuKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcg
PSB0cnVlCisgICAgfQorICAgIGFzc2VydCh0aHJldykKK30KK25vSW5saW5lKGFzc2VydCkKK25v
SW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCitub0lubGluZShhc3NlcnRf
dGhyb3dzKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5j
dGlvbiBtYWtlRm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9
IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAg
cmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3
IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQp
CisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBt
YWtlRm9vMigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlW
YWwpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXIsIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFr
ZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBm
b28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAg
ICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxl
dGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVl
KQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAg
ICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAg
fSk7CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShm
b28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZSht
YWtlRm9vNCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisg
ICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEo
T2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZv
bykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisg
ICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2Z1bmN0aW9uIHRlc3REZWxldGVJbmRl
eCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNSgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9Cisg
ICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGZvb1swXSA9
IDIzCisgICAgICAgIGZvb1sxXSA9IDI1CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJh
ciwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb29bMV0sIHRydWUpCisgICAgICAg
IGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUo
bWFrZUZvbzUpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzUoKQorICAgIH0KKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBh
cnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGlu
IGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEp
CisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsg
al0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0
KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1swXSwgMjMpCisgICAgICAg
IGFzc2VydF9lcShmb29bMV0sIHVuZGVmaW5lZCkKKyAgICAgICAgZm9vWzFdID0gMQorICAgICAg
ICBhc3NlcnRfZXEoZm9vWzFdLCAxKQorICAgIH0KK30KK25vSW5saW5lKHRlc3REZWxldGVJbmRl
eCkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkgeworICAgIGZ1bmN0aW9u
IG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vWyJiYXoiK2ld
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiK2ldCisg
ICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzYpCisKKyAgICBh
cnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBh
c3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbyku
bGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZv
by5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVn
IiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHlt
b3JwaGljRGVsQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RCaWdpbnREZWxldGVCeVZhbCgpIHsKKyAg
ICBmdW5jdGlvbiBtYWtlRm9vNygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZv
b1sxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbl0gPSAxCisgICAgICAg
IGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MG5dCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9Jbmxp
bmUobWFrZUZvbzcpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzcoKQorICAgIH0K
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28g
PSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0
X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbiBpbiBmb28pKQorICAgICAgICBmb28u
YmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIg
KyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFz
c2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0QmlnaW50RGVs
ZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpIHsKKyAgICBjb25z
dCBzeW1ib2wgPSBTeW1ib2woJ2ZvbycpOworCisgICAgZnVuY3Rpb24gbWFrZUZvbzgoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEKKyAgICAgICAgYXNz
ZXJ0KCEoU3ltYm9sKCdmb28nKSBpbiBmb28pKQorICAgICAgICBhc3NlcnQoc3ltYm9sIGluIGZv
bykKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisgICAg
ICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzgpCisKKyAgICBhcnIg
PSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgYXJyW2pdID0gbWFrZUZvbzgoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3Nl
cnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVu
Z3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJh
ZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsg
al0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3Nl
cnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFN5bWJvbERlbGV0
ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0T2JqRGVsZXRlQnlWYWwoKSB7CisgICAgY29uc3Qgc3lt
Ym9sID0geyBpOiAiZm9vIiB9OworCisgICAgZnVuY3Rpb24gbWFrZUZvbzkoKSB7CisgICAgICAg
IGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEKKyAgICAgICAgYXNzZXJ0KHN5
bWJvbCBpbiBmb28pCisgICAgICAgIGFzc2VydCghKHsgaTogImZvbyIgfSBpbiBmb28pKQorICAg
ICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5bWJvbF0KKyAgICAgICAgcmV0
dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOSkKKworICAgIGFyciA9IG5ldyBB
cnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBh
cnJbal0gPSBtYWtlRm9vOSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28u
YmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEp
CisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T2JqRGVsZXRlQnlWYWwpCisK
K2Z1bmN0aW9uIHRlc3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rp
b24gbWFrZUZvbzEwKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9
IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6
LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisKKyAgICAg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAgICB2YWx1
ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsKKyAgICAg
ICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgZm9vLmZvb2JhcikKKyAgICAgICAgYXNzZXJ0
X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5s
aW5lKG1ha2VGb28xMCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0
IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMTAoKQorICAg
IH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBm
b28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNz
ZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6
IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9
PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdE92ZXJyaWRlKCkgeworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSBmdW5jdGlvbigpIHsgfQorICAgICAgICBhc3NlcnRfZXEoJHZtLmhh
c093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIHRydWUpCisgICAgICAgIGRlbGV0ZSBhcnJbal0u
bGVuZ3RoCisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJvcGVydHkoYXJyW2pd
KSwgZmFsc2UpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5
cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RPdmVy
cmlkZSkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0
Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MoKQorICAgIHRlc3REZWxldGVJbmRleCgpCisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwo
aSkKKyAgICB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKQorICAgIHRlc3RTeW1ib2xEZWxldGVCeVZh
bCgpCisgICAgdGVzdFN0cmljdCgpCisgICAgdGVzdE92ZXJyaWRlKCkKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391075</attachid>
            <date>2020-02-18 11:53:24 -0800</date>
            <delta_ts>2020-02-18 13:04:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200218115323.patch</filename>
            <type>text/plain</type>
            <size>216427</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2ODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NTVlOTIwMjBlMzczMjRhOGJjZjBjYWEzNTNmNzc4ZmUxYTMxYWQwLi43MzczZTI0ZDRmYzE0YjA1
NjJhZWRjYzZhMmFiOWQwNzI4MDk4NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTE3ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSklUVGh1bmsg
c2hvdWxkIGJlIEhhc2hTZXQ8V2VhazxOYXRpdmVFeGVjdXRhYmxlPj4gd2l0aCBhcHByb3ByaWF0
ZSBHQyB3ZWFrbmVzcyBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBmMTc0NjcxMGIxYmQwM2M3MGU4MWY3ZGU0ZWIz
NzYyNTc5ZDJjMzQ0Li5iYmNjM2JjZTY0MTUyZDg4MzZmMTVjZjc4YzEyODQxMjM5NDViOGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9t
aWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3Zh
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
U3BlY3RydW0uaDoKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmFkZCk6CisgICAgICAgIChXVEY6
OlNwZWN0cnVtOjpnZXQgY29uc3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YnVpbGRMaXN0
IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmNsZWFyKToKKyAgICAgICAgKFdURjo6
U3BlY3RydW06OnJlbW92ZUlmKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJlZ2luKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6U3BlY3RydW06OmVuZCk6IERlbGV0ZWQuCisKIDIwMjAtMDIt
MTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW92
ZSBmcm9tICJsYXllciBmbHVzaCIgdGVybWlub2xvZ3kgdG8gInJlbmRlcmluZyB1cGRhdGUiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYzk4YzQyZmZmMDNmYjRlOTliYjNlZTk5MWRhZGNkZmFiZmY3MzkwMC4uYWI4
MzJjN2IzZTU1ZTM5MTMyYzMyMTkxZmFjNGRjMWM3YzFiYzE4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU1IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFw
cGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTUmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZURlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhv
ZHMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgICogYnJp
ZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3Qg
cmVtb3ZlV2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFy
cmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9y
dW50aW1lX29iamVjdC5oOgorCiAyMDIwLTAyLTE4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bUXVpcmtdIEFkZCBhZGRpdGlvbmFsIGVzY2FwZSByZWFz
b24gdG8gY292ZXIgdGhlIGNhc2Ugd2hlbiBib2R5IG5lZWRzIGFjY2VzcyB0byBib3RoIHRoZSBi
b2R5IGFuZCB0aGUgSUNCIGdlb21ldHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIyYzJjMjI0MDkxYjAxOTg4MTZi
Zjg1MzI4NWUzZTA1NTlkMzViOTEuLmEzZmI4YmMwYjY1Yzc1N2JiY2E3NmFhZGM5OWNmYTkyYjQ1
NmVjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNo
YXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBk
ZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
UEpTT2JqZWN0OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAtMDItMTggIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgW1VJRGV2aWNlIGN1cnJlbnRE
ZXZpY2VdIGNhbGxzIHRvIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCAxNTFkN2NmMmM1ZTFlZWEyMDcwZTE1NzhkZGRjOTI3OWZiM2NmZGUwLi43ZTM1NGNhNDljMjk1
OTFmNzQ1YTRlMzBmYjAwOWIwNWQxNmM5YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21p
Y2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAt
MDItMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
TW92ZSBmcm9tICJsYXllciBmbHVzaCIgdGVybWlub2xvZ3kgdG8gInJlbmRlcmluZyB1cGRhdGUi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDAz
NGIzNTdjMDczOGUzNDkxMjU4ODU4ZDcwNjk4OWZlZmNiNDgzM2QuLjkyY2E5MjQ3Nzk2MmJjMDRj
N2E4ZWI4NmExZjQxNWQyYjE4N2YzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkKTsKIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggY2Q1MTFi
ZmQyODRhMDEzMjUyYTY0MDVhNjcwN2FhZDEzN2ExYmNjYi4uNGJlYzMzYTcyZGMyODQ3N2E2MTM1
NmZkYjkyMGE0NzY4NjJlZDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQx
OCw3ICs0MTgsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxh
dGUgPGNsYXNzIFBhcmVudD4KQEAgLTQyNiw3ICs0MjYsOCBAQCBib29sIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplYwogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgSlNDYWxsYmFj
a09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7Ci0g
ICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUp
KTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAppbmRleCBmN2Y5ZGFiM2YyOGFkYzBlYWJiMmJkZThiMjUwNjc3MmFkMjVmZmNlLi45ZGY4Nzhl
NTg4ZmEyYWVmMDYyMmFjNjk1ODc4MWFiZTY3YTM3ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNDc5LDcgKzQ3OSw4IEBAIGJvb2wgSlNPYmplY3RE
ZWxldGVQcm9wZXJ0eUZvcktleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4
Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7
CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTM0LDcgKzUzNSw4IEBAIGJvb2wgSlNPYmplY3REZWxl
dGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5n
UmVmIHByCiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAKLSAgICBi
b29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsKKyAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pLCBzbG90KTsKICAgICBoYW5kbGVFeGNlcHRpb25J
Zk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFlNDI3YzMwYzUxMTYzZWRkOWYx
MDZkNDJmOTVlMDlkMDJiZTljNC4uNzU1NmU5NTZmYzYzMmY3ZTJiOWQwZTFhZGJmN2NhODFmOGU4
ZjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODE1LDYgKzgxNSw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVu
dGltZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAogICAg
IHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKKyAgICBydW50aW1lL0RlbGV0ZVBy
b3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaAogICAgIHJ1
bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmNDJjMmFlOGZlNTkyYmY2ZDY4Mjg1
Mzg5NzZkMGNmNmRhNmRiMWYuLmZiNzQ1NjUxN2Y4Zjc0YzY5ZjFjOWQ1YmRjMjAyYzRmNmU0NDE4
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDYgKzExNzgsNyBAQAog
CQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAx
MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFGREJF
QTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAv
KiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERl
bGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTczRTM3
OTk0MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMz
NTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1OTNDODk4QkU3MTRBNjRC
RTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0RCAvKiBXYXNtQ29u
dGV4dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAw
NTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzk3MSw2ICszOTcyLDcgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzM0QjY1NTQy
M0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3Ry
ZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VM
b29wU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNN
b2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVM
b2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODQsNiArNzA4Niw3IEBA
CiAJCQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAog
CQkJCUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJ
MTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICov
LAorCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAq
LywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAq
LywKIAkJCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggKi8s
CiAJCQkJMEZFMDUwMEQxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5j
cHAgKi8sCkBAIC05MjA5LDYgKzkyMTIsNyBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFC
NyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJv
cGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkg
LyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBCQkZE
MDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkw
MzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDY2Miw3ICsxMDY2Niw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAv
KiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1
dGVzID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJ
CQlEZWZhdWx0QnVpbGRTeXN0ZW1UeXBlRm9yV29ya3NwYWNlID0gT3JpZ2luYWw7CiAJCQkJTGFz
dFN3aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDJh
ZjQ4MGE5Y2U3ZDgwMjVjZTU4ODNkOGFkZjljOTg0MjY5YmE5NzUuLjhlZGUyODQ4ZDJjOWFmOWVm
MzhiNjRhNjQzOTlmYjEyMWI5ZTYzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTczLDYgKzczLDggQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5N
aXNzOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlz
czoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmlu
Z0xlbmd0aDoKQEAgLTEwNiw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0x
MjMsNiArMTI1LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAK
K3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCisg
ICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBu
ZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Cisg
ICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ugc28gdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2RlIGJl
bG93LgorICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgbmV3U3RydWN0
dXJlLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKKworICAgICAg
ICBpZiAobWF5TmVlZFRvQ2hlY2tDZWxsKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7
IH0sIHsgfSkpOworfQorCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CkBAIC0yNjIs
NiArMjgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2go
KSBjb25zdAogICAgIGNhc2UgTG9hZDoKICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBh
IGJ5X3ZhbCBmb3IgdGhlc2UgcHV0cywgYnV0IHdlIGRvIGNhcmUgYWJvdXQgdGhlIGlkZW50aWZp
ZXIuCiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVs
ZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxh
Y2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTMwOSw2ICszMzAs
OSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0eUNoZWNrKCkgY29uc3QK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRp
b246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6Cisg
ICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzU2LDYgKzM4MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
TG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBE
ZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVw
bGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNDQ3LDYgKzQ3
NCw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwoVk0mIHZtLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6
CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToK
KyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAg
ICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAg
LTQ5Miw2ICs1MjIsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmRvZXNDYWxscyhWTSYgdm0sIFZlY3Rv
cjxKU0NlbGwqPiogY2VsbHNUb01hcmtJZkRvZXNDYWxscykgY29ucwogICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6CiAgICAgICAgIGRvZXNDYWxscyA9IHRydWU7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAg
IGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBSZXBsYWNlOgogICAg
IGNhc2UgTWlzczoKQEAgLTYxNCw2ICs2NDcsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxh
Y2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpIGNvbnN0CiAKICAgICBjYXNlIExvYWQ6CiAgICAg
Y2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNjYzLDcgKzY5OSw3IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJwcm90b3R5cGUgYWNjZXNzIGNoYWluID0gIik7CiAgICAgICAgIG1fcG9seVBy
b3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3RydWN0dXJlKCksIG91dCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRy
YW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSgpKSwgIiAtPiAiLCBwb2lu
dGVyRHVtcChuZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICBlbHNlIGlmIChtX3N0cnVjdHVyZSkK
ICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1w
KG1fc3RydWN0dXJlLmdldCgpKSk7CkBAIC03MDUsNiArNzQxLDcgQEAgYm9vbCBBY2Nlc3NDYXNl
Ojpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRvcikgY29uc3QKIAogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgogICAgICAgICBpZiAodmlzaXRvci52bSgpLmhlYXAuaXNNYXJrZWQobV9zdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fc3Ry
dWN0dXJlLmdldCgpKTsKICAgICAgICAgZWxzZQpAQCAtMTg1MSw3ICsxODg4LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwo
c3BpbGxTdGF0ZSwgcmVzdWx0UmVnaXN0ZXJUb0V4Y2x1ZGUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkp
IHsKICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAgICAgIHZhbHVlUmVn
cywKQEAgLTE4OTYsNiArMTkzMyw3MSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c2xvd1BhdGguZW1wdHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYXNlIERl
bGV0ZTogeworICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgYWxs
b2NhdG9yLmxvY2soYmFzZUdQUik7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIp
OworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFz
QmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmlzUHJv
cGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHZh
bHVlUmVncy5ncHIoKSk7CisgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIpOwor
ICAgICAgICBBU1NFUlQodmFsdWVSZWdzLmdwcigpICE9IHNjcmF0Y2hHUFIpOworCisgICAgICAg
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUg
PQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5n
KGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFT
cGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIGJvb2wg
aGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVy
KG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNh
c2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4KKyAgICAg
ICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFtYXlOZWVkVG9DaGVja0NlbGwpOworICAgICAg
ICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ug
b3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAgICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0
dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVh
ZGVyOworCisgICAgICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOworCisg
ICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkpIHsKKyAgICAg
ICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIGJhc2VHUFIpOworICAgICAgICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAg
ICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAg
ICAgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlKG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdzLAorICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbkJ1dHRlcmZs
eShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHVp
bnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KG5ld1N0cnVjdHVy
ZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRzKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAg
ICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpKTsKKworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lz
dGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3VjY2Vl
ZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVOb25Db25maWd1
cmFibGU6IHsKKyAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihm
YWxzZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU1pc3M6IHsKKyAgICAg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0cnVlKSwgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheUxlbmd0aDogewogICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuaAppbmRleCA3OWQzMTAxNTVlOTNhNTQ1M2QyODYxYzQzMjI3YmEzYmFjMTlm
Mjc3Li5jNmM4MTg0NDYzNDFkMGE0M2M2N2FlYzkzMTgzMzM3NDc4N2QxODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTg1LDYgKzg1LDkgQEAg
cHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBMb2FkLAog
ICAgICAgICBUcmFuc2l0aW9uLAorICAgICAgICBEZWxldGUsCisgICAgICAgIERlbGV0ZU5vbkNv
bmZpZ3VyYWJsZSwKKyAgICAgICAgRGVsZXRlTWlzcywKICAgICAgICAgUmVwbGFjZSwKICAgICAg
ICAgTWlzcywKICAgICAgICAgR2V0R2V0dGVyLApAQCAtMTQ2LDggKzE0OSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBzdGQ6OnVuaXF1ZV9wdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7CiAKICAgICAvLyBUaGlzIGNyZWF0ZSBt
ZXRob2Qgc2hvdWxkIGJlIHVzZWQgZm9yIHRyYW5zaXRpb25zLgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYs
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPik7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICAgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUpOwogICAgIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIApAQCAtMTU3LDcgKzE2Myw3IEBAIHB1
YmxpYzoKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0
aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0K
QEAgLTE2NSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24pOwor
ICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSk7
CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4
IDEzMjQwOWMwYTQ1MTBiZGZhOGVjZTMzYjc0MzQ3MTYwMmQ3YjBlNzkuLmIxNjZjMzBjMThhNTIz
YTc2MjVmMzlhZjZiNzg5NTA2N2FhNWYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNzk1LDYgKzc5NSwxNSBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNjZXNz
VHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2FzZTo6VHJhbnNpdGlvbjoKICAgICAgICAgb3V0
LnByaW50KCJUcmFuc2l0aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nh
c2U6OkRlbGV0ZToKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGUiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgICAgICBv
dXQucHJpbnQoIkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU1p
c3MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzQ2FzZTo6UmVwbGFjZToKICAg
ICAgICAgb3V0LnByaW50KCJSZXBsYWNlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4
IDYxNzg3MzdmOWY4YTljZDBiNmRkYWQ1N2YxY2YxMmVmZTRmY2E3MDUuLjk2YTFiYWVjYmU0Y2Ji
Yjc2ZGJkZWRhODA1NjVhMmM1OTg2NTUyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjc2LDYgKzI3NiwxMiBA
QCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAg
ICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigq
dGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoK
KyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWw6CisgICAg
ICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7
CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCBkZGNl
ODVlYzAyNTU1NzZjOWUzNDUxZjY0NzM2ZDEyYzM4OTQyODAzLi5iNTc1YmRkMjE2MTljMmRmZTRm
MTgyZmFlZDkwZjI2OGU5ZTI2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTUsNyArNTUsOSBAQCBlbnVtIGNsYXNz
IEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdldEJ5VmFsLAogICAgIFB1dCwKICAgICBJbiwK
LSAgICBJbnN0YW5jZU9mCisgICAgSW5zdGFuY2VPZiwKKyAgICBEZWxldGVCeUlELAorICAgIERl
bGV0ZUJ5VmFsCiB9OwogCiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXggMjZl
MjgyOTM5ZTlhY2E4ODY1YzIyMTc3M2MyYTQxZTAyODA5NGRkYS4uNDhiNWI4NmZhNGI5ZTg2NWVh
NDhkYzk5YTQ5M2JkOTQ4ZDA3NGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtMTI5LDE0ICsxMjksMTQgQEAgYm9vbCBEZWJ1
Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFs
T2JqZWN0LT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBz
Y29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUKHNjb3BlLT5p
c1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShz
Y29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9i
YWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29w
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAppbmRl
eCBmZjRjZTFiMWRhNGI1NzkwZGU4YWQ5ODhhNzFmNjAyY2RmMjYxNjc0Li40MzI3YzFmMDJjNjky
Nzg0NTA4ZTBhOWExYTIxNDk3NzVlZGQ4MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAppbmRleCBlM2UyMDhkMmRhMWNkNzM5YmZhY2M4YzM0YzU0OTdjYzU2MmRiOTM2Li4zODcx
NTkxNzg5MDMxMjBhNjEyNjQ1ZTRhMjM0MzUxM2JhNWRiZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjQ2LDYgKzI0Niw4IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXpl
SW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGlu
ZUNhY2hlcyhtX3B1dEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2Rl
bEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRz
LCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBs
aW5rQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDQ4ODA4NzRjMjg1YWI3ZDQ0N2ViODkzYTZlOGI0YmJmMDEwNzMxZDQuLjJmYjZhZDhm
NjJmOTVhMjZlNmNkYjgyNmFhNmQxY2Q2N2YxOTQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE5MSw3ICsxOTEsMTcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgbV9wdXRCeUlkcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5
SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFk
ZERlbEJ5SWQoY29uc3QgSklURGVsQnlJZEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRv
ciogc2xvd1BhdGgpCisgICAgeworICAgICAgICBtX2RlbEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNo
ZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwor
ICAgIHZvaWQgYWRkRGVsQnlWYWwoY29uc3QgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xv
d1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9kZWxCeVZhbHMuYXBw
ZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0
aCkpOworICAgIH0KKwogICAgIHZvaWQgYWRkSW5zdGFuY2VPZihjb25zdCBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKICAgICB7CiAgICAg
ICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CkBAIC0zNDgsNiArMzU4LDggQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
cj4sIDQ+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVy
PEpJVEdldEJ5VmFsR2VuZXJhdG9yPiwgND4gbV9nZXRCeVZhbHM7CiAgICAgVmVjdG9yPElubGlu
ZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiwgND4gbV9wdXRCeUlkczsKKyAgICBW
ZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5
SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+
LCA0PiBtX2RlbEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJ
ZEdlbmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVy
PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwogICAgIFZlY3RvcjxK
U0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjQyYjE2MzU2ZjkwZTljMzg2MDJlYmM1N2Zk
OWUwNGEwZjQ1YjUyOC4uNGViYmEzN2E0ZjIzYmYzODVhMTU1ZWFjYzdlNzA3YWIzOGQ0ZGFjMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
QEAgLTExNDgsMzggKzExNDgsNzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlW
YWwoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5v
ZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIGF1dG8qIHByb3BlcnR5ID0gaWRlbnRp
ZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOwogCi0gICAgdmFsdWUudXNlKCk7Cisg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhj
ZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUo
KSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMo
KTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeUlkLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJl
Z3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
ICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwp
KQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJl
Z3MpKTsKIAotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAor
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsCisgICAgICAgIHZhbHVlUmVncywgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKKwor
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsIHByb3BlcnR5KTsKKworICAgIG1faml0
LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwoTm9kZSogbm9kZSkKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwot
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
a2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAKLSAgICBiYXNlLnVzZSgpOwotICAgIGtleS51c2UoKTsKKyAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCi0gICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywga2V5UmVn
cyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExp
c3Qgc2xvd0Nhc2VzOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5p
c1R5cGUoU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlUmVncykpOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MigpKS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CiAKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICBKSVREZWxC
eVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIGtleVJlZ3MsIHJl
c3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
KyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAor
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VS
ZWdzLCBrZXlSZWdzKTsKKworICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0ZDM0MjdiYzgyZThj
OWIyNDdhYzg3MWEwMjAwMDFiYjIzODI5ZjI2Li45ZjNlYjBlZWM5MTRhN2RkOWZkMDBiYjdmY2Q2
NDMwZDhmMDAyMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC01MTQ0LDIwICs1MTQ0LDExMyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdElu
dDMyKG1fbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8RGVsQnlLaW5kIGtpbmQ+CisgICAgdm9pZCBjb21waWxlRGVsQnkoKQorICAg
IHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50OworICAgICAgICBhdXRvIGJh
c2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkOworICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3Jt
YWwpIHsKKyAgICAgICAgICAgIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKV07CisgICAgICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hw
b2ludChJbnQ2NCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRW
YWx1ZShiYXNlLCBWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYXV0byBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwor
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFs
dWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKHN1YnNjcmlwdCwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIp
KTsKKyAgICAgICAgfQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVycyA9IDE7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGV4Y2VwdGlvbkhhbmRsZSA9CisgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4
Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3Rh
dGU7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisKKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlz
dD4gZXhjZXB0aW9ucyA9CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2No
ZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKworICAgICAgICAgICAgICAg
IGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAgICAgICAg
ICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFz
ZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
cmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworCisgICAgICAgICAgICAgICAgY29u
c3RleHByIGF1dG8gb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAg
ICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAg
ICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
YmFzZS5ncHIoKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdl
bmVyYXRvciA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJv
eDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybkdQUiwgcGFyYW1z
LmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YnNjcmlwdCwgcmV0dXJuR1BSLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICAgICAgcGFy
YW1zLmFkZExhdGVQYXRoKAorICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rp
b24sIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NChwYXRjaHBvaW50
KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZCgpCiAgICAgewotICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlm
aWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0Qm9vbGVhbiht
X291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBtX291dC5jb25zdEludFB0cih1aWQpKSkpOworICAg
ICAgICBjb21waWxlRGVsQnk8RGVsQnlLaW5kOjpOb3JtYWw+KCk7CiAgICAgfQogCiAgICAgdm9p
ZCBjb21waWxlRGVsZXRlQnlWYWwoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigp
KTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVy
YXRpb25EZWxldGVCeVZhbCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2Ny
aXB0KSkpOworICAgICAgICBjb21waWxlRGVsQnk8RGVsQnlLaW5kOjpOb3JtYWxCeVZhbD4oKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlQdXNoKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1YjRhZGU0NDRjNDNmNWFkZGYyMzE3ZjQy
NjViNy4uOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2YzE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTcwLDcgKzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQdXRCeUlkUmVw
bGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAotICAgIG1hY3Jv
KEluQnlJZFNlbGZQYXRjaCkKKyAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpIFwKKyAgICBtYWNy
byhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAorICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5l
cmljKQogCiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCAwOTFjNGY3ODJhMDc4NGZjNDUyNWVkMjA3OTY5Y2QxYjc4NzQ0ZTg2Li5jNmU2MWI4
OWJmOWExYTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCkBAIC01MDAsNiArNTAwLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID0gMDsKICAgICBtX3B1dEJ5SWRJbmRl
eCA9IDA7CiAgICAgbV9pbkJ5SWRJbmRleCA9IDA7CisgICAgbV9kZWxCeVZhbEluZGV4ID0gMDsK
KyAgICBtX2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXggPSAwOwogICAg
IG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0g
MDsKQEAgLTU4MCw2ICs1ODIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0
X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCisgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9zdWIpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9oYXNfaW5kZXhl
ZF9wcm9wZXJ0eSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3Bl
KQpAQCAtODc1LDYgKzg3OSw4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAg
ZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeVZhbHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5h
bGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMsIHBhdGNoQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBwYXRjaEJ1ZmZlcik7CisgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9kZWxCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5s
aW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVD
YWNoZXMobV9pbkJ5SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCA3YjQ0MDc0OTYzMzM2ZmNiODk0MWViZDA1YjU5NzMxMjlhOWU4NjU1Li42NzE2NjYxZGY0ZmFj
ZWE1ZWZlZDVmNTEwODFmMDU5YjZkMjUzZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTUwMCw3ICs1MDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2lk
ZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
bF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Rl
bF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKGNvbnN0IEluc3Ry
dWN0aW9uKik7CkBAIC05MTMsNiArOTE1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZl
Y3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAg
ICAgICAgVmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CiAgICAgICAgIFZl
Y3RvcjxKSVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVERl
bEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVREZWxCeVZhbEdl
bmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yPiBtX2luc3RhbmNlT2ZzOwogICAgICAgICBWZWN0b3I8QnlWYWxDb21waWxhdGlvbkluZm8+
IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZlY3RvcjxDYWxsQ29tcGlsYXRpb25J
bmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CkBAIC05MzQsNiArOTM4LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggeyBVSU5UX01B
WCB9OwogICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAg
ICAgIHVuc2lnbmVkIG1faW5CeUlkSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25l
ZCBtX2RlbEJ5VmFsSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5
SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4
IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgVUlO
VF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOTIwYjcyMDNlM2NmNGJmMDZlZWQ0NTczYTM5Y2I1NmJj
Y2E2NWQ1YS4uYjBhZDYzYmM1MTFjMjc1NTQzNzcxMjBhNDhmZmYzNjJiZDE1NWYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5jcHAKQEAgLTE2Miw2ICsxNjIsNjggQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKSSBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCitKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQor
eworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAgIEFT
U0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJhc2VH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BS
ID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVz
dWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9
IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIo
KTsKKyNlbmRpZgorICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7
Cit9CisKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93
UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgp
OworfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3Rh
cnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OworfQorCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJh
c2UsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ss
IGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRS
ZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1
ZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJ
bmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5w
cm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBy
ZXN1bHQ7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BS
ID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7
CisjZW5kaWYKKyAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOwor
fQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3Nl
bWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwor
fQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXIm
IGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5p
c1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRo
LCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9
CisKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCmluZGV4IGJmYjkwMjE2YjI5YzI3ZmZkMGVkOGQ3ZjBmNTg3ZTA4ZmU2ZTczMTYuLjI2ZTcw
MGZiYjdhZDE4M2JlMWFjYmE3M2YzN2Y2ZmI0MmZlZmNkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTE0Miw2ICsx
NDIsNTYgQEAgcHJpdmF0ZToKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKK2NsYXNzIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKAorICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKworICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93
UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExp
bmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVm
ZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitw
cml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKworY2xhc3MgSklURGVs
QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNp
bmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5
SWRHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgc2NyYXRjaCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1Nl
dCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAg
ICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIs
IExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CisKKyAgICB2b2lkIGdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQ
YXRoSnVtcDsKK307CisKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGUzNjI2NzMyNWM3
NGFlMjJmODYxOGVhOWUyYWQwMDJlNDhkYzYzMzQuLjdiZGYxZjczMmJmNGUwNWQ5Yjg1Njk2ZWY0
Njg0N2YzYjU2MTA3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMjE0Miw3ICsyMTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+aGFzUHJvcGVydHlHZW5l
cmljKGdsb2JhbE9iamVjdCwgaW5kZXgsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KICAgICAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwg
SlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc3RhdGljIGJvb2wgZGVsZXRl
QnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Vk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKQEAgLTIxNTAsMzEgKzIxNTAsNTEgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHYKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFiYXNlT2JqKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9i
ai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCksIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgIHJldHVy
biBjb3VsZERlbGV0ZTsKIH0KIAotCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpLCB1aWQpKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpOworCisgICAgYm9vbCByZXN1
bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFzZVZh
bHVlLCB1aWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAg
ICAgICAgaWYgKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlm
IChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERlbEJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJl
dHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0
ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBWTSYgdm0sIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkpCitzdGF0aWMgYm9vbCBkZWxldGVC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Vk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBr
ZXkpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0y
MTkwLDcgKzIyMTAsNyBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgZWxzZSB7CiAgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHkgPSBrZXkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIGNv
dWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNl
T2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVj
dCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSkKQEAgLTIxOTgsMjAgKzIyMTgsNDIgQEAgc3RhdGljIGJvb2wgZGVs
ZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIFZNJgogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCAgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEtleSkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeVZhbChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkS2V5KSkpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJz
Y3JpcHQpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJl
c3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFz
ZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgeworICAg
ICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSB8fCAh
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoc3R1YkluZm8t
PmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxs
KCkpKQorICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgKnN0dWJJbmZv
LCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKTsK
KyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpOwogfQogCiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdFZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2MjEw
YzVhMDczNDE5NjgzZDYwZWE4YzQ4Y2Q0M2VlZmY4MmEzMDBjLi42MDBmY2EyOWRjMjAzODVkYzUw
MjIyODAyNTQxMTJjYWMzMWQ2ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlW
YWxJbmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFs
SW5mbyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsK
LXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
Oworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lO
VEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9i
amVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hX
aXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJy
ZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3Qq
KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUyZjcxM2U4YWEwYWZiNWU4MDVjN2NmM2YxZDM4ODM3MWMy
ZjYuLjJiYTBmYTY4NDhiY2U4MjlhY2Q2NDE5MDVmMDVmNGJkNTRkY2JlMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0zODcsOSAr
Mzg3LDM5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAg
aW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMSwgYmFzZSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QwLCByZWdUMik7CisgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOworICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9j
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuaW1wbCgpOworCisgICAg
SklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1ttX2RlbEJ5SWRJbmRleCsrXTsK
KworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCByZWdUMCwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7
CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1p
emUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QwLCB1aWQpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkp
OworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC0zOTgsOSArNDI4LDQyIEBAIHZvaWQgSklUOjplbWl0X29wX2Rl
bF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOworICAgIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCByZWdUMCwgcmVnVDIpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlWYWxz
LmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDAp
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9w
cm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5VmFsc1tt
X2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
KwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxKTsKKyAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94
Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
dHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRjOGJkYWVlZjE0Yy4uMjk5ZGNk
MjI4ZTIwYjhlNzk2NTZmZmQ5OGI4NjY4MGUwZWZjODUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMjMsNyAr
MTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBlbWl0
TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVs
ZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmlt
cGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBib3hC
b29sZWFuKHJlZ1QxLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKQEAgLTEzMyw5ICsxMzUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwg
cHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMSwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCkpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKSB7IH0K
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9CisKIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTE4MjA0MTU1NGJkYzc2YzE5MWNi
MTM4NWQxM2E5YzgxZmZkNDVlYi4uYmU3NTAxZWYyMmMxODMzZTRmYjdmMDZhOWFiZTNhYWIwNzZl
ZGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02NDEsNyArNjQx
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOworICAg
ICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKHZtLCBj
b2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgc2xvdC5pc0Nh
Y2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3Rv
bSgpKSB7CkBAIC03MzQsNiArNzM0LDcyIEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRL
aW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbEJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sIERlbEJ5S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisKKyAgICB7CisgICAgICAgIEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKTsKKworICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0
KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIGlmICghYmFz
ZVZhbHVlLmlzQ2VsbCgpIHx8ICFvbGRTdHJ1Y3R1cmUgfHwgIW9sZFN0cnVjdHVyZS0+aXNPYmpl
Y3QoKSB8fCAhb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisg
ICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIXNsb3QuaXND
YWNoZWFibGVEZWxldGUoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworCisgICAgICAgIGlm
IChzbG90LmlzRGVsZXRlSGl0KCkpIHsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG5ld09m
ZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHko
b2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCk7CisgICAgICAgICAgICBpZiAo
IW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwor
ICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFi
bGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNTRVJUKG5ld09mZnNldCA9PSBzbG90
LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChu
ZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZz
ZXQobmV3T2Zmc2V0KSk7CisgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKHZtLCBjb2RlQmxvY2ssIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwg
bmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChzbG90Lmlz
Tm9uY29uZmlndXJhYmxlKCkpCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGUs
IENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNldCwgb2xkU3Ry
dWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6
RGVsZXRlTWlzcywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBpbnZhbGlkT2Zm
c2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgIH0KKworICAgICAgICBy
ZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgY29kZUJsb2NrLCBwcm9wZXJ0
eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVk
U29tZUNvZGUoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7
CisgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRT
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29k
ZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/
IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7Cit9CisKK3ZvaWQgcmVwYXRjaERlbEJ5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNoZURlbEJ5KGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgeworICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JO
dWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoa2lu
ZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgIH0KK30KKwogc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkBAIC0xMzkxLDYgKzE0NTcsMTUgQEAgdm9pZCBy
ZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKK3ZvaWQgcmVzZXREZWxCeShDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2lu
ZCkKK3sKKyAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgZWxzZQorICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OworfQorCiBzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5w
YXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDZmMGYyNjQxMWVjZGVhMTkyYjcwNjIxMGU4YTk5
NDRiYjRmOWZlMzkuLmMxZDk5NTlhZGFmZDM2NTc2MmU4OTE3OWFiM2MwZWVkNjZlNTg3ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00MSw5ICs0MSwxNSBAQCBlbnVtIGNs
YXNzIEdldEJ5S2luZCB7CiAgICAgRGlyZWN0CiB9OwogCitlbnVtIGNsYXNzIERlbEJ5S2luZCB7
CisgICAgTm9ybWFsLAorICAgIE5vcm1hbEJ5VmFsCit9OworCiB2b2lkIHJlcGF0Y2hBcnJheUdl
dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVl
IGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlcGF0
Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJl
KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlcGF0
Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIGNvbnN0IElk
ZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExp
bmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTUzLDYgKzU5LDcgQEAgdm9pZCB1bmxpbmtGb3IoVk0m
LCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50KTsKIHZvaWQgcmVzZXRH
ZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJl
c2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldERl
bEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVz
ZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbnN0
YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDIyNTRmY2M0Mjk2MTdj
ZTgzOTdkMjRlNTUwZTFhY2VjNjdiNjE0NDMuLmZhY2E3YmY0ZTE3OGQ0MjVmZmJlZmZlOTU0ZThm
MzFlYjAwMjA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtOTI1LDcgKzkyNSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9kZWxfYnlfaWQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERlbEJ5SWQ+KCk7
CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV9iYXNlKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSwgc2xvdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBV
bmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKQEAgLTExMDgsNyArMTEwOSw4IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAgICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwot
ICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxl
SWRlbnRpZmllcklubGluZXMuaAppbmRleCBmZmIzZWI5ZDAwNWNmNmZkMDhmZmQyYmI4OGI5ZDU4
N2JhZWQwZmY2Li4xMDdiNWQ2MDcyMDM3MDUxZjZhN2MxZTljYjBjMTVmMjY1ODk3OTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmgKQEAgLTQyLDYgKzQyLDcgQEAgaW5saW5lIENhY2hlYWJsZUlkZW50
aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
IAogaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoSlNDZWxs
KiBpZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKGlk
ZW50aWZpZXIpKTsKICAgICBzZXRDZWxsQml0cyhpZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBmZTZjNmI3ZDg0YzQ3ZWRlZTEx
YWFjMTFmNjQ4NGE3MmQ0MTdiYzQ2Li43YTU5YjhmZGIwYzIyY2NiYmQyOGQ4MDMxZGE4YTE3ZWUw
NTM3MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAt
NTksNyArNTksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVzaW5nIFB1dEJ5SW5kZXhG
dW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBQdXRCeUluZGV4
RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHB1dEJ5SW5kZXgpOwogCi0gICAgdXNpbmcg
RGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRy
ID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKGRlbGV0ZVByb3BlcnR5KTsKIAogICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5QnlJ
bmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcAppbmRleCA5NmEzNjM1ZTY4MjczOTNlZTgzNmQ4MDQ3NzcyNGEyNWQ1NDZjMjYxLi5m
Njk5OWU3MzQ4NGUyYWJkODgxNDU0ZjExNDgzMTBjMDJkNGYyYTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTIyMCw3ICsy
MjAsNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIENs
b25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCitib29sIENsb25lZEFyZ3VtZW50
czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4o
Y2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjI5LDcgKzIyOSw3
IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6
ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZ2xvYmFsT2JqZWN0KTsKICAgICAKLSAgICByZXR1cm4gQmFz
ZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIGlkZW50LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hv
dWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5oCmluZGV4IGZkM2EyN2JmNzM1NTRkNWVlNGE2ZTMxZDBiYTBjYWQxNTc2MDVmZjUuLjAw
YzUzNDc1NjA1YTczYjJiM2ViMzhkM2NmODEzMjg4MzRmZjFiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBAIC03Miw3ICs3Miw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgCiAgICAgYm9vbCBzcGVjaWFsc01hdGVyaWFsaXplZCgpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMGUyYmMzYTI3MTljMmE5MzUzZTdkNzUy
MWE4NzliZDEyZDc0MDA2OS4uMWRlODIzOTUwOWUwYzhkN2E1NmEzMjQxNGZmZThhNzRhOWI3OGRk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC05ODUsNyArOTg1LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9i
eV92YWwpCiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhdXRvIHByb3BlcnR5
ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWxldGVQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0
ZVByb3BlcnR5U2xvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZmNmI0ODAwZWY1Nzg1NjFjYWVkYzlkZGJi
YzgyZjI1MzJlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisgICAgCitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3QgeworcHVibGljOgorICAg
IGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hlYWJsZSwgRGVsZXRlSGl0LCBDb25maWd1cmFi
bGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUgfTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xv
dCgpCisgICAgICAgIDogbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKKyAgICAgICAgLCBtX2NhY2hl
YWJpbGl0eShDYWNoaW5nQWxsb3dlZCkKKyAgICAgICAgLCBtX3R5cGUoVW5jYWNoZWFibGUpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlTWlzcygpCisgICAgeworICAg
ICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxldGVNaXNzOworICAgIH0KKworICAgIHZvaWQg
c2V0Tm9uY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IE5vbmNvbmZpZ3Vy
YWJsZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhpdChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX3R5cGUgPSBEZWxldGVIaXQ7CisgICAgICAgIG1fb2Zmc2V0ID0gb2Zm
c2V0OworICAgIH0KKworICAgIGJvb2wgaXNDYWNoZWFibGVEZWxldGUoKSBjb25zdCB7IHJldHVy
biBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBVbmNhY2hlYWJsZTsgfQorICAgIGJvb2wgaXNE
ZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRGVsZXRlSGl0OyB9CisgICAgYm9v
bCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ29u
ZmlndXJhYmxlRGVsZXRlTWlzczsgfQorICAgIGJvb2wgaXNOb25jb25maWd1cmFibGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmlndXJhYmxlOyB9CisKKyAgICBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0
OworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQorICAgIHsKKyAgICAgICAgbV9j
YWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dlZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVhYmlsaXR5ID09IENhY2hp
bmdBbGxvd2VkOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKKyAgICBDYWNoZWFi
aWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OworICAgIFR5cGUgbV90eXBlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwCmluZGV4IGYxODIxZDU1NmEzZDQwNDQ5MzY3NWVhZTI1ZmEyZTQ2Njcz
ZWM0M2EuLjY4NWM3YWNiYzExYzYyZDIzMzc3ZDMyYzRkZTlhMjBiNjU4NzhhOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBA
IC04Nyw3ICs4Nyw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAgICAgcmV0dXJuIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCi1ib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JDb25z
dHJ1Y3Rvcio+KGNlbGwpOwpAQCAtOTUsNyArOTUsNyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxp
bWl0KQogICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxp
bWl0KFdURjo6bnVsbG9wdCk7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDkzZDUyNzE0ODZmNjZmZGU3NTNlNDlh
NDAxNmYxNjgzOGU5NzU3MjEuLjlhNWE0NjMyMWIzZGJiNzY0YzJhMWI1MjFkOTI2OGY4ZDE0MzUz
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
CiBwcml2YXRlOgogICAgIEVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggZmQ0
OGJiZjM0YzMwNDMwZDJlNzBkZTU3NDk4ZTliNTFlNmFjMjQ0ZC4uMWQ1MGNkMTc0ZmM0N2Q5MjIx
NzE4OGUzMjVmZjU3YWU4ZDE1YjgxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5NywxMiArMjk3LDEyIEBAIGJvb2wgRXJyb3JJ
bnN0YW5jZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVycm9ySW5zdGFuY2U6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JJbnN0YW5jZTo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9ySW5zdGFuY2UqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNlbGwpOwogICAgIHRoaXNPYmplY3QtPm1hdGVy
aWFsaXplRXJyb3JJbmZvSWZOZWVkZWQodm0sIHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAppbmRleCBmMWZhYzU5
NjgyZDllMDI2NTA4Y2I0ZmY4YzliMjY3YjRlZTc2ZTg3Li40MDA2MDhkMDhhODM0Y2QzMWU2MTJl
NzNhYjUzMWNiMGEzY2ExMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMg
dm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCBjb21wdXRlRXJyb3JJbmZvKFZNJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVu
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApp
bmRleCBjZTEwZjdmZTQ4NzNlNGE0N2JlMTQxZTI1NTY5YWQ2NDhhZmY5ZDI4Li40NzEyMTY3MzAz
NjQ4MjhmZTI3NzBlMjM0ODY5YWNlNzA5MDhkMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMxYmI0MzBmNmQ1OGIxZDViMTE1ZGE1MTNjNWJj
YzBiZjUzLi5hNWE5ZWNiMzIyYTIwZGE4ZmUyNDMzZmZkNTQ3YTc4YWZjNjAyY2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJ
bmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm8KICAg
ICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2
YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpwdXQodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlc3VsdCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CkBAIC0xNTgsNyArMTYwLDcgQEAgYm9vbCBH
ZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLWJvb2wgR2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCitib29sIEdlbmVyaWNB
cmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4oY2VsbCk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDcgKzE3Nyw3IEBAIGJvb2wg
R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgoaWRlbnQpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsICppbmRleCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4
IDAzNDg3ZjYxZTBmMmZjNzUxYmE3MDNiNzBjYTM2ZDAyMjIxNjM0ZGUuLjYwMWYxZTQ5ZjE1Y2Q1
MDFhMGUwYTc1ZWUyODUwNmYzMmIwZGIzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwg
SlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFs
c2U7IH0KICAgICBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFs
c2U7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKICAgICBXcml0ZUJh
cnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAppbmRleCA2ZDA3NTkxNzExZWVkYmMyOGUwZTRkYTc4NDk4MjJhYjhkNjZmNWQx
Li5iY2UzNjU1YTMxOTJlYTI5MGZlN2YwNDA4MjRhMzg4NmY2YjA0ODM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIGJvb2wg
SlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVj
dDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCkpOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTQXJy
YXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwpAQCAtMzE0LDcgKzMxNCw3
IEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBzdGF0aWMgaW50IGNv
bXBhcmVLZXlzRm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAzMTE2NWI1ZmY0OTI1NGNjMWE2YzQ3
OTAyYjc5MTBhYzRhN2Q5YmZmLi5jZGMzOWI1MTJkN2VlM2ExNWNmMWFlYzJlMGEyZDkzZDlhYWFk
MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0xODIsNyAr
MTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMzZDFiYjYwZjhiNTMzYjE4NjA1OGVlYWQ4MWI3NS4u
NTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFiMWVkYzRhNzQxZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKK2NsYXNzIERlbGV0ZVByb3BlcnR5
U2xvdDsKIGNsYXNzIEpTQmlnSW50OwogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNDZWxsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggMjcxMzUyYjIxNzQ3
MDM1NmRmNDAzZmRkOWNkZTYwZGVmODg4MTYwNy4uMGU2N2Y4NjY3NmQ1ODY1YWE4OGYwNGYzNWFk
YTc0MzIxZTAyY2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZQogICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpT
Q2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKK2Jvb2wgSlNDZWxsOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBpZGVudGlmaWVyLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3QpOwotICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNsb3QpOwogfQogCiBib29s
IEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNjY1ZDA4ODljZjQ0NjFjM2FiMGEyYWY0YjA3YzZhNThj
OTA0MjFjNC4uMDYyZTgzZGIzOWFiMzRhNmVmNGZkYTM2ZmZhNTBlNGMxMTFkOTcxMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAg
Ym9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAK
ICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01B
TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmlu
ZGV4IDE0NmE5MTMyZDQ3MzUyNDJjMTA2ZTY1NTY0Nzc4ZTE3ZWQ3YmFiOGMuLjFiMjU1MjNjOThm
YmIwOWUzN2Y4YTQ3NDMxOWJmNzZjMzJkOGE4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBKU0RhdGFW
aWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKIH0KIAogYm9vbCBKU0RhdGFWaWV3OjpkZWxldGVQcm9w
ZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
RGF0YVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNEYXRhVmlldyo+KGNlbGwpOwpAQCAtMTYw
LDcgKzE2MCw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCiAgICAgICAgIHx8
IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlT2Zmc2V0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIHZvaWQgSlNEYXRhVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDg2NDEwZTYxYWQ3ZTkx
ZDgyYTY3ZTk3ZWZiYjRmMzJmMWJjMTJlNzguLjk4YThjYzhiMzk4ZmZkZDdhMWM5NGJlNjU3ZjY1
NWU2Y2M3YjlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBjZDZlYzE1ZWUw
OWE5ZjM0Y2FmMmYyOTQwMGZjOTZkOWE1OWQ0ZGJjLi40MzQ2YWFhZWViNmE4ZWY1ZjUzMjg1ZTFk
NWFiNmY3NzIxMWE5NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICB9CiAgICAg
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggYWRkZGUyYWMwM2E0MTBjNzA4YTc5MzRiNWE1ZDA2ODljYTFm
ZmFjZC4uMThhYjQ3NTQzZmQ3ODI5NzhhZmVhOTcyYzhjOWFjNmQ4NzAyY2JmOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTc5LDcgKzE3OSw3IEBA
IHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aAppbmRleCBmMDhmODUyNDY5YmVmZDZjNWFkNDNhZjJhNTAwOTJiZWVmZTJiMzlhLi4zYjdiYmRl
NzY1Y2UxYzM1NjU1MGVjZDU4Yjc3ZmVkOWQ2MTA2ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTMw
NSw3ICszMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IDBjYWZiZDI3NmNmNzRkMGM4NWVmOGJlN2RiZTQwM2QzYzc2NGIzNDIuLjU4ZmJiNTc1
NjJiNzEwMDc5ZTY1MTQwZjdlMDllNzA4MDQ4ZmEzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCkBAIC00MzgsNyArNDM4LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6ZGVmaW5lT3duUHJvcGVydHkoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSgK
LSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSgKICAgICBpZiAo
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgpAQCAtNDg0LDcgKzQ4NCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCgKICAgICBKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIGNlbGwtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShjZWxsLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGIzYzk4MGE0NjYyYWVlZWExMjQw
YTU2NmM1ZDRhMThhOTI4NzFmN2UuLjBmODkwMzAwYmViNzg0YzcxNzlhODczZmFjZmNiMmE4NGQw
YzllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTEzMTQsNyArMTMxNCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmFkZEZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKLSAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICBhZGRHbG9iYWxWYXIocHJvcGVydHlOYW1lKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwCmluZGV4IGYzNDVjNTAyN2FiYTk0MDg0NDcxZTMxYjdiOGQ3ZWUyYTJmODg3MTMu
Ljk3NGI5MmI1NGUxYTMzODMxNjlkZWZhYjJhOWE3ZGRlNjQ2ZGEwNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAK
QEAgLTEyNywxMyArMTI3LDEzIEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJu
IHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShnbG9iYWxPYmplY3QtPnZtKCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEpTTGV4aWNhbEVudmlyb25tZW50Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTGV4aWNhbEVudmlyb25tZW50Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aAppbmRleCBkMDEzYjUxZWZhMjk3ZWJmMDNjYTQyNDAwMTdhNjdhY2MxM2I5Mzk3Li4wNWU0ZTY1
YzJkZDQ5M2ZmN2E0ZTMxYTQ4MjZiNzBjMjUwYzU3OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTExMCw3ICsx
MTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIERF
Q0xBUkVfSU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcAppbmRleCBmZWI1NTEwODc0ODAzOTBkMzQwOWU2Y2FhOTQ4
MDBiNzI5ZjdjNzNkLi44NThhOTQyZmU3MzU1Y2Y4YzExODA1YThkMDVlMDY1M2Y4YTIxODMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25t
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmly
b25tZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJvb2wgSlNNb2R1bGVF
bnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU01vZHVsZUVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wg
SlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb246OlR5cGU6OlJlc29sdmVkKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQu
aAppbmRleCBkYWVhYjY2MmZjMDRkYWJkZDI2ZDE0MTQ1ZjM2ZWIxN2UyNzkyYTc5Li4wMTMwZjg3
ZmI5OGJiMmE4MmRhYTI5YTU5NjM1MmU3MTliYjdlZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0m
LCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApp
bmRleCAyYmRiMTMwNWViMGM0YmU5NjA4MDY1YmQzNDg1OWM3YWYxNDhiMmExLi4xZmM2YTI2NWI4
Y2E2NWFkMTE5MDJmNWQwMTNlZDY1ZDg2NTYxODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC0x
OTksMTIgKzE5OSwxMiBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVz
cGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICByZXR1cm4gIXRoaXNPYmplY3Qt
Pm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgK
aW5kZXggOGVlZjYyMWUzYjg0ZmE2NjI4Y2ZhMmY4MTRkYTYyOGYwNjc4N2QxZC4uODExMzY0ZGQx
N2ExM2U3ZWZiZmNmMWM5ZTI4NjMwZTI0MmE3MTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCkBAIC01Niw3
ICs1Niw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggZDBkMTcyMWNmMWRlYjgz
M2Y5Y2IwMWUyYmYzMjFiMDZlZDQxOTZjOS4uZWRhMmQ2MjM1MDk5ZWQzMDFiYjBhZTExNDUxNGYz
MmUxNTRjYjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAKQEAgLTc1OSw5ICs3NTksMTAgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3
YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgZmlsdGVyZWRWYWx1ZSA9IGNh
bGxSZXZpdmVyKG9iamVjdCwganNTdHJpbmcodm0sIHByb3Auc3RyaW5nKCkpLCBvdXRWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAg
ICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBt
X2dsb2JhbE9iamVjdCwgcHJvcCk7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBw
cm9wLCBzbG90KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9w
LCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2subGFzdCgpKys7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYWNkMjlkZWQ4
MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFkZi4uMzQ3MzJlMWMyYmYzNmZlNWQ3OTc3YzFi
ZGUyNWNkYWVkNjNhYzliMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcApAQCAtMTk3Miw3ICsxOTcyLDcgQEAgYm9vbCBKU09iamVjdDo6aGFzUHJvcGVydHlH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnQKIH0K
IAogLy8gRUNNQSA4LjYuMi41Ci1ib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU09iamVjdCo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAg
LTE5OTksOCArMTk5OSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogCiAgICAgYm9vbCBw
cm9wZXJ0eUlzUHJlc2VudCA9IGlzVmFsaWRPZmZzZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcykpOwogICAgIGlmIChwcm9wZXJ0eUlzUHJlc2VudCkgewotICAg
ICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlICYmIHZt
LmRlbGV0ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSkKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0Tm9uY29u
ZmlndXJhYmxlKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAg
ICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRj
aHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKIAogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtMjAwOCw3ICsyMDEwLDkgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXIKICAgICAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBbXSAoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQsIFByb3BlcnR5T2Zmc2V0KSB7IH0pOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVm
ZXJyZWRXYXRjaHBvaW50RmlyZSk7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+bV9idXR0
ZXJmbHkgJiYgIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5o
YXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgc2xvdC5zZXRIaXQo
b2Zmc2V0KTsKKyAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0
cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJmbHkpOwogICAgICAgICAgICAgICAgIHRoaXNP
YmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkodm0sIHRoaXNPYmplY3QtPnN0cnVj
dHVyZUlEKCksIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIG9mZnNldCA9IGludmFsaWRPZmZz
ZXQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bWF4T2Zmc2V0KCkgPT0gaW52
YWxpZE9mZnNldCk7CkBAIC0yMDIwLDcgKzIwMjQsOCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cgogCiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHRo
aXNPYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmNsZWFyKCk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBzbG90LnNldENvbmZpZ3VyYWJsZU1pc3MoKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjAzMCw4ICsyMDM1LDEwIEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgCi0gICAgaWYgKGkgPiBNQVhfQVJS
QVlfSU5ERVgpCi0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaSkpOworICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKSB7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb20odm0sIGkpLCBzbG90KTsKKyAgICB9CiAgICAgCiAgICAgc3dpdGNoICh0aGlzT2JqZWN0
LT5pbmRleGluZ01vZGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgpA
QCAtMzYyNSw3ICszNjMyLDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlw
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgIC8vIEEgZ2Vu
ZXJpYyBkZXNjcmlwdG9yIGlzIHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcyBvZiBhbiBl
eGlzdGluZyBwcm9wZXJ0eQogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3Io
KSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYm
IG9iamVjdCkgewotICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxPYmplY3QsIG9iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3Vy
cmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgICAgIH0KQEAgLTM2NDEsNyArMzY0OSw4IEBA
IGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0
dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCks
IGN1cnJlbnQpOwogICAgIH0KQEAgLTM2NjUsNyArMzY3NCw4IEBAIGJvb2wgdmFsaWRhdGVBbmRB
cHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoIW9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3Vy
cmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM3MTgsNyArMzcyOCw4IEBAIGJvb2wgdmFsaWRh
dGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCoKIAogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0
dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0ZXIpOwogCi0gICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgdW5zaWduZWQgYXR0cnMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5n
Q3VycmVudChjdXJyZW50KTsKICAgICBvYmplY3QtPnB1dERpcmVjdEFjY2Vzc29yKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmlu
ZGV4IGVjNjMwMGVhOWI5NzJjZTliYTBmYWQ4MTgyNTdhZmIyMGQ4MmEyZWQuLjY5M2JkYmI5OTdk
NjQ0MjA4MDY1MWMyN2VkZGU3YjA4OGExNDE1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNsYXNzSW5mby5o
IgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0
ZUdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRlbGV0ZVByb3BlcnR5U2xvdC5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJKU0Nhc3QuaCIKQEAgLTYyMyw3ICs2MjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPd25Q
cm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgYm9vbCBo
YXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKSBjb25zdDsKIAotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1ZhbHVl
IGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3Bw
CmluZGV4IDljNDc5MzRlNGEzZDkxOTlmYTk4NDJkZDA1MmNlODhkMjQxNTJhYzEuLmQwYmJjMmM1
YTJkMjIxOTEyN2NkOTliMzAyMDkzMDg4NzIxMjNiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAgYm9vbCBKU1Byb3h5Ojpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCks
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9
CiAKLWJvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsK
LSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVj
dC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRo
b2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50
YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpT
UHJveHk6OmlzRXh0ZW5zaWJsZShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCmluZGV4IDM1
MWU2NjhkMjU5MGQ5Yjk3YzhmNGJiYTJiZmZiNDAwZGIzZjIxMDkuLjViZTdiZjBkMmU1YThiMzJj
Nzk0YzBiMjU4OTU3OThmYzVmOWVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3h5LmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAKaW5kZXggNjMwZTFiNzhiYjIwNmU3YWY2MTdjM2M2ODJjMzRmNWUxNzU1ZjVkNS4uMTI1ZjZj
MzE1MGU5NmFlY2Q1Mzc0NzMxZmRhOGQ5YTdiYWZiYTI0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTQ0LDEz
ICs0NCwxMyBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3N5bWJvbFRhYmxlKTsKIH0KIAotYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTU3ltYm9sVGFibGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTeW1ib2xUYWJsZU9i
amVjdCo+KGNlbGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5jb250YWlu
cyhwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBjN2MxZTIwYTY1NDc2YmM3MDY4ZWU2
M2RlZDk4YjMzNWRmNzM2YjIxLi5iNTY4ZThmOTJhOTgzZmI0Y2MyMDNhN2EwNjIxODBhZTRmZTU5
MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KICAg
ICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIAog
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU1N5bWJvbFRhYmxlT2JqZWN0LCBtX3N5bWJvbFRhYmxlKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCmluZGV4IGI2NTIwMjIx
YTgxNTk4ZmZlZjJhNWUxNGE4MGZkNGU1NGRjNjljNmUuLmIwN2UwYTAyOTMzMjgyNjEwMzZmNDEx
MDZlZWVlOWU1ZjkwYzY2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAKQEAgLTY4NSwxMiArNjg1LDEyIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJveHlPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUHJveHlPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFByb3h5T2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7CiAgICAgYXV0byBwZXJmb3Jt
RGVmYXVsdERlbGV0ZSA9IFsmXSAoKSAtPiBib29sIHsKICAgICAgICAgSlNPYmplY3QqIHRhcmdl
dCA9IHRoaXNPYmplY3QtPnRhcmdldCgpOwotICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RU
YWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+cGVy
Zm9ybURlbGV0ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgcGVyZm9ybURlZmF1bHREZWxl
dGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKaW5k
ZXggMTdjYTI5ZmIwYTNmZGRiYTcxZWI2ODI0OWMwOTljYTI4YTNkNjJlZC4uZWU1YmQ5MDU4Y2Zh
ODE4YTQ2NzRhNTIyYmY2MGEyY2EwOWVhYzFiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKLSAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgcHJldmVudEV4dGVuc2lv
bnMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGlzRXh0ZW5z
aWJsZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0NmRjYjc1MDZkYTU3MGU0Yzk3ZWI5
M2EwOWMwMDQ4MWE1MTUzODI3Li4xY2UxYjRjMzNhYWYxYTQ1ZGYwNzI0MWY0ZGQzMGM2N2Q2N2Ey
ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAKQEAgLTcxLDEyICs3MSwxMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVy
biBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGFzdElu
ZGV4KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFy
cmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggNWU5OWViMzhiNzEzYTk0MjYz
NzE5MWE4OWYwYjdjOTZjNWZiYjcxNC4uODU3Y2EyZTcyYWYzNDBlYWUzNjU3MDFkNTVjYTA3ZWQ4
M2UwYjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fcmVnRXhwQW5kTGFz
dEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAobV9yZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRh
YmxlRmxhZyB8IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFnKTsKICAgICB9CiAKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uY3BwCmluZGV4IDUxNTc1Mjc2NWVjYjAyZDE5YzA0MGU5ZjIxYjk2NDlmNzUxN2I5NDcuLjUx
ZGJjNjdjNTdmODE1NjFmYTc4ZDE5NGVmYWYwNDljMDdhOGFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgU3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmljdEV2YWxBY3RpdmF0aW9u
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUKIHsKIH0KIAotYm9vbCBTdHJp
Y3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpCitib29sIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAppbmRleCBjZGNjMjFiN2U1ZmE3
YjEwOTZiMjZkMTg3MDc0Y2JmMTdlYjgzYzI5Li4yNDE1NDVlODE2OTM2MmJmNjkyMGE5MTliOGZl
MGZkYmI3YTEwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gc2NvcGU7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwCmluZGV4IDQ3N2I5Y2FmYjNmYTAwOGYwZjcwNTY4YjZkYjZmNGExNTE4NmQwNmUuLjQ4
NmRkOTI3M2I3NTA1OGE0N2Y3NjlhM2ZjZjg3NzVlNjkwY2QzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTI1LDcgKzEyNSw3IEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwogfQogCi1ib29sIFN0cmluZ09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgYm9vbCBT
dHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHIKICAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmludGVybmFs
VmFsdWUoKS0+Y2FuR2V0SW5kZXgoaW5kZXgudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAog
Ym9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGEzNDA1ODE3ODkzNGQ4NTI1MGFj
YjNhM2U0ZGEzNTJmMjI3ODY1MjMuLjY5ZjI2YjdkNzI0YmJlZjczMjMzMTk0N2U4MGI3YzdmYWZj
ZjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5o
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCmluZGV4IGVkYTQ0NmJmYmUyNjdhYjAxYjg1MmUxNWZkZTljOWMzMGU2ZjU4ZTYu
LjYzNjk0ZjBjNGFkZDFiYTRlYjc0ZGJhZDI2MWQ3MDAzZTgyNzNlNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtNTQwLDggKzU0MCw3IEBAIFN0
cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewotICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
KAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQp
OworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwog
ICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7CiAKQEAg
LTU0OSwxNiArNTQ4LDEzIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAgICAgICAgIHZtLCBz
dHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7CiB9CiAKLVN0cnVjdHVy
ZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludEZpcmUqKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0
JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogICAgIEFT
U0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQo
c3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAg
c3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7Ci0KICAgICBjb25z
dGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7CisgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNl
dDsKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1f
dHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMsIGlzQWRk
aXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJh
bnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwog
ICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKTsK
QEAgLTU2OCwxMSArNTY0LDMwIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgQVNTRVJU
KCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwor
ICAgIGlmIChzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5hbWUudWlkKCksIGF0
dHJpYnV0ZXMpID09IGludmFsaWRPZmZzZXQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBs
KHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQorCitTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXMgPSAwOworICAgIGlmIChzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5h
bWUudWlkKCksIGF0dHJpYnV0ZXMpID09IGludmFsaWRPZmZzZXQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2sp
OworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQor
CiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAgQVNT
RVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZSh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpKTsKKyAg
ICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKKyAgICBBU1NFUlQo
c3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpKSAhPSBpbnZhbGlk
T2Zmc2V0KTsKIAogICAgIGludCB0cmFuc2l0aW9uQ291bnQgPSAwOwogICAgIGZvciAoYXV0byog
cyA9IHN0cnVjdHVyZTsgcyAmJiB0cmFuc2l0aW9uQ291bnQgPD0gc19tYXhUcmFuc2l0aW9uTGVu
Z3RoOyBzID0gcy0+cHJldmlvdXNJRCgpKQpAQCAtMTIwMyw3ICsxMjE4LDcgQEAgUmVmPFN0cnVj
dHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSwgYm9v
bCYgc2F3UG9seVByb3QKIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKLSAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZv
KCktPmNsYXNzTmFtZSwgIiwgeyIpOworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAi
OlsiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkKCkpKSwgIiwgIiwgY2xh
c3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwogICAgIAogICAgIENvbW1hUHJpbnRlciBjb21t
YTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXgg
NTJjZDNjNzFkOTIwZjJmOGE5N2I0NjBiOTBlMGVjNzBkNWQ3MTFhZi4uYWUyMGFlOTZiYTQwMzJm
NmFhMWY5NGJlM2MxNzRiNzYzYzczZmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5o
IgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0
eVNsb3QuaCIKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xOTEsNyArMTkyLDggQEAgcHVibGljOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlv
blRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92
ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSog
PSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAgc3Rh
dGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwg
U3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSos
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwpA
QCAtNDc3LDYgKzQ3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRl
eGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRleGlu
Z0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwog
CkBAIC03MTYsNiArNzE5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
RmlyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBQcm9wZXJ0eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0
dXJlIHRoYXQgaGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxl
LAogICAgIC8vIGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZv
cmUgd2UgZ290IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdmNzE0YzA1
YjE1M2UwODEzOWU0OTFjZDhjZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUyMzIyYTQ2
MDE3NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oCkBAIC0yMjQsMTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhh
c0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBpZiAo
IWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJh
eUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAor
aW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENo
ZWNrQ2VsbCkgY29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYgKGhh
c0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlw
ZSgpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0cnVl
OworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAg
ICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9i
amVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOWE3ZjQ5YTE0MDUzYTA4MjdkYmFlMzUyZDI4ZjUwMzYw
N2ZmNmNkNy4uNGVmMjllZDc3Njg4ZGMxNzkzODhiNzEwZjE0ZTQzNjE4ZWNmOWU4YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTU2LDcgKzU1Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiAgICAgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTI4NTAsNiArMjg1MCwx
NSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldENvbmN1
cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25IYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisK
KyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVu
Y3Rpb24qPih2bSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihmdW5jdGlvbi0+YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFsKHZtKSkpOworfQorCiB2b2lkIEpT
RG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwpAQCAtMjk4Myw2ICsyOTkyLDggQEAgdm9pZCBKU0RvbGxhclZNOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uTGlzdCIsIEpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJh
bnNpdGlvbkxpc3QsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0Q29uY3VycmVudGx5Iiwg
ZnVuY3Rpb25HZXRDb25jdXJyZW50bHksIDIpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJoYXNP
d25MZW5ndGhQcm9wZXJ0eSIsIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHksIDEpOworCiAg
ICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVj
dFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dU
Ri93dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4MWYwMDIzMTQ2ODQz
MmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcwZWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0
cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkKGNvbnN0
IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAg
IAogICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgeworICAgICAg
ICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBt
X21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIAotICAgIGl0ZXJh
dG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgp
IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGlj
OgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGln
aGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlzdCgpIGNvbnN0CiAg
ICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFZlY3RvcjxLZXlB
bmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdGVyID0gYmVnaW4o
KTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoS2V5QW5k
Q291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsxMDcsMjMgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVhcigp
IHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5jbGVhcigpOworICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVtb3ZlSWYoY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsK
ICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBD
b3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOwogICAgICAg
ICAgICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9sb2Nr
OwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIwNTA2Zjhl
Y2ZhYzY1M2U1NWFkMDQ4MWRkYTU2MGY1ZmQ3MmE1NGQuLmY3YTg5NTU3ZWQ1NmFjZWY5MTNhNGEx
ZjZkNzI0Njc1MmUxNGNkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxNCwxMyArMzE0LDEzIEBAIGJvb2wgSlNET01XaW5k
b3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwKICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RP
TVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01X
aW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RP
TVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBi
eSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNw
cAppbmRleCAxZWYwNmMyNmVlMjUyZGU2NjhjMWRlZGU5MWM1ZGRmNmEwZGRmZGU1Li44NGI5YTEz
ZTE5ZWExODlkZjMwNzQ3NjA2NWRkMzczZTUxZTRmNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTYzLDEzICsxNjMsMTMgQEAg
Ym9vbCBKU0xvY2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIHUKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgo
Y2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9
CiAKLWJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkg
ZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hv
dWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAogYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJv
cGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGUyZWVkZmQ1YjBjNWFhNzE4NzBkYTc2NTQzOTdl
MzViOTlhODJjYWMuLjBjYjY3ZWYyOWM2MmJmOGNjNDQ2YTBlY2UzMWM5ZmU1MzUxNTdhNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRv
d0N1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6cHV0
QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDAzZGQ5
YzE2MWE4Mzk5MTJkNDM5MzQyZDI2NWJjNWZkMTViNmE0MTYuLmI3Y2QxZmNhNDM5OWNlODk5NmFh
YTZlY2E3OTUwNzM2YzA1MzIzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBzdWIgR2Vu
ZXJhdGVEZWxldGVQcm9wZXJ0eQogICAgICMgVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVsZXRlIGZvciB0aGUK
ICAgICAjIGZvciB0aGUgZGVsZXRlUHJvcGVydHkgb3ZlcnJpZGUgaG9vay4KIAotICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNz
TmFtZX06OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PCR7Y2xh
c3NOYW1lfSo+KGNlbGwpO1xuIik7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdWIgR2VuZXJhdGVE
ZWxldGVQcm9wZXJ0eQogCiAgICAgIyBGSVhNRTogSW5zdGVhZCBvZiBjYWxsaW5nIGRvd24gSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5LCBwZXJoYXBzIHdlIHNob3VsZCBpbXBsZW1lbnQKICAgICAj
IHRoZSByZW1haW5lZCBvZiB0aGUgYWxnb3JpdGhtIG91cnNlbHZlcy4KLSAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIn1cblxuIik7CiB9CiAKQEAgLTI2OTYsNyArMjY5Niw3IEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KCRp
bnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQp
O1xuIik7CiAgICAgfQogCkBAIC00MzI0LDcgKzQzMjQsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVu
KFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtNzUx
Miw3ICs3NTEzLDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNvbmRpdGlv
bmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7XG4i
KTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCmluZGV4IGI1ZWE1NDhl
MWQxMjcyZTE4NmRiOTQ0Y2U2MTk4NTBmNGZkMmU4MDguLmU2MzMyMzlkYWVmY2VmMDQwOWM4YjQ2
M2I4NzBmNjZiODEwNWQ3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAK
QEAgLTEzNyw3ICsxMzcsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0
aW5nT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlm
CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTE0NSw3ICsxNDYsOCBAQCB2b2lkIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxl
ZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDgwZmFmMzUxMDU0N2EyYWRlNzdjYjdlYzk1
YjI5MTkyZDkwMWFhNDkuLmVmNjYwMzM0ZTMxODFiNjdkZTUyNGIzZDM1ZGYxNjU2NGY2NTZhZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTEwOCw3ICsx
MDgsOCBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJhU2VjcmV0QXR0cmlidXRlIiksIHN0
cmxlbigiYVNlY3JldEF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgZmxhdHRlbkRpY3Rp
b25hcnlPYmplY3Qodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyLmNwcAppbmRleCBiZmY0YzNiMDlkYTU5NDFiZmY3MWRjZGJiMzg1MjU0OGEwMGMzZjFk
Li44NzgzZTE1YzI4MTM3NjYzNGZkYzc1ZGVmZmM4NWRkYTk2NTQ4OWEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMTkwLDE0ICsxOTAs
MTQgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG8KICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRp
bnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkg
ewogICAgICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZVRv
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCmluZGV4IDBlYTRiYjExYjg2MDUzMDExNjU3
ZmQ2ZWE2M2YyNDZkNGQ4MmU1MGEuLjEzOGQ0YzE4ZjhmNDZiYzM0MzMxMDliZDAzMjM5NTYzN2Qw
YWMzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVy
YXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHAKaW5kZXggNzk0ZDU5NzZmMTNmMDcxOGI0Y2VlNTE2MzM4MzBjY2QzMGYxYzMzMy4uNTc5
ZjJhMGU2YThjN2E5MjU1NjE5ZDg0NDUyNmJhOGRkYjJkYWE4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0xOTAsNyAr
MTkwLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKICAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE8KIAogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDc5MWJlMTgyZWIxYjM2OTY5MjFkZTk3
Njk1MjcyOWYwYjRmMGIzNGEuLjA1NWQzZGY5MjM4MThjMDA3NjdmMTg5NWRmNjcyNWY1YmMwZWRm
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlBy
b3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6
OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6
OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuY3BwCmluZGV4IGIzMzc2ZTNhOWZlNTJiOGEwYTZkM2Q0MDVhNmFhZmVjNDFiY2YwODcuLjI1
MDIzYTMxYTE0NjQyMjg3YTBiMWI1MGRkZjRkZjQ2MTlkZGYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMTk2LDcgKzE5Niw3
IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
IH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZQogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKaW5kZXggNTRlMDI1
NDc4ZTFkYzM5OTA3MDczM2U0OTliMDE2MzE0OTAxMjQ5ZS4uYTg1OGEyNzE1NGJkM2M2MzY0ZmM0
NWE2NDdmZjQyYjZiNDcyNTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggZThkOTc0MTlhZmE1ZDlhZTY4ZGEwNGVhNTQx
ZWFiZjUwZDQ3ODczNi4uZjZmMzY2ZTIyMmU0MTQ0YTc0YjYzNzU0ZmJkMDc4OThmOThiNjZjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAgIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhp
c09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIqPihj
ZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMTgsNyAr
MjE4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KICAgICBpZiAoaXNWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQ
cm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9Ci0gICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2Vs
bCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2ln
bmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaAppbmRleCBhOTk0NWJhZmM2MTE0M2U1NzZmZmQ2MGZlYzhlZWU2OTY0YjlmMDMw
Li4yZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4OWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaApAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUo
KSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAKaW5kZXggMTEwMGFhM2NlYzBiMWUxMGY3OTA3MzBhZjUxMzA5NzAwNjAwYjk1ZS4uMWZiM2Yx
YmVhOGRhZjJmMGQwOWUyOTZjNTg3ZmZlMDQ3MDg2M2ZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTU3
LDQ1ICsxNTcsNTIgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxl
bigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVD
b250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxl
bigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEo
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVH
ZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJlbnRyaWVzIiksIHN0cmxlbigiZW50cmllcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImtleXMiKSwgc3RybGVuKCJrZXlzIikpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigidmFsdWVzIiksIHN0cmxlbigidmFsdWVzIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiZm9yRWFjaCIpLCBzdHJsZW4oImZvckVhY2giKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAo
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXgg
NGMxMDcxMDEzMTA5YjVmZWVjYjQzMjU3MTQ4NDA2OTJkODkwNmYyMS4uZjU2ODQzMjRhNjY3YmE5
NmRlNzUzNjA4MTg3M2QyNTIwYWE4ZTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE5ODQsMTQgKzE5ODQs
MTYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2IKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSwg
c3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSwgc3RybGVuKCJlbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0yMzQ3LDkwICsyMzQ5LDEwNCBA
QCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoISh3b3JsZEZvckRPTU9iamVjdCgq
dGhpcykuc29tZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1l
UHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVk
SW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpLCBzdHJsZW4oImVuYWJs
ZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCF3b3Js
ZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ3
b3JsZFNwZWNpZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRTcGVjaWZpY01ldGhvZCIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlm
ICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
Y2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0Iikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAg
ICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4
dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1
cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRC
b29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJj
b25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25h
bGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3Nl
ZFRvV29ya2VyRnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2Vy
RnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgIH0KICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCl8fCBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWxsb3dzTWVkaWFEZXZpY2VzKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWVk
aWFEZXZpY2VzIiksIHN0cmxlbigibWVkaWFEZXZpY2VzIikpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCEoanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJTY2hlbWUo
KSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzZXJ2aWNlV29ya2VycyIpLCBzdHJsZW4oInNlcnZp
Y2VXb3JrZXJzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmUxRW5hYmxl
ZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKSwg
c3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJp
YnV0ZSIpLCBzdHJsZW4oInJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAg
ICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhw
b3NlZFRvV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dv
cmtlckF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogICAgIC8vIEFkZGluZyBiYWNrIGF0dHJpYnV0ZSwgYnV0IGFzIHJlYWRv
bmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2YXJpYW50IGFib3ZlLiAKICAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVF
bmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCBmZWViZGVm
N2JjNDVlOThjOTMwOGZkZmJkZTExMGI5OWZkZGRjYTJjLi4zMmMxM2I5ZWI0MDcwODM1ZWIyNTgz
NzE5NmQ3ODMyNThhYzU5NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBf
anNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAK
QEAgLTM5MSw4ICszOTEsOSBAQCBib29sIF9OUE5fUmVtb3ZlUHJvcGVydHkoTlBQLCBOUE9iamVj
dCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBpZiAoaS0+aXNT
dHJpbmcoKSkKLSAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRl
bnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSkpOworICAgICAgICAgICAg
b2JqLT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGlj
YWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxP
YmplY3QsIGktPnN0cmluZygpKSwgc2xvdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9i
ai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChvYmotPmltcCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+bnVtYmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggMjJmMGI4ZDlkOGZhZTRhNzljNmI2
MzFlOTM1Y2I2YWRjN2Q5NGZmZi4uZGJjNmQzYjFlMTlmOWMyMWQ5YjYwYzE3ZWRmZjk3MTYwMDY3
YzA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQpAQCAtNDU3LDggKzQ1Nyw5IEBAIC0gKHZvaWQpcmVtb3ZlV2ViU2NyaXB0S2V5OihOU1N0cmlu
ZyAqKWtleQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKKyAgICBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OwogCi0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
W3NlbGYgX2ltcF0sIGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIFN0cmluZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIFN0cmluZyhrZXkpKSwgc2xvdCk7CiAKICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
LmgKaW5kZXggNWVkMjFmMTM0ZWY0YWFiNWRjMGM1NWE0NWRlNmE2M2QyN2M2YmUyZS4uNjIyOTYz
NjhlYmI5MGM1MGI5ZGU3ZmEwNzgyYzljNmZhMjg1OTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAgIGJvb2wgdG9Cb29sZWFu
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9r
ZW4gYmVjYXVzZSBub25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBX
ZSBuZWVkIHRvIHNvbHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IDE5ZWQxOWNiYzdhZTNlZTQ2Nzc5NmIx
MDNjYmZlNzYxNjA5YWQ3MzAuLjZlODc3ZDJlYjdmNDRkMDNhMjhlMTcxMDgzYmQzZDBmMGJiOTg4
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI5
MCw3ICsyOTAsNyBAQCBDYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxEYXRh
KEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlwZTo6
SG9zdDsKIH0KIAotYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCA0ZDI5N2M3MGQ2YjFiNmMx
YWY4OGY5MTRiZTg1ZjYwZGYwM2NjOWIxLi5lYzM1ODhmYzU2NTk1NTNmNTI3MjgzYzU4YTczNTgw
MjEzMjlhYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC0x
NDksNyArMTQ5LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09i
amVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGxleGljYWxHbG9iYWxPYmplY3Qs
IGluZGV4LCB2YWx1ZSk7CiB9CiAKLWJvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZUFycmF5
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCBmY2Y1ZTMzZmIxMTQwMTg1MTA3OTkzMGZiZDEx
NzYxMzU0NTJjN2U2Li4yOTgxMmE2NmQ2ZjAxMjRlMzgzNjI1Zjk1NjAxOWNhMzNiYzNiZDkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0
QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpOwogICAgIAogICAgIHVuc2lnbmVkIGdldExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJy
YXktPmdldExlbmd0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cAppbmRleCBhMDM2YjY2NjJkNDg3MmY2OGRjNTI2NDViYTFhZjJiYTE1MzMwMzJkLi45ZDVkNjBk
ZWYzNTc1NGJlMWUwZTA2MjBlNDFlZGI5OGVmZTM5ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIFJ1bnRpbWVPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29s
IFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIC8vIENhbiBuZXZlciBy
ZW1vdmUgYSBwcm9wZXJ0eSBvZiBhIFJ1bnRpbWVPYmplY3QuCiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCA2Y2JmN2JmNzk2YjBhODk0
MDRiOTQyMjc1ZDY1MWU2MGU3MzI0NTgyLi4zYzEwZDhiZDUwZjNiN2RhYTQ4NDIyMTRiOWUwNGYw
NDNhZmRmMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRW
YWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSk7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
Jik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IDJlZmIyMjUyM2Y5MjFlOTJhYmQw
MjE2ZWIwY2QxZmZkMTAwMzYyYmUuLjA1ZDEyOTI5Mzk1ODJmMDRjNDMyZDMwYzE0MmRiYTVkYWEw
YmYxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBKU05QT2Jq
ZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgUHJvcGVydHkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEpTTlBPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTlBPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICByZXR1cm4ganNDYXN0PEpTTlBPYmplY3QqPihjZWxsKS0+ZGVsZXRlUHJvcGVydHko
bGV4aWNhbEdsb2JhbE9iamVjdCwgbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlO
YW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmgKaW5kZXggODU1ODg5NDlhMzA2MDRjNjlmNzdjY2MzZjYwZTU0
Njk3N2ZmYWM2ZC4uNDgwM2MwYmM1NzFmOTc3ZGRjMjcyMmJiYWI5NmI2ZDI3YzJhOWM3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1
dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6
OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
CiAgICAgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmluZGV4IDM2ZjI4ZWU2ZmIwMTAyZDhj
MTc3MTNjNjA4YjYxNGVhZjg1ZGRiNzYuLjhiOWZjZGYzMDg1MmQxZDIyMmE1YjNiZDU5MDZkYTRi
YWZlNDNhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0yMjksOCArMjI5LDkgQEAgYm9vbCBOUEpT
T2JqZWN0OjpyZW1vdmVQcm9wZXJ0eShOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAgICAg
ICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShtX2pzT2JqZWN0LmdldCgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
ZGVudGlmaWVyKTsKKworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
bV9qc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShtX2pzT2JqZWN0Lmdl
dCgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoIW1fanNPYmplY3QtPmhhc1Byb3BlcnR5KGxleGljYWxHbG9iYWxPYmpl
Y3QsIGlkZW50aWZpZXJSZXAtPm51bWJlcigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRl
eCAzMDMyYWZhMjgwZmE5MjdkODc3MzIwZWI4MWNiZDkwNzEwMjU1OTdlLi4xMmNlNDA5YzU0M2My
Mjg4MjI3NzE5YjJkNDEwOGJmMmE4NzlkNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCkBAIC0xMTQxLDggKzExNDEsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJvcGVydHkodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IElk
ZW50aQogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisKKyAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYz
YTU5MTZmNjMyMGQzZTRjOWFmNjVlZDc3OWVlYjQwNmY2ZGYyZjcuLjIzOGQyZDFlMmM2NTAxYjli
NzNiMTJhNWI3YWQxNzgyYzkzZDY2ZDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAtMDItMTQgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBD
YWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90
b3R5cGUtY2hhaW4uanM6CisgICAgICAgIChkZWxldGUuQy5wcm90b3R5cGUueik6CisgICAgICAg
ICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBo
aWMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6Cisg
ICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5h
c3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtl
Rm9vNik6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5s
aW5lLmFzc2VydF9uZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6
CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChh
c3NlcnRfdGhyb3dzKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRf
ZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkLm1ha2VGb28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5l
LmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURl
bGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6
CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJs
ZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlE
ZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qczoKKyAgICAgICAg
KiBzdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAg
IChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgor
ICAgICAgICAoYXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9Jbmxp
bmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2Vy
dC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRf
dGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RD
YWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6Cisg
ICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRl
c3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hl
YWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleC5t
YWtlRm9vNSk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3Mu
dGVzdERlbGV0ZUluZGV4KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0
UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAgIChub0lubGluZS50ZXN0RGVs
ZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVz
dFBvbHltb3JwaGljRGVsQnlWYWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLm1ha2VGb283KToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxldGVC
eVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJv
bERlbGV0ZUJ5VmFsLm1ha2VGb284KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RCaWdpbnREZWxl
dGVCeVZhbC50ZXN0U3ltYm9sRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN5
bWJvbERlbGV0ZUJ5VmFsLnRlc3RPYmpEZWxldGVCeVZhbC5tYWtlRm9vOSk6CisgICAgICAgIChu
b0lubGluZS50ZXN0U3ltYm9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0ZUJ5VmFsKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RPYmpEZWxldGVCeVZhbC50ZXN0U3RyaWN0Lm1ha2VGb28xMCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdCk6CisgICAgICAg
IChub0lubGluZS50ZXN0U3RyaWN0LnRlc3RPdmVycmlkZS5hcnIuaik6CisgICAgICAgIChub0lu
bGluZS50ZXN0U3RyaWN0LnRlc3RPdmVycmlkZSk6CisgICAgICAgIChub0lubGluZS50ZXN0T3Zl
cnJpZGUpOgorCiAyMDIwLTAyLTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gSklUVGh1bmsgc2hvdWxkIGJlIEhhc2hTZXQ8V2VhazxOYXRpdmVF
eGVjdXRhYmxlPj4gd2l0aCBhcHByb3ByaWF0ZSBHQyB3ZWFrbmVzcyBoYW5kbGluZwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90
eXBlLWNoYWluLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZy
b20tcHJvdG90eXBlLWNoYWluLmpzCmluZGV4IDQ5YTMxYjdmMjQ3YzFiZDBhY2E4MmNiMjJkZjIw
ZThmMWJmNjFiZGQuLjU0YmJhODJlNjk5YzYyY2NjYTg5NDUxNmU2MmI3ZTZjYTFmNTEyMDIgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXBy
b3RvdHlwZS1jaGFpbi5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJv
cGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKQEAgLTEsNCArMSw0IEBACi0vL0Agc2tpcCBp
ZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIGFkZGVkIGJ5IG1hcmstanNjLXN0
cmVzcy10ZXN0LnB5CisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KIGZ1bmN0
aW9uIGFzc2VydChiKSB7CiAgICAgaWYgKCFiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3I7CkBA
IC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGRvVGVzdCh6VmFsKSB7CiB9CiBub0lubGluZShkb1Rl
c3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CiAgICAgY29uc3QgWCA9IHsgaSB9CiAgICAgQy5wcm90b3R5cGUueiA9
IFgKICAgICBkb1Rlc3QoWCkKQEAgLTM2LDcgKzM2LDcgQEAgZm9yIChsZXQgaT0wOyBpPDEwMDAw
OyArK2kpIHsKIAogZGVsZXRlIEMucHJvdG90eXBlLnoKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAw
MDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyArK2kpIHsKICAgICBnZXRa
KHt6OiBpfSkKICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUt
cG9seW1vcnBoaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhZmZhYzk4ZTU2M2Q1ZjM3ZjZlZTIwOTA4NWQ2
NDgzYzk2ODFkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Rl
bGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAsMCArMSw1MyBA
QAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24g
YXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9Citub0lu
bGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQor
CitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24gbWFr
ZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0gPSAx
CisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAgICAg
ICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFyciA9
IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsr
aikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJh
ciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQor
ICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisg
ICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAg
ICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6Iitp
IGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCkK
KworZm9yIChsZXQgaSA9IDA7IGkgPCAzMDAwMDsgKytpKSB7CisgICAgdGVzdFBvbHltb3JwaGlj
RGVsQnlWYWwoaSkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5OTEyZGE0YmJiYWFkMDUy
MWU1NTEyNWM5MDdlNWZiMmNkYzE0ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsMTc0
IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KKworZnVuY3Rpb24gYXNz
ZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEsIGIp
IHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24g
ZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25lcShh
LCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0
aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90
aHJvd3MoZnVuKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcgPSB0cnVlCisgICAgfQorICAgIGFz
c2VydCh0aHJldykKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25v
SW5saW5lKGFzc2VydF9uZXEpCitub0lubGluZShhc3NlcnRfdGhyb3dzKQorCitmdW5jdGlvbiB0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vKCkgeworICAg
ICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9
IDIKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAg
ICBub0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28oKQor
ICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25z
dCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAg
YXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJh
ZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1si
YnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQor
fQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMigpIHsKKyAgICAgICAg
bGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisg
ICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIoKQor
ICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25z
dCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAg
YXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJh
ZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1si
YnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9
Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RD
YWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzMoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFy
ID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGRl
bGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFr
ZUZvbzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJb
al0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAg
ICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZv
bykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisg
ICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEo
ImJhciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxl
dGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKSB7CisgICAg
ZnVuY3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28u
YmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZv
by5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAg
ICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAorICAg
ICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9l
cShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9v
LmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAg
ICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNCkKKworICAgIGFyciA9
IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2Vy
dChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5n
dGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcg
PSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpd
ID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0
KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZE1pc3MpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDA7ICsraSkgeworICAgIHRlc3RD
YWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQorICAg
IHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVC
eUlkTWlzcygpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCmluZGV4
IDc3OTVkYzU4MTU3OGU0YzM5ODFjMjJhYzg3NmM0NTU0MTNlNjRkM2MuLmE5MzlhYWUzYWM4YWNj
YzIyMTRkZDdlN2Q4MDI0NDIxYTgxNjQ1ZDkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCisrKyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUt
c3RydWN0dXJlLmpzCkBAIC0yNCw1ICsyNCw1IEBAIGZ1bmN0aW9uIGRvVGVzdCgpIHsKIH0KIG5v
SW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwMDsgKytpKSBkb1Rlc3Qo
KQorZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyArK2kpIGRvVGVzdCgpCiAKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNp
dGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUt
dHJhbnNpdGlvbi5qcwppbmRleCA0MDNjN2MwOWNjMTIzZjNiMTg1NDY4MGI2YzE3ZGQ0NTZhNWRl
ZjMxLi5hNGJhMWU0NGRhYzhhOWEzMzFkZTAzYjA1MzVlMzkyNDkzZTY1YzExIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5zaXRp
b24uanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVjdHVy
ZS10cmFuc2l0aW9uLmpzCkBAIC0xMiw2ICsxMiw5IEBAIGZ1bmN0aW9uIGFzc2VydF9uZXEoYSwg
YikgewogICAgIGlmIChhID09PSBiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlv
biBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOwogfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9J
bmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKIAogZnVuY3Rpb24gc2Qob2Jq
KSB7CiAgICAgbGV0IGRhdGEgPSAkdm0uZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3Qob2JqKQpA
QCAtMzEsNiArMzQsOCBAQCBmdW5jdGlvbiBzaWQob2JqKSB7CiAgICAgbGV0IGRhdGEgPSBzZChv
YmopCiAgICAgcmV0dXJuIGRhdGFbZGF0YS5sZW5ndGgtMV0uaWQKIH0KK25vSW5saW5lKHNkKQor
bm9JbmxpbmUoc2lkKQogCiBmdW5jdGlvbiB0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZShpKSB7
CiAgICAgbGV0IGZvbyA9IHt9CkBAIC02Miw2ICs2Nyw3IEBAIGZ1bmN0aW9uIHRlc3REZWxldGVJ
c05vdFVuY2FjaGVhYmxlKGkpIHsKICAgICBhc3NlcnRfZXEoJHZtLmdldENvbmN1cnJlbnRseShm
b28sICJiYXIiK2kpLCAxKQogICAgIGFzc2VydChmb29bImJhciIgKyBpXSA9PT0gMSkKIH0KK25v
SW5saW5lKHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxlKQogCiBmdW5jdGlvbiB0ZXN0Q2FuTWF0
ZXJpYWxpemVEZWxldGVzKGkpIHsKICAgICBsZXQgZm9vID0ge30KQEAgLTEwMCw2ICsxMDYsOCBA
QCBmdW5jdGlvbiB0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVzKGkpIHsKICAgICBhc3NlcnRfZXEo
ZGF0YVtkYXRhLmxlbmd0aC0yXS5wcm9wZXJ0eSwgImJhciIgKyBpKQogfQogCitub0lubGluZSh0
ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVzKQorCiBmdW5jdGlvbiB0ZXN0Q2FuRmxhdHRlbihpKSB7
CiAgICAgbGV0IGZvbyA9IHt9CiAgICAgZm9yIChsZXQgaj0wOyBqPDUwMDsgKytqKSB7CkBAIC0x
MzEsNiArMTM5LDcgQEAgZnVuY3Rpb24gdGVzdENhbkZsYXR0ZW4oaSkgewogICAgICAgICAgICAg
YXNzZXJ0X2VxKHZhbCwgdW5kZWZpbmVkKQogICAgIH0KIH0KK25vSW5saW5lKHRlc3RDYW5GbGF0
dGVuKQogCiBmdW5jdGlvbiB0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKCkgewogICAgIE9iamVj
dC5wcm90b3R5cGUuZ2xvYmFsUHJvcGVydHkgPSA0MgpAQCAtMTc1LDYgKzE4NCw3IEBAIGZ1bmN0
aW9uIHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUoKSB7CiAKICAgICBkb1Rlc3QodW5kZWZpbmVk
KQogfQorbm9JbmxpbmUodGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSkKIAogdGVzdERlbGV0ZVdp
dGhJbmxpbmVDYWNoZSgpCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9w
ZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5s
aW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlMGRhMDEzMTU5MTE5ZjYwMzAwZmQxMGUyMWNjMWE0
OGNlNzZiYjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVy
dHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsNDIxIEBACisvL0AgcnVuRGVmYXVsdCgiLS11
c2VCaWdJbnQ9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAo
IWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsg
Yik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0g
IiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJl
dyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAg
ICAgIHRocmV3ID0gdHJ1ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShh
c3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9Jbmxp
bmUoYXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7
CisgICAgZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAg
IGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBhcnJbal0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAg
ZnVuY3Rpb24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28u
YmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQor
ICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAg
YXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJs
ZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkg
eworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1
cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFy
cmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyAr
K2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9i
amVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28p
KQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAg
ICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9
IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3Nl
cnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9v
LmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFy
JywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNl
CisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNl
KQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBh
c3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQor
ICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25z
dCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAg
YXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJh
ZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1si
YnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQor
fQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0ZXN0
RGVsZXRlSW5kZXgoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxldCBm
b28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAg
ICBmb29bMF0gPSAyMworICAgICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEoZGVs
ZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0cnVl
KQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAg
IG5vSW5saW5lKG1ha2VGb281KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb281KCkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVu
Z3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQo
ISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9v
LmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZv
b1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
ICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0sIDIz
KQorICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sxXSA9
IDEKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
RGVsZXRlSW5kZXgpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAg
ICBmdW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZv
b1siYmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1si
YmF6IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282
KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisK
KyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qu
a2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQor
ICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAg
ICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMp
CisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5l
KHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0QmlnaW50RGVsZXRlQnlW
YWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzcoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQor
ICAgICAgICBmb29bMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dID0g
MQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWzEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb283KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb283
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAg
ICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0
KCEoMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG4gaW4gZm9vKSkKKyAg
ICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAg
Zm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQor
ICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVz
dEJpZ2ludERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwoKSB7
CisgICAgY29uc3Qgc3ltYm9sID0gU3ltYm9sKCdmb28nKTsKKworICAgIGZ1bmN0aW9uIG1ha2VG
b284KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisg
ICAgICAgIGFzc2VydCghKFN5bWJvbCgnZm9vJykgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KHN5
bWJvbCBpbiBmb28pCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3lt
Ym9sXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb284KQor
CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb284KCkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5
cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAg
ICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZv
b1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RT
eW1ib2xEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdE9iakRlbGV0ZUJ5VmFsKCkgeworICAg
IGNvbnN0IHN5bWJvbCA9IHsgaTogImZvbyIgfTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb285KCkg
eworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAg
IGFzc2VydChzeW1ib2wgaW4gZm9vKQorICAgICAgICBhc3NlcnQoISh7IGk6ICJmb28iIH0gaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisg
ICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzkpCisKKyAgICBh
cnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzkoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBh
c3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbyku
bGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdE9iakRlbGV0
ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIGZ1bmN0aW9uIG1ha2VGb28xMCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxl
dGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVl
KQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAg
ICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAg
fSk7CisgICAgICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvby5mb29iYXIpCisgICAg
ICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0K
KyAgICBub0lubGluZShtYWtlRm9vMTApCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZv
bzEwKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAg
ICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisg
ICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0
KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2Vy
dChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RPdmVycmlkZSgp
IHsKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gZnVuY3Rpb24oKSB7IH0KKyAgICAgICAgYXNzZXJ0
X2VxKCR2bS5oYXNPd25MZW5ndGhQcm9wZXJ0eShhcnJbal0pLCB0cnVlKQorICAgICAgICBkZWxl
dGUgYXJyW2pdLmxlbmd0aAorICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3Bl
cnR5KGFycltqXSksIGZhbHNlKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEo
T2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZv
bykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisg
ICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0T3ZlcnJpZGUpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAg
dGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgp
CisgICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURl
bGV0ZUJ5SWRNaXNzKCkKKyAgICB0ZXN0RGVsZXRlSW5kZXgoKQorICAgIHRlc3RQb2x5bW9ycGhp
Y0RlbEJ5VmFsKGkpCisgICAgdGVzdEJpZ2ludERlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0U3ltYm9s
RGVsZXRlQnlWYWwoKQorICAgIHRlc3RTdHJpY3QoKQorICAgIHRlc3RPdmVycmlkZSgpCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391080</attachid>
            <date>2020-02-18 13:04:31 -0800</date>
            <delta_ts>2020-02-20 15:52:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200218130430.patch</filename>
            <type>text/plain</type>
            <size>216430</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2ODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NTVlOTIwMjBlMzczMjRhOGJjZjBjYWEzNTNmNzc4ZmUxYTMxYWQwLi43MzczZTI0ZDRmYzE0YjA1
NjJhZWRjYzZhMmFiOWQwNzI4MDk4NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTE3ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSklUVGh1bmsg
c2hvdWxkIGJlIEhhc2hTZXQ8V2VhazxOYXRpdmVFeGVjdXRhYmxlPj4gd2l0aCBhcHByb3ByaWF0
ZSBHQyB3ZWFrbmVzcyBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBmMTc0NjcxMGIxYmQwM2M3MGU4MWY3ZGU0ZWIz
NzYyNTc5ZDJjMzQ0Li5iYmNjM2JjZTY0MTUyZDg4MzZmMTVjZjc4YzEyODQxMjM5NDViOGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9t
aWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3Zh
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
U3BlY3RydW0uaDoKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmFkZCk6CisgICAgICAgIChXVEY6
OlNwZWN0cnVtOjpnZXQgY29uc3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YnVpbGRMaXN0
IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmNsZWFyKToKKyAgICAgICAgKFdURjo6
U3BlY3RydW06OnJlbW92ZUlmKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJlZ2luKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6U3BlY3RydW06OmVuZCk6IERlbGV0ZWQuCisKIDIwMjAtMDIt
MTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW92
ZSBmcm9tICJsYXllciBmbHVzaCIgdGVybWlub2xvZ3kgdG8gInJlbmRlcmluZyB1cGRhdGUiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYzk4YzQyZmZmMDNmYjRlOTliYjNlZTk5MWRhZGNkZmFiZmY3MzkwMC4uYWI4
MzJjN2IzZTU1ZTM5MTMyYzMyMTkxZmFjNGRjMWM3YzFiYzE4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU1IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFw
cGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTUmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZURlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhv
ZHMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgICogYnJp
ZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3Qg
cmVtb3ZlV2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFy
cmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuaDoK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9y
dW50aW1lX29iamVjdC5oOgorCiAyMDIwLTAyLTE4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bUXVpcmtdIEFkZCBhZGRpdGlvbmFsIGVzY2FwZSByZWFz
b24gdG8gY292ZXIgdGhlIGNhc2Ugd2hlbiBib2R5IG5lZWRzIGFjY2VzcyB0byBib3RoIHRoZSBi
b2R5IGFuZCB0aGUgSUNCIGdlb21ldHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIyYzJjMjI0MDkxYjAxOTg4MTZi
Zjg1MzI4NWUzZTA1NTlkMzViOTEuLmEzZmI4YmMwYjY1Yzc1N2JiY2E3NmFhZGM5OWNmYTkyYjQ1
NmVjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNo
YXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBk
ZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
UEpTT2JqZWN0OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAtMDItMTggIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgW1VJRGV2aWNlIGN1cnJlbnRE
ZXZpY2VdIGNhbGxzIHRvIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCAxNTFkN2NmMmM1ZTFlZWEyMDcwZTE1NzhkZGRjOTI3OWZiM2NmZGUwLi43ZTM1NGNhNDljMjk1
OTFmNzQ1YTRlMzBmYjAwOWIwNWQxNmM5YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21p
Y2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAt
MDItMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
TW92ZSBmcm9tICJsYXllciBmbHVzaCIgdGVybWlub2xvZ3kgdG8gInJlbmRlcmluZyB1cGRhdGUi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDAz
NGIzNTdjMDczOGUzNDkxMjU4ODU4ZDcwNjk4OWZlZmNiNDgzM2QuLjkyY2E5MjQ3Nzk2MmJjMDRj
N2E4ZWI4NmExZjQxNWQyYjE4N2YzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkKTsKIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggY2Q1MTFi
ZmQyODRhMDEzMjUyYTY0MDVhNjcwN2FhZDEzN2ExYmNjYi4uNGJlYzMzYTcyZGMyODQ3N2E2MTM1
NmZkYjkyMGE0NzY4NjJlZDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQx
OCw3ICs0MTgsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxh
dGUgPGNsYXNzIFBhcmVudD4KQEAgLTQyNiw3ICs0MjYsOCBAQCBib29sIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplYwogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgSlNDYWxsYmFj
a09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7Ci0g
ICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUp
KTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAppbmRleCBmN2Y5ZGFiM2YyOGFkYzBlYWJiMmJkZThiMjUwNjc3MmFkMjVmZmNlLi45ZGY4Nzhl
NTg4ZmEyYWVmMDYyMmFjNjk1ODc4MWFiZTY3YTM3ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNDc5LDcgKzQ3OSw4IEBAIGJvb2wgSlNPYmplY3RE
ZWxldGVQcm9wZXJ0eUZvcktleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTVmFsdWVSCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4
Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7
CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTM0LDcgKzUzNSw4IEBAIGJvb2wgSlNPYmplY3REZWxl
dGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5n
UmVmIHByCiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAKLSAgICBi
b29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsKKyAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pLCBzbG90KTsKICAgICBoYW5kbGVFeGNlcHRpb25J
Zk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFlNDI3YzMwYzUxMTYzZWRkOWYx
MDZkNDJmOTVlMDlkMDJiZTljNC4uNzU1NmU5NTZmYzYzMmY3ZTJiOWQwZTFhZGJmN2NhODFmOGU4
ZjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODE1LDYgKzgxNSw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVu
dGltZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAogICAg
IHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKKyAgICBydW50aW1lL0RlbGV0ZVBy
b3BlcnR5U2xvdC5oCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaAogICAgIHJ1
bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmNDJjMmFlOGZlNTkyYmY2ZDY4Mjg1
Mzg5NzZkMGNmNmRhNmRiMWYuLmZiNzQ1NjUxN2Y4Zjc0YzY5ZjFjOWQ1YmRjMjAyYzRmNmU0NDE4
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDYgKzExNzgsNyBAQAog
CQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAx
MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFGREJF
QTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAv
KiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERl
bGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTczRTM3
OTk0MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMz
NTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1OTNDODk4QkU3MTRBNjRC
RTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0RCAvKiBXYXNtQ29u
dGV4dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAw
NTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzk3MSw2ICszOTcyLDcgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzM0QjY1NTQy
M0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3Ry
ZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VM
b29wU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNN
b2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVM
b2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODQsNiArNzA4Niw3IEBA
CiAJCQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAog
CQkJCUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJ
MTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICov
LAorCQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAq
LywKIAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAq
LywKIAkJCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggKi8s
CiAJCQkJMEZFMDUwMEQxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5j
cHAgKi8sCkBAIC05MjA5LDYgKzkyMTIsNyBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFC
NyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJv
cGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkg
LyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBCQkZE
MDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkw
MzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDY2Miw3ICsxMDY2Niw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAv
KiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1
dGVzID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJ
CQlEZWZhdWx0QnVpbGRTeXN0ZW1UeXBlRm9yV29ya3NwYWNlID0gT3JpZ2luYWw7CiAJCQkJTGFz
dFN3aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDJh
ZjQ4MGE5Y2U3ZDgwMjVjZTU4ODNkOGFkZjljOTg0MjY5YmE5NzUuLjhlZGUyODQ4ZDJjOWFmOWVm
MzhiNjRhNjQzOTlmYjEyMWI5ZTYzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTczLDYgKzczLDggQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5N
aXNzOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlz
czoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmlu
Z0xlbmd0aDoKQEAgLTEwNiw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0x
MjMsNiArMTI1LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAK
K3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCisg
ICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBu
ZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Cisg
ICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ugc28gdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2RlIGJl
bG93LgorICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgbmV3U3RydWN0
dXJlLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKKworICAgICAg
ICBpZiAobWF5TmVlZFRvQ2hlY2tDZWxsKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7
IH0sIHsgfSkpOworfQorCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CkBAIC0yNjIs
NiArMjgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2go
KSBjb25zdAogICAgIGNhc2UgTG9hZDoKICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBh
IGJ5X3ZhbCBmb3IgdGhlc2UgcHV0cywgYnV0IHdlIGRvIGNhcmUgYWJvdXQgdGhlIGlkZW50aWZp
ZXIuCiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVs
ZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxh
Y2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTMwOSw2ICszMzAs
OSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0eUNoZWNrKCkgY29uc3QK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRp
b246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6Cisg
ICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzU2LDYgKzM4MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
TG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBE
ZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVw
bGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNDQ3LDYgKzQ3
NCw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwoVk0mIHZtLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6
CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToK
KyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAg
ICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAg
LTQ5Miw2ICs1MjIsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmRvZXNDYWxscyhWTSYgdm0sIFZlY3Rv
cjxKU0NlbGwqPiogY2VsbHNUb01hcmtJZkRvZXNDYWxscykgY29ucwogICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6CiAgICAgICAgIGRvZXNDYWxscyA9IHRydWU7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAg
IGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBSZXBsYWNlOgogICAg
IGNhc2UgTWlzczoKQEAgLTYxNCw2ICs2NDcsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxh
Y2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpIGNvbnN0CiAKICAgICBjYXNlIExvYWQ6CiAgICAg
Y2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNjYzLDcgKzY5OSw3IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJwcm90b3R5cGUgYWNjZXNzIGNoYWluID0gIik7CiAgICAgICAgIG1fcG9seVBy
b3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3RydWN0dXJlKCksIG91dCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRy
YW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSgpKSwgIiAtPiAiLCBwb2lu
dGVyRHVtcChuZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICBlbHNlIGlmIChtX3N0cnVjdHVyZSkK
ICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1w
KG1fc3RydWN0dXJlLmdldCgpKSk7CkBAIC03MDUsNiArNzQxLDcgQEAgYm9vbCBBY2Nlc3NDYXNl
Ojpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYgdmlzaXRvcikgY29uc3QKIAogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgogICAgICAgICBpZiAodmlzaXRvci52bSgpLmhlYXAuaXNNYXJrZWQobV9zdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fc3Ry
dWN0dXJlLmdldCgpKTsKICAgICAgICAgZWxzZQpAQCAtMTg1MSw3ICsxODg4LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwo
c3BpbGxTdGF0ZSwgcmVzdWx0UmVnaXN0ZXJUb0V4Y2x1ZGUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkp
IHsKICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAgICAgIHZhbHVlUmVn
cywKQEAgLTE4OTYsNiArMTkzMyw3MSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c2xvd1BhdGguZW1wdHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYXNlIERl
bGV0ZTogeworICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgYWxs
b2NhdG9yLmxvY2soYmFzZUdQUik7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIp
OworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFz
QmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmlzUHJv
cGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHZh
bHVlUmVncy5ncHIoKSk7CisgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIpOwor
ICAgICAgICBBU1NFUlQodmFsdWVSZWdzLmdwcigpICE9IHNjcmF0Y2hHUFIpOworCisgICAgICAg
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUg
PQorICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5n
KGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFT
cGFjZSk7CisKKyAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIGJvb2wg
aGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVy
KG1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNh
c2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4KKyAgICAg
ICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKCFtYXlOZWVkVG9DaGVja0NlbGwpOworICAgICAg
ICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ug
b3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KKyAgICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0
dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVh
ZGVyOworCisgICAgICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOworCisg
ICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkpIHsKKyAgICAg
ICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIGJhc2VHUFIpOworICAgICAgICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAg
ICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAg
ICAgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0SW5J
bmxpbmVTdG9yYWdlKG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VH
UFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdzLAorICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbkJ1dHRlcmZs
eShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHVp
bnQzMl90IHN0cnVjdHVyZUJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KG5ld1N0cnVjdHVy
ZSgpLT5pZCgpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVCaXRzKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAg
ICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpKTsKKworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lz
dGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3VjY2Vl
ZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVOb25Db25maWd1
cmFibGU6IHsKKyAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihm
YWxzZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU1pc3M6IHsKKyAgICAg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0cnVlKSwgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheUxlbmd0aDogewogICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuaAppbmRleCA3OWQzMTAxNTVlOTNhNTQ1M2QyODYxYzQzMjI3YmEzYmFjMTlm
Mjc3Li5jNmM4MTg0NDYzNDFkMGE0M2M2N2FlYzkzMTgzMzM3NDc4N2QxODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTg1LDYgKzg1LDkgQEAg
cHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBMb2FkLAog
ICAgICAgICBUcmFuc2l0aW9uLAorICAgICAgICBEZWxldGUsCisgICAgICAgIERlbGV0ZU5vbkNv
bmZpZ3VyYWJsZSwKKyAgICAgICAgRGVsZXRlTWlzcywKICAgICAgICAgUmVwbGFjZSwKICAgICAg
ICAgTWlzcywKICAgICAgICAgR2V0R2V0dGVyLApAQCAtMTQ2LDggKzE0OSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBzdGQ6OnVuaXF1ZV9wdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7CiAKICAgICAvLyBUaGlzIGNyZWF0ZSBt
ZXRob2Qgc2hvdWxkIGJlIHVzZWQgZm9yIHRyYW5zaXRpb25zLgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYs
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPik7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICAgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUpOwogICAgIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIApAQCAtMTU3LDcgKzE2Myw3IEBAIHB1
YmxpYzoKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0
aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0K
QEAgLTE2NSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24pOwor
ICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSk7
CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4
IDEzMjQwOWMwYTQ1MTBiZGZhOGVjZTMzYjc0MzQ3MTYwMmQ3YjBlNzkuLmIxNjZjMzBjMThhNTIz
YTc2MjVmMzlhZjZiNzg5NTA2N2FhNWYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNzk1LDYgKzc5NSwxNSBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNjZXNz
VHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2FzZTo6VHJhbnNpdGlvbjoKICAgICAgICAgb3V0
LnByaW50KCJUcmFuc2l0aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nh
c2U6OkRlbGV0ZToKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGUiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgICAgICBv
dXQucHJpbnQoIkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU1p
c3MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzQ2FzZTo6UmVwbGFjZToKICAg
ICAgICAgb3V0LnByaW50KCJSZXBsYWNlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4
IDYxNzg3MzdmOWY4YTljZDBiNmRkYWQ1N2YxY2YxMmVmZTRmY2E3MDUuLjk2YTFiYWVjYmU0Y2Ji
Yjc2ZGJkZWRhODA1NjVhMmM1OTg2NTUyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjc2LDYgKzI3NiwxMiBA
QCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAg
ICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigq
dGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoK
KyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWw6CisgICAg
ICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7
CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCBkZGNl
ODVlYzAyNTU1NzZjOWUzNDUxZjY0NzM2ZDEyYzM4OTQyODAzLi5iNTc1YmRkMjE2MTljMmRmZTRm
MTgyZmFlZDkwZjI2OGU5ZTI2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTUsNyArNTUsOSBAQCBlbnVtIGNsYXNz
IEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdldEJ5VmFsLAogICAgIFB1dCwKICAgICBJbiwK
LSAgICBJbnN0YW5jZU9mCisgICAgSW5zdGFuY2VPZiwKKyAgICBEZWxldGVCeUlELAorICAgIERl
bGV0ZUJ5VmFsCiB9OwogCiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKaW5kZXggMjZl
MjgyOTM5ZTlhY2E4ODY1YzIyMTc3M2MyYTQxZTAyODA5NGRkYS4uNDhiNWI4NmZhNGI5ZTg2NWVh
NDhkYzk5YTQ5M2JkOTQ4ZDA3NGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAtMTI5LDE0ICsxMjksMTQgQEAgYm9vbCBEZWJ1
Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFs
T2JqZWN0LT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBz
Y29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUKHNjb3BlLT5p
c1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShz
Y29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9i
YWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29w
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAppbmRl
eCBmZjRjZTFiMWRhNGI1NzkwZGU4YWQ5ODhhNzFmNjAyY2RmMjYxNjc0Li40MzI3YzFmMDJjNjky
Nzg0NTA4ZTBhOWExYTIxNDk3NzVlZGQ4MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAppbmRleCBlM2UyMDhkMmRhMWNkNzM5YmZhY2M4YzM0YzU0OTdjYzU2MmRiOTM2Li4zODcx
NTkxNzg5MDMxMjBhNjEyNjQ1ZTRhMjM0MzUxM2JhNWRiZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjQ2LDYgKzI0Niw4IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXpl
SW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGlu
ZUNhY2hlcyhtX3B1dEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2Rl
bEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRz
LCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBs
aW5rQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDQ4ODA4NzRjMjg1YWI3ZDQ0N2ViODkzYTZlOGI0YmJmMDEwNzMxZDQuLjJmYjZhZDhm
NjJmOTVhMjZlNmNkYjgyNmFhNmQxY2Q2N2YxOTQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE5MSw3ICsxOTEsMTcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgbV9wdXRCeUlkcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5
SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFk
ZERlbEJ5SWQoY29uc3QgSklURGVsQnlJZEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRv
ciogc2xvd1BhdGgpCisgICAgeworICAgICAgICBtX2RlbEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNo
ZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwor
ICAgIHZvaWQgYWRkRGVsQnlWYWwoY29uc3QgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xv
d1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9kZWxCeVZhbHMuYXBw
ZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0
aCkpOworICAgIH0KKwogICAgIHZvaWQgYWRkSW5zdGFuY2VPZihjb25zdCBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKICAgICB7CiAgICAg
ICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CkBAIC0zNDgsNiArMzU4LDggQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
cj4sIDQ+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVy
PEpJVEdldEJ5VmFsR2VuZXJhdG9yPiwgND4gbV9nZXRCeVZhbHM7CiAgICAgVmVjdG9yPElubGlu
ZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiwgND4gbV9wdXRCeUlkczsKKyAgICBW
ZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5
SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+
LCA0PiBtX2RlbEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJ
ZEdlbmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVy
PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwogICAgIFZlY3RvcjxK
U0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjQyYjE2MzU2ZjkwZTljMzg2MDJlYmM1N2Zk
OWUwNGEwZjQ1YjUyOC4uNGViYmEzN2E0ZjIzYmYzODVhMTU1ZWFjYzdlNzA3YWIzOGQ0ZGFjMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
QEAgLTExNDgsMzggKzExNDgsNzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlW
YWwoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5v
ZGUqIG5vZGUpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIGF1dG8qIHByb3BlcnR5ID0gaWRlbnRp
ZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOwogCi0gICAgdmFsdWUudXNlKCk7Cisg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhj
ZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUo
KSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMo
KTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeUlkLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJl
Z3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
ICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwp
KQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJl
Z3MpKTsKIAotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAor
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsCisgICAgICAgIHZhbHVlUmVncywgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKKwor
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsIHByb3BlcnR5KTsKKworICAgIG1faml0
LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwoTm9kZSogbm9kZSkKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwot
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
a2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAKLSAgICBiYXNlLnVzZSgpOwotICAgIGtleS51c2UoKTsKKyAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCi0gICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywga2V5UmVn
cyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExp
c3Qgc2xvd0Nhc2VzOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5p
c1R5cGUoU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlUmVncykpOworICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MigpKS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CiAKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICBKSVREZWxC
eVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIGtleVJlZ3MsIHJl
c3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
KyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAor
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VS
ZWdzLCBrZXlSZWdzKTsKKworICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0ZDM0MjdiYzgyZThj
OWIyNDdhYzg3MWEwMjAwMDFiYjIzODI5ZjI2Li45ZjNlYjBlZWM5MTRhN2RkOWZkMDBiYjdmY2Q2
NDMwZDhmMDAyMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC01MTQ0LDIwICs1MTQ0LDExMyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdElu
dDMyKG1fbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8RGVsQnlLaW5kIGtpbmQ+CisgICAgdm9pZCBjb21waWxlRGVsQnkoKQorICAg
IHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50OworICAgICAgICBhdXRvIGJh
c2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkOworICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3Jt
YWwpIHsKKyAgICAgICAgICAgIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKV07CisgICAgICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hw
b2ludChJbnQ2NCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRW
YWx1ZShiYXNlLCBWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYXV0byBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwor
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFs
dWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKHN1YnNjcmlwdCwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIp
KTsKKyAgICAgICAgfQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVycyA9IDE7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGV4Y2VwdGlvbkhhbmRsZSA9CisgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4
Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3Rh
dGU7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisKKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlz
dD4gZXhjZXB0aW9ucyA9CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2No
ZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKworICAgICAgICAgICAgICAg
IGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAgICAgICAg
ICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFz
ZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
cmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworCisgICAgICAgICAgICAgICAgY29u
c3RleHByIGF1dG8gb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAg
ICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAg
ICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
YmFzZS5ncHIoKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdl
bmVyYXRvciA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJv
eDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybkdQUiwgcGFyYW1z
LmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YnNjcmlwdCwgcmV0dXJuR1BSLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICAgICAgcGFy
YW1zLmFkZExhdGVQYXRoKAorICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rp
b24sIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NChwYXRjaHBvaW50
KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZCgpCiAgICAgewotICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlm
aWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0Qm9vbGVhbiht
X291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBtX291dC5jb25zdEludFB0cih1aWQpKSkpOworICAg
ICAgICBjb21waWxlRGVsQnk8RGVsQnlLaW5kOjpOb3JtYWw+KCk7CiAgICAgfQogCiAgICAgdm9p
ZCBjb21waWxlRGVsZXRlQnlWYWwoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigp
KTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVy
YXRpb25EZWxldGVCeVZhbCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2Ny
aXB0KSkpOworICAgICAgICBjb21waWxlRGVsQnk8RGVsQnlLaW5kOjpOb3JtYWxCeVZhbD4oKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlQdXNoKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1YjRhZGU0NDRjNDNmNWFkZGYyMzE3ZjQy
NjViNy4uOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2YzE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTcwLDcgKzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQdXRCeUlkUmVw
bGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAotICAgIG1hY3Jv
KEluQnlJZFNlbGZQYXRjaCkKKyAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpIFwKKyAgICBtYWNy
byhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAorICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5l
cmljKQogCiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCAwOTFjNGY3ODJhMDc4NGZjNDUyNWVkMjA3OTY5Y2QxYjc4NzQ0ZTg2Li5jNmU2MWI4
OWJmOWExYTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCkBAIC01MDAsNiArNTAwLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID0gMDsKICAgICBtX3B1dEJ5SWRJbmRl
eCA9IDA7CiAgICAgbV9pbkJ5SWRJbmRleCA9IDA7CisgICAgbV9kZWxCeVZhbEluZGV4ID0gMDsK
KyAgICBtX2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXggPSAwOwogICAg
IG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0g
MDsKQEAgLTU4MCw2ICs1ODIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0
X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCisgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9zdWIpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9oYXNfaW5kZXhl
ZF9wcm9wZXJ0eSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3Bl
KQpAQCAtODc1LDYgKzg3OSw4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAg
ZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeVZhbHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5h
bGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMsIHBhdGNoQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBwYXRjaEJ1ZmZlcik7CisgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9kZWxCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5s
aW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVD
YWNoZXMobV9pbkJ5SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCA3YjQ0MDc0OTYzMzM2ZmNiODk0MWViZDA1YjU5NzMxMjlhOWU4NjU1Li42NzE2NjYxZGY0ZmFj
ZWE1ZWZlZDVmNTEwODFmMDU5YjZkMjUzZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTUwMCw3ICs1MDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2lk
ZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
bF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Rl
bF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKGNvbnN0IEluc3Ry
dWN0aW9uKik7CkBAIC05MTMsNiArOTE1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZl
Y3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAg
ICAgICAgVmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CiAgICAgICAgIFZl
Y3RvcjxKSVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVERl
bEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVREZWxCeVZhbEdl
bmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yPiBtX2luc3RhbmNlT2ZzOwogICAgICAgICBWZWN0b3I8QnlWYWxDb21waWxhdGlvbkluZm8+
IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZlY3RvcjxDYWxsQ29tcGlsYXRpb25J
bmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CkBAIC05MzQsNiArOTM4LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggeyBVSU5UX01B
WCB9OwogICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAg
ICAgIHVuc2lnbmVkIG1faW5CeUlkSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25l
ZCBtX2RlbEJ5VmFsSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5
SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4
IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgVUlO
VF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOTIwYjcyMDNlM2NmNGJmMDZlZWQ0NTczYTM5Y2I1NmJj
Y2E2NWQ1YS4uYjBhZDYzYmM1MTFjMjc1NTQzNzcxMjBhNDhmZmYzNjJiZDE1NWYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5jcHAKQEAgLTE2Miw2ICsxNjIsNjggQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKSSBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCitKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQor
eworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAgIEFT
U0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJhc2VH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BS
ID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVz
dWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9
IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIo
KTsKKyNlbmRpZgorICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7
Cit9CisKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93
UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgp
OworfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3Rh
cnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OworfQorCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJh
c2UsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ss
IGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRS
ZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1
ZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJ
bmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5w
cm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBy
ZXN1bHQ7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BS
ID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7
CisjZW5kaWYKKyAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOwor
fQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3Nl
bWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwor
fQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXIm
IGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5p
c1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRo
LCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9
CisKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCmluZGV4IGJmYjkwMjE2YjI5YzI3ZmZkMGVkOGQ3ZjBmNTg3ZTA4ZmU2ZTczMTYuLjI2ZTcw
MGZiYjdhZDE4M2JlMWFjYmE3M2YzN2Y2ZmI0MmZlZmNkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTE0Miw2ICsx
NDIsNTYgQEAgcHJpdmF0ZToKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKK2NsYXNzIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKAorICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKworICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93
UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExp
bmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVm
ZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitw
cml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKworY2xhc3MgSklURGVs
QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNp
bmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5
SWRHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCisgICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgc2NyYXRjaCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1Nl
dCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAg
ICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIs
IExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CisKKyAgICB2b2lkIGdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQ
YXRoSnVtcDsKK307CisKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGUzNjI2NzMyNWM3
NGFlMjJmODYxOGVhOWUyYWQwMDJlNDhkYzYzMzQuLjdiZGYxZjczMmJmNGUwNWQ5Yjg1Njk2ZWY0
Njg0N2YzYjU2MTA3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMjE0Miw3ICsyMTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KgogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+aGFzUHJvcGVydHlHZW5l
cmljKGdsb2JhbE9iamVjdCwgaW5kZXgsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KICAgICAKLXN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwg
SlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc3RhdGljIGJvb2wgZGVsZXRl
QnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Vk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKQEAgLTIxNTAsMzEgKzIxNTAsNTEgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHYKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFiYXNlT2JqKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9i
ai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCksIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpOwogICAgIHJldHVy
biBjb3VsZERlbGV0ZTsKIH0KIAotCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpLCB1aWQpKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpOworCisgICAgYm9vbCByZXN1
bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFzZVZh
bHVlLCB1aWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAg
ICAgICAgaWYgKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlm
IChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERlbEJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJl
dHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0
ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBWTSYgdm0sIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkpCitzdGF0aWMgYm9vbCBkZWxldGVC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Vk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBr
ZXkpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0y
MTkwLDcgKzIyMTAsNyBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgZWxzZSB7CiAgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHkgPSBrZXkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIGNv
dWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNl
T2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVj
dCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSkKQEAgLTIxOTgsMjAgKzIyMTgsNDIgQEAgc3RhdGljIGJvb2wgZGVs
ZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIFZNJgogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCAgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEtleSkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeVZhbChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkS2V5KSkpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJz
Y3JpcHQpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJl
c3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgYmFz
ZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgeworICAg
ICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSB8fCAh
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoc3R1YkluZm8t
PmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxs
KCkpKQorICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgKnN0dWJJbmZv
LCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKTsK
KyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpOwogfQogCiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9iamVjdFZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2MjEw
YzVhMDczNDE5NjgzZDYwZWE4YzQ4Y2Q0M2VlZmY4MmEzMDBjLi42MDBmY2EyOWRjMjAzODVkYzUw
MjIyODAyNTQxMTJjYWMzMWQ2ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlW
YWxJbmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFs
SW5mbyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsK
LXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
Oworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lO
VEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1ZhbHVlIG9i
amVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hX
aXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJy
ZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3Qq
KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUyZjcxM2U4YWEwYWZiNWU4MDVjN2NmM2YxZDM4ODM3MWMy
ZjYuLjJiYTBmYTY4NDhiY2U4MjlhY2Q2NDE5MDVmMDVmNGJkNTRkY2JlMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0zODcsOSAr
Mzg3LDM5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAg
aW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMSwgYmFzZSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QwLCByZWdUMik7CisgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOworICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9j
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuaW1wbCgpOworCisgICAg
SklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1ttX2RlbEJ5SWRJbmRleCsrXTsK
KworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCByZWdUMCwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7
CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1p
emUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QwLCB1aWQpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkp
OworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC0zOTgsOSArNDI4LDQyIEBAIHZvaWQgSklUOjplbWl0X29wX2Rl
bF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOworICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOworICAgIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCByZWdUMCwgcmVnVDIpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlWYWxz
LmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDAp
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9w
cm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5VmFsc1tt
X2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
KwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxKTsKKyAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94
Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
dHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRjOGJkYWVlZjE0Yy4uYjY2OWRk
OGI3YWQyNmQzZjc3ZDk2ODZkZTYwODM0MzRmMzZkYmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMjMsNyAr
MTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBlbWl0
TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVs
ZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmlt
cGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBib3hC
b29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKQEAgLTEzMyw5ICsxMzUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwg
cHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCkpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKSB7IH0K
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9CisKIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTE4MjA0MTU1NGJkYzc2YzE5MWNi
MTM4NWQxM2E5YzgxZmZkNDVlYi4uYmU3NTAxZWYyMmMxODMzZTRmYjdmMDZhOWFiZTNhYWIwNzZl
ZGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC02NDEsNyArNjQx
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOworICAg
ICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKHZtLCBj
b2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgc2xvdC5pc0Nh
Y2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3Rv
bSgpKSB7CkBAIC03MzQsNiArNzM0LDcyIEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRL
aW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbEJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sIERlbEJ5S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisKKyAgICB7CisgICAgICAgIEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKTsKKworICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0
KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIGlmICghYmFz
ZVZhbHVlLmlzQ2VsbCgpIHx8ICFvbGRTdHJ1Y3R1cmUgfHwgIW9sZFN0cnVjdHVyZS0+aXNPYmpl
Y3QoKSB8fCAhb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisg
ICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIXNsb3QuaXND
YWNoZWFibGVEZWxldGUoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworCisgICAgICAgIGlm
IChzbG90LmlzRGVsZXRlSGl0KCkpIHsKKyAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG5ld09m
ZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHko
b2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCk7CisgICAgICAgICAgICBpZiAo
IW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwor
ICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFi
bGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNTRVJUKG5ld09mZnNldCA9PSBzbG90
LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChu
ZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZz
ZXQobmV3T2Zmc2V0KSk7CisgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKHZtLCBjb2RlQmxvY2ssIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwg
bmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChzbG90Lmlz
Tm9uY29uZmlndXJhYmxlKCkpCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGUs
IENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNldCwgb2xkU3Ry
dWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6
RGVsZXRlTWlzcywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBpbnZhbGlkT2Zm
c2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgIH0KKworICAgICAgICBy
ZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgY29kZUJsb2NrLCBwcm9wZXJ0
eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVk
U29tZUNvZGUoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7
CisgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRT
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29k
ZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/
IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7Cit9CisKK3ZvaWQgcmVwYXRjaERlbEJ5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNoZURlbEJ5KGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgeworICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JO
dWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIHByb3BlcnR5TmFtZSkpOworICAgICAgICBpZiAoa2lu
ZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgIH0KK30KKwogc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkBAIC0xMzkxLDYgKzE0NTcsMTUgQEAgdm9pZCBy
ZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKK3ZvaWQgcmVzZXREZWxCeShDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2lu
ZCkKK3sKKyAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgZWxzZQorICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OworfQorCiBzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5w
YXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDZmMGYyNjQxMWVjZGVhMTkyYjcwNjIxMGU4YTk5
NDRiYjRmOWZlMzkuLmMxZDk5NTlhZGFmZDM2NTc2MmU4OTE3OWFiM2MwZWVkNjZlNTg3ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00MSw5ICs0MSwxNSBAQCBlbnVtIGNs
YXNzIEdldEJ5S2luZCB7CiAgICAgRGlyZWN0CiB9OwogCitlbnVtIGNsYXNzIERlbEJ5S2luZCB7
CisgICAgTm9ybWFsLAorICAgIE5vcm1hbEJ5VmFsCit9OworCiB2b2lkIHJlcGF0Y2hBcnJheUdl
dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVl
IGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlcGF0
Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJl
KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlcGF0
Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIGNvbnN0IElk
ZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1lKiwgQ2FsbExp
bmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTUzLDYgKzU5LDcgQEAgdm9pZCB1bmxpbmtGb3IoVk0m
LCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50KTsKIHZvaWQgcmVzZXRH
ZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJl
c2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldERl
bEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVz
ZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbnN0
YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDIyNTRmY2M0Mjk2MTdj
ZTgzOTdkMjRlNTUwZTFhY2VjNjdiNjE0NDMuLmZhY2E3YmY0ZTE3OGQ0MjVmZmJlZmZlOTU0ZThm
MzFlYjAwMjA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtOTI1LDcgKzkyNSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9kZWxfYnlfaWQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcERlbEJ5SWQ+KCk7
CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV9iYXNlKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSwgc2xvdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBV
bmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKQEAgLTExMDgsNyArMTEwOSw4IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAgICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwot
ICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxl
SWRlbnRpZmllcklubGluZXMuaAppbmRleCBmZmIzZWI5ZDAwNWNmNmZkMDhmZmQyYmI4OGI5ZDU4
N2JhZWQwZmY2Li4xMDdiNWQ2MDcyMDM3MDUxZjZhN2MxZTljYjBjMTVmMjY1ODk3OTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmgKQEAgLTQyLDYgKzQyLDcgQEAgaW5saW5lIENhY2hlYWJsZUlkZW50
aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
IAogaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoSlNDZWxs
KiBpZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKGlk
ZW50aWZpZXIpKTsKICAgICBzZXRDZWxsQml0cyhpZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBmZTZjNmI3ZDg0YzQ3ZWRlZTEx
YWFjMTFmNjQ4NGE3MmQ0MTdiYzQ2Li43YTU5YjhmZGIwYzIyY2NiYmQyOGQ4MDMxZGE4YTE3ZWUw
NTM3MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAt
NTksNyArNTksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVzaW5nIFB1dEJ5SW5kZXhG
dW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBQdXRCeUluZGV4
RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHB1dEJ5SW5kZXgpOwogCi0gICAgdXNpbmcg
RGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRy
ID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKGRlbGV0ZVByb3BlcnR5KTsKIAogICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5QnlJ
bmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcAppbmRleCA5NmEzNjM1ZTY4MjczOTNlZTgzNmQ4MDQ3NzcyNGEyNWQ1NDZjMjYxLi5m
Njk5OWU3MzQ4NGUyYWJkODgxNDU0ZjExNDgzMTBjMDJkNGYyYTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTIyMCw3ICsy
MjAsNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIENs
b25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCitib29sIENsb25lZEFyZ3VtZW50
czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4o
Y2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjI5LDcgKzIyOSw3
IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6
ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZ2xvYmFsT2JqZWN0KTsKICAgICAKLSAgICByZXR1cm4gQmFz
ZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIGlkZW50LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hv
dWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5oCmluZGV4IGZkM2EyN2JmNzM1NTRkNWVlNGE2ZTMxZDBiYTBjYWQxNTc2MDVmZjUuLjAw
YzUzNDc1NjA1YTczYjJiM2ViMzhkM2NmODEzMjg4MzRmZjFiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBAIC03Miw3ICs3Miw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgCiAgICAgYm9vbCBzcGVjaWFsc01hdGVyaWFsaXplZCgpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMGUyYmMzYTI3MTljMmE5MzUzZTdkNzUy
MWE4NzliZDEyZDc0MDA2OS4uMWRlODIzOTUwOWUwYzhkN2E1NmEzMjQxNGZmZThhNzRhOWI3OGRk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC05ODUsNyArOTg1LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9i
eV92YWwpCiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhdXRvIHByb3BlcnR5
ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWxldGVQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0
ZVByb3BlcnR5U2xvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZmNmI0ODAwZWY1Nzg1NjFjYWVkYzlkZGJi
YzgyZjI1MzJlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisgICAgCitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3QgeworcHVibGljOgorICAg
IGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hlYWJsZSwgRGVsZXRlSGl0LCBDb25maWd1cmFi
bGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUgfTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xv
dCgpCisgICAgICAgIDogbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKKyAgICAgICAgLCBtX2NhY2hl
YWJpbGl0eShDYWNoaW5nQWxsb3dlZCkKKyAgICAgICAgLCBtX3R5cGUoVW5jYWNoZWFibGUpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlTWlzcygpCisgICAgeworICAg
ICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxldGVNaXNzOworICAgIH0KKworICAgIHZvaWQg
c2V0Tm9uY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IE5vbmNvbmZpZ3Vy
YWJsZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhpdChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX3R5cGUgPSBEZWxldGVIaXQ7CisgICAgICAgIG1fb2Zmc2V0ID0gb2Zm
c2V0OworICAgIH0KKworICAgIGJvb2wgaXNDYWNoZWFibGVEZWxldGUoKSBjb25zdCB7IHJldHVy
biBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBVbmNhY2hlYWJsZTsgfQorICAgIGJvb2wgaXNE
ZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRGVsZXRlSGl0OyB9CisgICAgYm9v
bCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ29u
ZmlndXJhYmxlRGVsZXRlTWlzczsgfQorICAgIGJvb2wgaXNOb25jb25maWd1cmFibGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmlndXJhYmxlOyB9CisKKyAgICBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0
OworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQorICAgIHsKKyAgICAgICAgbV9j
YWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dlZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVhYmlsaXR5ID09IENhY2hp
bmdBbGxvd2VkOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKKyAgICBDYWNoZWFi
aWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OworICAgIFR5cGUgbV90eXBlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwCmluZGV4IGYxODIxZDU1NmEzZDQwNDQ5MzY3NWVhZTI1ZmEyZTQ2Njcz
ZWM0M2EuLjY4NWM3YWNiYzExYzYyZDIzMzc3ZDMyYzRkZTlhMjBiNjU4NzhhOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBA
IC04Nyw3ICs4Nyw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAgICAgcmV0dXJuIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCi1ib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JDb25z
dHJ1Y3Rvcio+KGNlbGwpOwpAQCAtOTUsNyArOTUsNyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxp
bWl0KQogICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxp
bWl0KFdURjo6bnVsbG9wdCk7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDkzZDUyNzE0ODZmNjZmZGU3NTNlNDlh
NDAxNmYxNjgzOGU5NzU3MjEuLjlhNWE0NjMyMWIzZGJiNzY0YzJhMWI1MjFkOTI2OGY4ZDE0MzUz
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
CiBwcml2YXRlOgogICAgIEVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggZmQ0
OGJiZjM0YzMwNDMwZDJlNzBkZTU3NDk4ZTliNTFlNmFjMjQ0ZC4uMWQ1MGNkMTc0ZmM0N2Q5MjIx
NzE4OGUzMjVmZjU3YWU4ZDE1YjgxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5NywxMiArMjk3LDEyIEBAIGJvb2wgRXJyb3JJ
bnN0YW5jZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVycm9ySW5zdGFuY2U6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JJbnN0YW5jZTo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9ySW5zdGFuY2UqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNlbGwpOwogICAgIHRoaXNPYmplY3QtPm1hdGVy
aWFsaXplRXJyb3JJbmZvSWZOZWVkZWQodm0sIHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAppbmRleCBmMWZhYzU5
NjgyZDllMDI2NTA4Y2I0ZmY4YzliMjY3YjRlZTc2ZTg3Li40MDA2MDhkMDhhODM0Y2QzMWU2MTJl
NzNhYjUzMWNiMGEzY2ExMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMg
dm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wg
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCBjb21wdXRlRXJyb3JJbmZvKFZNJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVu
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApp
bmRleCBjZTEwZjdmZTQ4NzNlNGE0N2JlMTQxZTI1NTY5YWQ2NDhhZmY5ZDI4Li40NzEyMTY3MzAz
NjQ4MjhmZTI3NzBlMjM0ODY5YWNlNzA5MDhkMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBi
b29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMxYmI0MzBmNmQ1OGIxZDViMTE1ZGE1MTNjNWJj
YzBiZjUzLi5hNWE5ZWNiMzIyYTIwZGE4ZmUyNDMzZmZkNTQ3YTc4YWZjNjAyY2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJ
bmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm8KICAg
ICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2
YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpwdXQodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlc3VsdCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CkBAIC0xNTgsNyArMTYwLDcgQEAgYm9vbCBH
ZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLWJvb2wgR2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCitib29sIEdlbmVyaWNB
cmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4oY2VsbCk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDcgKzE3Nyw3IEBAIGJvb2wg
R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgoaWRlbnQpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsICppbmRleCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4
IDAzNDg3ZjYxZTBmMmZjNzUxYmE3MDNiNzBjYTM2ZDAyMjIxNjM0ZGUuLjYwMWYxZTQ5ZjE1Y2Q1
MDFhMGUwYTc1ZWUyODUwNmYzMmIwZGIzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwg
SlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFs
c2U7IH0KICAgICBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFs
c2U7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKICAgICBXcml0ZUJh
cnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAppbmRleCA2ZDA3NTkxNzExZWVkYmMyOGUwZTRkYTc4NDk4MjJhYjhkNjZmNWQx
Li5iY2UzNjU1YTMxOTJlYTI5MGZlN2YwNDA4MjRhMzg4NmY2YjA0ODM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIGJvb2wg
SlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVj
dDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCkpOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTQXJy
YXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwpAQCAtMzE0LDcgKzMxNCw3
IEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBzdGF0aWMgaW50IGNv
bXBhcmVLZXlzRm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAzMTE2NWI1ZmY0OTI1NGNjMWE2YzQ3
OTAyYjc5MTBhYzRhN2Q5YmZmLi5jZGMzOWI1MTJkN2VlM2ExNWNmMWFlYzJlMGEyZDkzZDlhYWFk
MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0xODIsNyAr
MTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMzZDFiYjYwZjhiNTMzYjE4NjA1OGVlYWQ4MWI3NS4u
NTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFiMWVkYzRhNzQxZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKK2NsYXNzIERlbGV0ZVByb3BlcnR5
U2xvdDsKIGNsYXNzIEpTQmlnSW50OwogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNDZWxsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggMjcxMzUyYjIxNzQ3
MDM1NmRmNDAzZmRkOWNkZTYwZGVmODg4MTYwNy4uMGU2N2Y4NjY3NmQ1ODY1YWE4OGYwNGYzNWFk
YTc0MzIxZTAyY2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBib29sIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZQogICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpT
Q2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKK2Jvb2wgSlNDZWxsOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBpZGVudGlmaWVyLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3QpOwotICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNsb3QpOwogfQogCiBib29s
IEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNjY1ZDA4ODljZjQ0NjFjM2FiMGEyYWY0YjA3YzZhNThj
OTA0MjFjNC4uMDYyZTgzZGIzOWFiMzRhNmVmNGZkYTM2ZmZhNTBlNGMxMTFkOTcxMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAg
Ym9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAK
ICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01B
TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmlu
ZGV4IDE0NmE5MTMyZDQ3MzUyNDJjMTA2ZTY1NTY0Nzc4ZTE3ZWQ3YmFiOGMuLjFiMjU1MjNjOThm
YmIwOWUzN2Y4YTQ3NDMxOWJmNzZjMzJkOGE4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBKU0RhdGFW
aWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKIH0KIAogYm9vbCBKU0RhdGFWaWV3OjpkZWxldGVQcm9w
ZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
RGF0YVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNEYXRhVmlldyo+KGNlbGwpOwpAQCAtMTYw
LDcgKzE2MCw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCiAgICAgICAgIHx8
IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlT2Zmc2V0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIHZvaWQgSlNEYXRhVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IDg2NDEwZTYxYWQ3ZTkx
ZDgyYTY3ZTk3ZWZiYjRmMzJmMWJjMTJlNzguLjk4YThjYzhiMzk4ZmZkZDdhMWM5NGJlNjU3ZjY1
NWU2Y2M3YjlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBjZDZlYzE1ZWUw
OWE5ZjM0Y2FmMmYyOTQwMGZjOTZkOWE1OWQ0ZGJjLi40MzQ2YWFhZWViNmE4ZWY1ZjUzMjg1ZTFk
NWFiNmY3NzIxMWE5NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICB9CiAgICAg
Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggYWRkZGUyYWMwM2E0MTBjNzA4YTc5MzRiNWE1ZDA2ODljYTFm
ZmFjZC4uMThhYjQ3NTQzZmQ3ODI5NzhhZmVhOTcyYzhjOWFjNmQ4NzAyY2JmOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTc5LDcgKzE3OSw3IEBA
IHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aAppbmRleCBmMDhmODUyNDY5YmVmZDZjNWFkNDNhZjJhNTAwOTJiZWVmZTJiMzlhLi4zYjdiYmRl
NzY1Y2UxYzM1NjU1MGVjZDU4Yjc3ZmVkOWQ2MTA2ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTMw
NSw3ICszMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IDBjYWZiZDI3NmNmNzRkMGM4NWVmOGJlN2RiZTQwM2QzYzc2NGIzNDIuLjU4ZmJiNTc1
NjJiNzEwMDc5ZTY1MTQwZjdlMDllNzA4MDQ4ZmEzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCkBAIC00MzgsNyArNDM4LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6ZGVmaW5lT3duUHJvcGVydHkoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSgK
LSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSgKICAgICBpZiAo
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgpAQCAtNDg0LDcgKzQ4NCw4IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCgKICAgICBKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIGNlbGwtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShjZWxsLCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGIzYzk4MGE0NjYyYWVlZWExMjQw
YTU2NmM1ZDRhMThhOTI4NzFmN2UuLjBmODkwMzAwYmViNzg0YzcxNzlhODczZmFjZmNiMmE4NGQw
YzllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTEzMTQsNyArMTMxNCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmFkZEZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKLSAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICBhZGRHbG9iYWxWYXIocHJvcGVydHlOYW1lKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwCmluZGV4IGYzNDVjNTAyN2FiYTk0MDg0NDcxZTMxYjdiOGQ3ZWUyYTJmODg3MTMu
Ljk3NGI5MmI1NGUxYTMzODMxNjlkZWZhYjJhOWE3ZGRlNjQ2ZGEwNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAK
QEAgLTEyNywxMyArMTI3LDEzIEBAIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJu
IHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShnbG9iYWxPYmplY3QtPnZtKCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEpTTGV4aWNhbEVudmlyb25tZW50Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTGV4aWNhbEVudmlyb25tZW50Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aAppbmRleCBkMDEzYjUxZWZhMjk3ZWJmMDNjYTQyNDAwMTdhNjdhY2MxM2I5Mzk3Li4wNWU0ZTY1
YzJkZDQ5M2ZmN2E0ZTMxYTQ4MjZiNzBjMjUwYzU3OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTExMCw3ICsx
MTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIERF
Q0xBUkVfSU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcAppbmRleCBmZWI1NTEwODc0ODAzOTBkMzQwOWU2Y2FhOTQ4
MDBiNzI5ZjdjNzNkLi44NThhOTQyZmU3MzU1Y2Y4YzExODA1YThkMDVlMDY1M2Y4YTIxODMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25t
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmly
b25tZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJvb2wgSlNNb2R1bGVF
bnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU01vZHVsZUVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wg
SlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb246OlR5cGU6OlJlc29sdmVkKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQu
aAppbmRleCBkYWVhYjY2MmZjMDRkYWJkZDI2ZDE0MTQ1ZjM2ZWIxN2UyNzkyYTc5Li4wMTMwZjg3
ZmI5OGJiMmE4MmRhYTI5YTU5NjM1MmU3MTliYjdlZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0m
LCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApp
bmRleCAyYmRiMTMwNWViMGM0YmU5NjA4MDY1YmQzNDg1OWM3YWYxNDhiMmExLi4xZmM2YTI2NWI4
Y2E2NWFkMTE5MDJmNWQwMTNlZDY1ZDg2NTYxODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC0x
OTksMTIgKzE5OSwxMiBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVz
cGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICByZXR1cm4gIXRoaXNPYmplY3Qt
Pm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgK
aW5kZXggOGVlZjYyMWUzYjg0ZmE2NjI4Y2ZhMmY4MTRkYTYyOGYwNjc4N2QxZC4uODExMzY0ZGQx
N2ExM2U3ZWZiZmNmMWM5ZTI4NjMwZTI0MmE3MTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCkBAIC01Niw3
ICs1Niw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggZDBkMTcyMWNmMWRlYjgz
M2Y5Y2IwMWUyYmYzMjFiMDZlZDQxOTZjOS4uZWRhMmQ2MjM1MDk5ZWQzMDFiYjBhZTExNDUxNGYz
MmUxNTRjYjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5jcHAKQEAgLTc1OSw5ICs3NTksMTAgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3
YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgZmlsdGVyZWRWYWx1ZSA9IGNh
bGxSZXZpdmVyKG9iamVjdCwganNTdHJpbmcodm0sIHByb3Auc3RyaW5nKCkpLCBvdXRWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAg
ICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBt
X2dsb2JhbE9iamVjdCwgcHJvcCk7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBw
cm9wLCBzbG90KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9w
LCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2subGFzdCgpKys7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYWNkMjlkZWQ4
MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFkZi4uMzQ3MzJlMWMyYmYzNmZlNWQ3OTc3YzFi
ZGUyNWNkYWVkNjNhYzliMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcApAQCAtMTk3Miw3ICsxOTcyLDcgQEAgYm9vbCBKU09iamVjdDo6aGFzUHJvcGVydHlH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnQKIH0K
IAogLy8gRUNNQSA4LjYuMi41Ci1ib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU09iamVjdCo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAg
LTE5OTksOCArMTk5OSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogCiAgICAgYm9vbCBw
cm9wZXJ0eUlzUHJlc2VudCA9IGlzVmFsaWRPZmZzZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcykpOwogICAgIGlmIChwcm9wZXJ0eUlzUHJlc2VudCkgewotICAg
ICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlICYmIHZt
LmRlbGV0ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSkKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0Tm9uY29u
ZmlndXJhYmxlKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAg
ICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRj
aHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKIAogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtMjAwOCw3ICsyMDEwLDkgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXIKICAgICAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBbXSAoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQsIFByb3BlcnR5T2Zmc2V0KSB7IH0pOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVm
ZXJyZWRXYXRjaHBvaW50RmlyZSk7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+bV9idXR0
ZXJmbHkgJiYgIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5o
YXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgc2xvdC5zZXRIaXQo
b2Zmc2V0KTsKKyAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0
cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJmbHkpOwogICAgICAgICAgICAgICAgIHRoaXNP
YmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkodm0sIHRoaXNPYmplY3QtPnN0cnVj
dHVyZUlEKCksIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIG9mZnNldCA9IGludmFsaWRPZmZz
ZXQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bWF4T2Zmc2V0KCkgPT0gaW52
YWxpZE9mZnNldCk7CkBAIC0yMDIwLDcgKzIwMjQsOCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cgogCiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHRo
aXNPYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmNsZWFyKCk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBzbG90LnNldENvbmZpZ3VyYWJsZU1pc3MoKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjAzMCw4ICsyMDM1LDEwIEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgCi0gICAgaWYgKGkgPiBNQVhfQVJS
QVlfSU5ERVgpCi0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaSkpOworICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKSB7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb20odm0sIGkpLCBzbG90KTsKKyAgICB9CiAgICAgCiAgICAgc3dpdGNoICh0aGlzT2JqZWN0
LT5pbmRleGluZ01vZGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgpA
QCAtMzYyNSw3ICszNjMyLDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlw
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgIC8vIEEgZ2Vu
ZXJpYyBkZXNjcmlwdG9yIGlzIHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcyBvZiBhbiBl
eGlzdGluZyBwcm9wZXJ0eQogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3Io
KSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYm
IG9iamVjdCkgewotICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxPYmplY3QsIG9iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3Vy
cmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgICAgIH0KQEAgLTM2NDEsNyArMzY0OSw4IEBA
IGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0
dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCks
IGN1cnJlbnQpOwogICAgIH0KQEAgLTM2NjUsNyArMzY3NCw4IEBAIGJvb2wgdmFsaWRhdGVBbmRB
cHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoIW9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3Vy
cmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM3MTgsNyArMzcyOCw4IEBAIGJvb2wgdmFsaWRh
dGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCoKIAogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0
dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0ZXIpOwogCi0gICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgdW5zaWduZWQgYXR0cnMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5n
Q3VycmVudChjdXJyZW50KTsKICAgICBvYmplY3QtPnB1dERpcmVjdEFjY2Vzc29yKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmlu
ZGV4IGVjNjMwMGVhOWI5NzJjZTliYTBmYWQ4MTgyNTdhZmIyMGQ4MmEyZWQuLjVlZGM3ZjcwZTcx
Mjc4NDYxOTBjMjUyMDE2Y2RlNzdiMDRmZmYxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5o
IgorI2luY2x1ZGUgIkRlbGV0ZVByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0
ZUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmRleGluZ0hl
YWRlcklubGluZXMuaCIKQEAgLTYyMyw3ICs2MjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNP
d25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgYm9v
bCBoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKSBjb25zdDsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1Zh
bHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
Y3BwCmluZGV4IDljNDc5MzRlNGEzZDkxOTlmYTk4NDJkZDA1MmNlODhkMjQxNTJhYzEuLmQwYmJj
MmM1YTJkMjIxOTEyN2NkOTliMzAyMDkzMDg4NzIxMjNiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAgYm9vbCBKU1Byb3h5
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0
KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7
CiB9CiAKLWJvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBK
U1Byb3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxs
KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9i
amVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29s
IEpTUHJveHk6OmlzRXh0ZW5zaWJsZShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCmluZGV4
IDM1MWU2NjhkMjU5MGQ5Yjk3YzhmNGJiYTJiZmZiNDAwZGIzZjIxMDkuLjViZTdiZjBkMmU1YThi
MzJjNzk0YzBiMjU4OTU3OThmYzVmOWVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAKaW5kZXggNjMwZTFiNzhiYjIwNmU3YWY2MTdjM2M2ODJjMzRmNWUxNzU1ZjVkNS4uMTI1
ZjZjMzE1MGU5NmFlY2Q1Mzc0NzMxZmRhOGQ5YTdiYWZiYTI0OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTQ0
LDEzICs0NCwxMyBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKIH0KIAotYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTU3ltYm9sVGFibGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTeW1ib2xUYWJs
ZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5jb250
YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNTeW1ib2xUYWJs
ZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBjN2MxZTIwYTY1NDc2YmM3MDY4
ZWU2M2RlZDk4YjMzNWRmNzM2YjIxLi5iNTY4ZThmOTJhOTgzZmI0Y2MyMDNhN2EwNjIxODBhZTRm
ZTU5MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0K
ICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAg
IAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU1N5bWJvbFRhYmxlT2JqZWN0LCBtX3N5bWJvbFRhYmxlKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCmluZGV4IGI2NTIw
MjIxYTgxNTk4ZmZlZjJhNWUxNGE4MGZkNGU1NGRjNjljNmUuLmIwN2UwYTAyOTMzMjgyNjEwMzZm
NDExMDZlZWVlOWU1ZjkwYzY2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAKQEAgLTY4NSwxMiArNjg1LDEyIEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJveHlPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUHJveHlPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFByb3h5T2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7CiAgICAgYXV0byBwZXJm
b3JtRGVmYXVsdERlbGV0ZSA9IFsmXSAoKSAtPiBib29sIHsKICAgICAgICAgSlNPYmplY3QqIHRh
cmdldCA9IHRoaXNPYmplY3QtPnRhcmdldCgpOwotICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRo
b2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFi
bGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+
cGVyZm9ybURlbGV0ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgcGVyZm9ybURlZmF1bHRE
ZWxldGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgK
aW5kZXggMTdjYTI5ZmIwYTNmZGRiYTcxZWI2ODI0OWMwOTljYTI4YTNkNjJlZC4uZWU1YmQ5MDU4
Y2ZhODE4YTQ2NzRhNTIyYmY2MGEyY2EwOWVhYzFiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgcHJldmVudEV4dGVu
c2lvbnMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGlzRXh0
ZW5zaWJsZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0NmRjYjc1MDZkYTU3MGU0Yzk3
ZWI5M2EwOWMwMDQ4MWE1MTUzODI3Li4xY2UxYjRjMzNhYWYxYTQ1ZGYwNzI0MWY0ZGQzMGM2N2Q2
N2EyZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKQEAgLTcxLDEyICs3MSwxMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGFz
dEluZGV4KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFz
ZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggNWU5OWViMzhiNzEzYTk0
MjYzNzE5MWE4OWYwYjdjOTZjNWZiYjcxNC4uODU3Y2EyZTcyYWYzNDBlYWUzNjU3MDFkNTVjYTA3
ZWQ4M2UwYjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fcmVnRXhwQW5k
TGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAobV9yZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdy
aXRhYmxlRmxhZyB8IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFnKTsKICAgICB9CiAKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2
YXRpb24uY3BwCmluZGV4IDUxNTc1Mjc2NWVjYjAyZDE5YzA0MGU5ZjIxYjk2NDlmNzUxN2I5NDcu
LjUxZGJjNjdjNTdmODE1NjFmYTc4ZDE5NGVmYWYwNDljMDdhOGFkNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgU3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmljdEV2YWxBY3RpdmF0
aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUKIHsKIH0KIAotYm9vbCBT
dHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAppbmRleCBjZGNjMjFiN2U1
ZmE3YjEwOTZiMjZkMTg3MDc0Y2JmMTdlYjgzYzI5Li4yNDE1NDVlODE2OTM2MmJmNjkyMGE5MTli
OGZlMGZkYmI3YTEwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc2NvcGU7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCmluZGV4IDQ3N2I5Y2FmYjNmYTAwOGYwZjcwNTY4YjZkYjZmNGExNTE4NmQwNmUu
LjQ4NmRkOTI3M2I3NTA1OGE0N2Y3NjlhM2ZjZjg3NzVlNjkwY2QzOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTI1LDcgKzEyNSw3
IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwogfQogCi1ib29sIFN0cmluZ09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgYm9v
bCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHIKICAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmludGVy
bmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgoaW5kZXgudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGEzNDA1ODE3ODkzNGQ4NTI1
MGFjYjNhM2U0ZGEzNTJmMjI3ODY1MjMuLjY5ZjI2YjdkNzI0YmJlZjczMjMzMTk0N2U4MGI3Yzdm
YWZjZjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCmluZGV4IGVkYTQ0NmJmYmUyNjdhYjAxYjg1MmUxNWZkZTljOWMzMGU2ZjU4
ZTYuLjYzNjk0ZjBjNGFkZDFiYTRlYjc0ZGJhZDI2MWQ3MDAzZTgyNzNlNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtNTQwLDggKzU0MCw3IEBA
IFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewotICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJy
ZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQp
OwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7CiAK
QEAgLTU0OSwxNiArNTQ4LDEzIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAgICAgICAgIHZt
LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7CiB9CiAKLVN0cnVj
dHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUqKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogICAg
IEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NF
UlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0g
ICAgc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7Ci0KICAgICBj
b25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7CisgICAgb2Zmc2V0ID0gaW52YWxpZE9m
ZnNldDsKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUt
Pm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMsIGlz
QWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+
dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkp
OwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQo
KTsKQEAgLTU2OCwxMSArNTY0LDMwIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCit7CisgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAw
OworICAgIGlmIChzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5hbWUudWlkKCks
IGF0dHJpYnV0ZXMpID09IGludmFsaWRPZmZzZXQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJ
bXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQorCitT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXMgPSAwOworICAgIGlmIChzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0
eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMpID09IGludmFsaWRPZmZzZXQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xv
Y2spOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwor
fQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAg
QVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZSh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpKTsK
KyAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0
aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKKyAgICBBU1NF
UlQoc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpKSAhPSBpbnZh
bGlkT2Zmc2V0KTsKIAogICAgIGludCB0cmFuc2l0aW9uQ291bnQgPSAwOwogICAgIGZvciAoYXV0
byogcyA9IHN0cnVjdHVyZTsgcyAmJiB0cmFuc2l0aW9uQ291bnQgPD0gc19tYXhUcmFuc2l0aW9u
TGVuZ3RoOyBzID0gcy0+cHJldmlvdXNJRCgpKQpAQCAtMTIwMyw3ICsxMjE4LDcgQEAgUmVmPFN0
cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCYgc2F3UG9seVByb3QKIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJ
bmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMp
LCAiOlsiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkKCkpKSwgIiwgIiwg
Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwogICAgIAogICAgIENvbW1hUHJpbnRlciBj
b21tYTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5k
ZXggNTJjZDNjNzFkOTIwZjJmOGE5N2I0NjBiOTBlMGVjNzBkNWQ3MTFhZi4uYWUyMGFlOTZiYTQw
MzJmNmFhMWY5NGJlM2MxNzRiNzYzYzczZmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNsYXNzSW5m
by5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxldGVQcm9w
ZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xOTEsNyArMTkyLDggQEAgcHVibGljOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNp
dGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJl
bW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVm
ZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAg
c3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERl
ZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZz
ZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZN
JiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVy
ZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIp
OwpAQCAtNDc3LDYgKzQ3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJ
bmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRl
eGluZ0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qp
OwogCkBAIC03MTYsNiArNzE5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3Ry
dWN0dXJlIHRoYXQgaGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRh
YmxlLAogICAgIC8vIGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBi
ZWZvcmUgd2UgZ290IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAwY2Q5OGQ1MmFjYzdmNzE0
YzA1YjE1M2UwODEzOWU0OTFjZDhjZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3NWQyYzc2MWUyMzIy
YTQ2MDE3NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCkBAIC0yMjQsMTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6
Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBp
ZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNB
cnJheUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0K
IAoraW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVz
dENoZWNrQ2VsbCkgY29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYg
KGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2Iu
dHlwZSgpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0
cnVlOworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7
CiAgICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2Jh
bE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOWE3ZjQ5YTE0MDUzYTA4MjdkYmFlMzUyZDI4ZjUw
MzYwN2ZmNmNkNy4uNGVmMjllZDc3Njg4ZGMxNzkzODhiNzEwZjE0ZTQzNjE4ZWNmOWU4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTU2LDcgKzU1
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiAgICAgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTI4NTAsNiArMjg1
MCwxNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldENv
bmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25IYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPih2bSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmdW5jdGlvbi0+YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFsKHZtKSkpOworfQorCiB2b2lk
IEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMjk4Myw2ICsyOTkyLDggQEAgdm9pZCBKU0RvbGxhclZN
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRTdHJ1Y3R1
cmVUcmFuc2l0aW9uTGlzdCIsIEpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJl
VHJhbnNpdGlvbkxpc3QsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0Q29uY3VycmVudGx5
IiwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHksIDIpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJo
YXNPd25MZW5ndGhQcm9wZXJ0eSIsIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHksIDEpOwor
CiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29y
cmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwo
KSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNl
L1dURi93dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4MWYwMDIzMTQ2
ODQzMmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcwZWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Nw
ZWN0cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkKGNv
bnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgog
ICAgIAogICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgeworICAg
ICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIAotICAgIGl0
ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0ZXJhdG9yIGVu
ZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBj
b25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4LDcgQEAgcHVi
bGljOgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8g
aGlnaGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlzdCgpIGNvbnN0
CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFZlY3RvcjxL
ZXlBbmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdGVyID0gYmVn
aW4oKTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoS2V5
QW5kQ291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsxMDcsMjMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVh
cigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAg
TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5jbGVhcigpOworICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVtb3ZlSWYoY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxU
LCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOwogICAg
ICAgICAgICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9s
b2NrOwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDIwNTA2
ZjhlY2ZhYzY1M2U1NWFkMDQ4MWRkYTU2MGY1ZmQ3MmE1NGQuLmY3YTg5NTU3ZWQ1NmFjZWY5MTNh
NGExZjZkNzI0Njc1MmUxNGNkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxNCwxMyArMzE0LDEzIEBAIGJvb2wgSlNET01X
aW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwKICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBK
U0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNE
T01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGll
cyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3VyaXR5
OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAppbmRleCAxZWYwNmMyNmVlMjUyZGU2NjhjMWRlZGU5MWM1ZGRmNmEwZGRmZGU1Li44NGI5
YTEzZTE5ZWExODlkZjMwNzQ3NjA2NWRkMzczZTUxZTRmNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTYzLDEzICsxNjMsMTMg
QEAgYm9vbCBKU0xvY2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHUKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5k
ZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7
CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcg
YnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2Jq
ZWN0LT53cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQg
cHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZW1vdGVET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGUyZWVkZmQ1YjBjNWFhNzE4NzBkYTc2NTQz
OTdlMzViOTlhODJjYWMuLjBjYjY3ZWYyOWM2MmJmOGNjNDQ2YTBlY2UzMWM5ZmU1MzUxNTdhNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdp
bmRvd0N1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6
cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDAz
ZGQ5YzE2MWE4Mzk5MTJkNDM5MzQyZDI2NWJjNWZkMTViNmE0MTYuLmI3Y2QxZmNhNDM5OWNlODk5
NmFhYTZlY2E3OTUwNzM2YzA1MzIzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBzdWIg
R2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogICAgICMgVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVsZXRlIGZvciB0
aGUKICAgICAjIGZvciB0aGUgZGVsZXRlUHJvcGVydHkgb3ZlcnJpZGUgaG9vay4KIAotICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2Ns
YXNzTmFtZX06OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PCR7
Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdWIgR2VuZXJh
dGVEZWxldGVQcm9wZXJ0eQogCiAgICAgIyBGSVhNRTogSW5zdGVhZCBvZiBjYWxsaW5nIGRvd24g
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5LCBwZXJoYXBzIHdlIHNob3VsZCBpbXBsZW1lbnQKICAg
ICAjIHRoZSByZW1haW5lZCBvZiB0aGUgYWxnb3JpdGhtIG91cnNlbHZlcy4KLSAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIn1cblxuIik7CiB9CiAKQEAgLTI2OTYsNyArMjY5Niw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5
KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7XG4i
KTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQpO1xuIik7CiAgICAgfQogCkBAIC00MzI0LDcgKzQzMjQsOCBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3Ry
bGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAt
NzUxMiw3ICs3NTEzLDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNvbmRp
dGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xu
Iik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7
XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCmluZGV4IGI1ZWE1
NDhlMWQxMjcyZTE4NmRiOTQ0Y2U2MTk4NTBmNGZkMmU4MDguLmU2MzMyMzlkYWVmY2VmMDQwOWM4
YjQ2M2I4NzBmNjZiODEwNWQ3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5j
cHAKQEAgLTEzNyw3ICsxMzcsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlT
ZXR0aW5nT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTE0NSw3ICsxNDYsOCBAQCB2b2lkIEpT
VGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiksIHN0cmxlbigiZW5h
YmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDgwZmFmMzUxMDU0N2EyYWRlNzdjYjdl
Yzk1YjI5MTkyZDkwMWFhNDkuLmVmNjYwMzM0ZTMxODFiNjdkZTUyNGIzZDM1ZGYxNjU2NGY2NTZh
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTEwOCw3
ICsxMDgsOCBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJhU2VjcmV0QXR0cmlidXRlIiks
IHN0cmxlbigiYVNlY3JldEF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgZmxhdHRlbkRp
Y3Rpb25hcnlPYmplY3Qodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcAppbmRleCBiZmY0YzNiMDlkYTU5NDFiZmY3MWRjZGJiMzg1MjU0OGEwMGMz
ZjFkLi44NzgzZTE1YzI4MTM3NjYzNGZkYzc1ZGVmZmM4NWRkYTk2NTQ4OWEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMTkwLDE0ICsx
OTAsMTQgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG8KICAgICBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVp
bHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
KSkgewogICAgICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCmluZGV4IDBlYTRiYjExYjg2MDUzMDEx
NjU3ZmQ2ZWE2M2YyNDZkNGQ4MmU1MGEuLjEzOGQ0YzE4ZjhmNDZiYzM0MzMxMDliZDAzMjM5NTYz
N2QwYWMzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51
bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKaW5kZXggNzk0ZDU5NzZmMTNmMDcxOGI0Y2VlNTE2MzM4MzBjY2QzMGYxYzMzMy4u
NTc5ZjJhMGU2YThjN2E5MjU1NjE5ZDg0NDUyNmJhOGRkYjJkYWE4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0xOTAs
NyArMTkwLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywg
bW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nh
c3Q8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBK
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE8KIAogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGws
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDc5MWJlMTgyZWIxYjM2OTY5MjFk
ZTk3Njk1MjcyOWYwYjRmMGIzNGEuLjA1NWQzZGY5MjM4MThjMDA3NjdmMTg5NWRmNjcyNWY1YmMw
ZWRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBK
U0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6
SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwCmluZGV4IGIzMzc2ZTNhOWZlNTJiOGEwYTZkM2Q0MDVhNmFhZmVjNDFiY2YwODcu
LjI1MDIzYTMxYTE0NjQyMjg3YTBiMWI1MGRkZjRkZjQ2MTlkZGYyNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMTk2LDcgKzE5
Niw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHCiAgICAgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZQogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKaW5kZXggNTRl
MDI1NDc4ZTFkYzM5OTA3MDczM2U0OTliMDE2MzE0OTAxMjQ5ZS4uYTg1OGEyNzE1NGJkM2M2MzY0
ZmM0NWE2NDdmZjQyYjZiNDcyNTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0
aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggZThkOTc0MTlhZmE1ZDlhZTY4ZGEwNGVh
NTQxZWFiZjUwZDQ3ODczNi4uZjZmMzY2ZTIyMmU0MTQ0YTc0YjYzNzU0ZmJkMDc4OThmOThiNjZj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAg
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYg
dGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIq
PihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMTgs
NyArMjE4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KICAgICBpZiAoaXNWaXNpYmxlTmFt
ZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFt
ZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9Ci0g
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
Y2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9v
bCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVu
c2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuaAppbmRleCBhOTk0NWJhZmM2MTE0M2U1NzZmZmQ2MGZlYzhlZWU2OTY0Yjlm
MDMwLi4yZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4OWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1v
ZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAKaW5kZXggMTEwMGFhM2NlYzBiMWUxMGY3OTA3MzBhZjUxMzA5NzAwNjAwYjk1ZS4uMWZi
M2YxYmVhOGRhZjJmMGQwOWUyOTZjNTg3ZmZlMDQ3MDg2M2ZlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAt
MTU3LDQ1ICsxNTcsNTIgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwog
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0
cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1
cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0
cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYg
KCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJlbnRyaWVzIiksIHN0cmxlbigiZW50cmllcyIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAg
ICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oImtleXMiKSwgc3RybGVuKCJrZXlzIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigidmFsdWVzIiksIHN0cmxlbigidmFsdWVzIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgp
KSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZm9yRWFjaCIpLCBzdHJsZW4oImZvckVhY2giKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBp
ZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5k
ZXggNGMxMDcxMDEzMTA5YjVmZWVjYjQzMjU3MTQ4NDA2OTJkODkwNmYyMS4uZjU2ODQzMjRhNjY3
YmE5NmRlNzUzNjA4MTg3M2QyNTIwYWE4ZTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE5ODQsMTQgKzE5
ODQsMTYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2IKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMi
KSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSwgc3RybGVuKCJlbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0yMzQ3LDkwICsyMzQ5LDEw
NCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAg
ICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoISh3b3JsZEZvckRPTU9iamVj
dCgqdGhpcykuc29tZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFi
bGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpLCBzdHJsZW4oImVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCF3
b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJ3b3JsZFNwZWNpZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRTcGVjaWZpY01ldGhvZCIpKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAg
IGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29u
dGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNy
ZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYK
ICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRp
b25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhw
b3NlZFRvV29ya2VyRnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29y
a2VyRnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCl8fCBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+YWxsb3dzTWVkaWFEZXZpY2VzKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
bWVkaWFEZXZpY2VzIiksIHN0cmxlbigibWVkaWFEZXZpY2VzIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCEoanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJTY2hl
bWUoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzZXJ2aWNlV29ya2VycyIpLCBzdHJsZW4oInNl
cnZpY2VXb3JrZXJzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpICYm
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmUxRW5h
YmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUi
KSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0
dHJpYnV0ZSIpLCBzdHJsZW4oInJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRl
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRp
dGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5
RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRU
b1dvcmtlckF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgfQogICAgIC8vIEFkZGluZyBiYWNrIGF0dHJpYnV0ZSwgYnV0IGFzIHJl
YWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2YXJpYW50IGFib3ZlLiAKICAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1
cmVFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCBmZWVi
ZGVmN2JjNDVlOThjOTMwOGZkZmJkZTExMGI5OWZkZGRjYTJjLi4zMmMxM2I5ZWI0MDcwODM1ZWIy
NTgzNzE5NmQ3ODMyNThhYzU5NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
TlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5j
cHAKQEAgLTM5MSw4ICszOTEsOSBAQCBib29sIF9OUE5fUmVtb3ZlUHJvcGVydHkoTlBQLCBOUE9i
amVjdCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBpZiAoaS0+
aXNTdHJpbmcoKSkKLSAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5Q
SWRlbnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSkpOworICAgICAgICAg
ICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxl
eGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9i
YWxPYmplY3QsIGktPnN0cmluZygpKSwgc2xvdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChvYmotPmlt
cCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+bnVtYmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggMjJmMGI4ZDlkOGZhZTRhNzlj
NmI2MzFlOTM1Y2I2YWRjN2Q5NGZmZi4uZGJjNmQzYjFlMTlmOWMyMWQ5YjYwYzE3ZWRmZjk3MTYw
MDY3YzA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbQpAQCAtNDU3LDggKzQ1Nyw5IEBAIC0gKHZvaWQpcmVtb3ZlV2ViU2NyaXB0S2V5OihOU1N0
cmluZyAqKWtleQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKKyAgICBKU0M6OkRlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OwogCi0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHkoW3NlbGYgX2ltcF0sIGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIFN0cmluZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIFN0cmluZyhrZXkpKSwgc2xvdCk7CiAKICAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmgKaW5kZXggNWVkMjFmMTM0ZWY0YWFiNWRjMGM1NWE0NWRlNmE2M2QyN2M2YmUyZS4uNjIy
OTYzNjhlYmI5MGM1MGI5ZGU3ZmEwNzgyYzljNmZhMjg1OTE5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxs
RGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAgIGJvb2wgdG9Cb29s
ZWFuKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBi
cm9rZW4gYmVjYXVzZSBub25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFs
LiBXZSBuZWVkIHRvIHNvbHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IDE5ZWQxOWNiYzdhZTNlZTQ2Nzc5
NmIxMDNjYmZlNzYxNjA5YWQ3MzAuLjZlODc3ZDJlYjdmNDRkMDNhMjhlMTcxMDgzYmQzZDBmMGJi
OTg4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAg
LTI5MCw3ICsyOTAsNyBAQCBDYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxE
YXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlw
ZTo6SG9zdDsKIH0KIAotYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCA0ZDI5N2M3MGQ2YjFi
NmMxYWY4OGY5MTRiZTg1ZjYwZGYwM2NjOWIxLi5lYzM1ODhmYzU2NTk1NTNmNTI3MjgzYzU4YTcz
NTgwMjEzMjlhYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhp
c09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGxleGljYWxHbG9iYWxPYmpl
Y3QsIGluZGV4LCB2YWx1ZSk7CiB9CiAKLWJvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZUFy
cmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCBmY2Y1ZTMzZmIxMTQwMTg1MTA3OTkzMGZi
ZDExNzYxMzU0NTJjN2U2Li4yOTgxMmE2NmQ2ZjAxMjRlMzgzNjI1Zjk1NjAxOWNhMzNiYzNiZDkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpOwogICAgIAogICAgIHVuc2lnbmVkIGdldExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
YXJyYXktPmdldExlbmd0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcAppbmRleCBhMDM2YjY2NjJkNDg3MmY2OGRjNTI2NDViYTFhZjJiYTE1MzMwMzJkLi45ZDVk
NjBkZWYzNTc1NGJlMWUwZTA2MjBlNDFlZGI5OGVmZTM5ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIFJ1bnRpbWVP
YmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCiti
b29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIC8vIENhbiBuZXZl
ciByZW1vdmUgYSBwcm9wZXJ0eSBvZiBhIFJ1bnRpbWVPYmplY3QuCiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCA2Y2JmN2JmNzk2YjBh
ODk0MDRiOTQyMjc1ZDY1MWU2MGU3MzI0NTgyLi4zYzEwZDhiZDUwZjNiN2RhYTQ4NDIyMTRiOWUw
NGYwNDNhZmRmMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSk7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IDJlZmIyMjUyM2Y5MjFlOTJh
YmQwMjE2ZWIwY2QxZmZkMTAwMzYyYmUuLjA1ZDEyOTI5Mzk1ODJmMDRjNDMyZDMwYzE0MmRiYTVk
YWEwYmYxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBKU05Q
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgUHJvcGVydHkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEpTTlBPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTlBPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICByZXR1cm4ganNDYXN0PEpTTlBPYmplY3QqPihjZWxsKS0+ZGVsZXRlUHJvcGVy
dHkobGV4aWNhbEdsb2JhbE9iamVjdCwgbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIocHJvcGVy
dHlOYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKaW5kZXggODU1ODg5NDlhMzA2MDRjNjlmNzdjY2MzZjYw
ZTU0Njk3N2ZmYWM2ZC4uNDgwM2MwYmM1NzFmOTc3ZGRjMjcyMmJiYWI5NmI2ZDI3YzJhOWM3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuaApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUp
OwogCiAgICAgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTlBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmluZGV4IDM2ZjI4ZWU2ZmIwMTAy
ZDhjMTc3MTNjNjA4YjYxNGVhZjg1ZGRiNzYuLjhiOWZjZGYzMDg1MmQxZDIyMmE1YjNiZDU5MDZk
YTRiYWZlNDNhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0yMjksOCArMjI5LDkgQEAgYm9vbCBO
UEpTT2JqZWN0OjpyZW1vdmVQcm9wZXJ0eShOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAg
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShtX2pzT2JqZWN0LmdldCgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBpZGVudGlmaWVyKTsKKworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAg
ICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShtX2pzT2JqZWN0
LmdldCgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoIW1fanNPYmplY3QtPmhhc1Byb3BlcnR5KGxleGljYWxHbG9iYWxP
YmplY3QsIGlkZW50aWZpZXJSZXAtPm51bWJlcigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xl
YXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpp
bmRleCAzMDMyYWZhMjgwZmE5MjdkODc3MzIwZWI4MWNiZDkwNzEwMjU1OTdlLi4xMmNlNDA5YzU0
M2MyMjg4MjI3NzE5YjJkNDEwOGJmMmE4NzlkNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMTQxLDggKzExNDEsOSBAQCBib29sIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJvcGVydHkodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0
IElkZW50aQogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotICAgIAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisKKyAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGYzYTU5MTZmNjMyMGQzZTRjOWFmNjVlZDc3OWVlYjQwNmY2ZGYyZjcuLjIzOGQyZDFlMmM2NTAx
YjliNzNiMTJhNWI3YWQxNzgyYzkzZDY2ZDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAtMDItMTQgIEp1
c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGlu
ZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1w
cm90b3R5cGUtY2hhaW4uanM6CisgICAgICAgIChkZWxldGUuQy5wcm90b3R5cGUueik6CisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1v
cnBoaWMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6
CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGlu
ZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5t
YWtlRm9vNik6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5v
SW5saW5lLmFzc2VydF9uZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9J
bmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2Vy
dCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAg
IChhc3NlcnRfdGhyb3dzKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3Nl
cnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkLm1ha2VGb28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5s
aW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3Mu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZh
bCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hl
YWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAg
IChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1w
dHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lu
bGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAqIG1pY3JvYmVuY2ht
YXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qczoKKyAgICAg
ICAgKiBzdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAg
ICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEp
OgorICAgICAgICAoYXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9J
bmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93
cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFz
c2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3Nl
cnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6
CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFs
LnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQp
OgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENh
Y2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRl
eC5tYWtlRm9vNSk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MudGVzdERlbGV0ZUluZGV4KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50
ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAgIChub0lubGluZS50ZXN0
RGVsZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdFBvbHltb3JwaGljRGVsQnlWYWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLm1ha2VGb283KToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxl
dGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5
bWJvbERlbGV0ZUJ5VmFsLm1ha2VGb284KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RCaWdpbnRE
ZWxldGVCeVZhbC50ZXN0U3ltYm9sRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVz
dFN5bWJvbERlbGV0ZUJ5VmFsLnRlc3RPYmpEZWxldGVCeVZhbC5tYWtlRm9vOSk6CisgICAgICAg
IChub0lubGluZS50ZXN0U3ltYm9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0ZUJ5VmFsKToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RPYmpEZWxldGVCeVZhbC50ZXN0U3RyaWN0Lm1ha2VGb28xMCk6
CisgICAgICAgIChub0lubGluZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0U3RyaWN0LnRlc3RPdmVycmlkZS5hcnIuaik6CisgICAgICAgIChu
b0lubGluZS50ZXN0U3RyaWN0LnRlc3RPdmVycmlkZSk6CisgICAgICAgIChub0lubGluZS50ZXN0
T3ZlcnJpZGUpOgorCiAyMDIwLTAyLTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gSklUVGh1bmsgc2hvdWxkIGJlIEhhc2hTZXQ8V2VhazxOYXRp
dmVFeGVjdXRhYmxlPj4gd2l0aCBhcHByb3ByaWF0ZSBHQyB3ZWFrbmVzcyBoYW5kbGluZwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJv
dG90eXBlLWNoYWluLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCmluZGV4IDQ5YTMxYjdmMjQ3YzFiZDBhY2E4MmNiMjJk
ZjIwZThmMWJmNjFiZGQuLjU0YmJhODJlNjk5YzYyY2NjYTg5NDUxNmU2MmI3ZTZjYTFmNTEyMDIg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9t
LXByb3RvdHlwZS1jaGFpbi5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKQEAgLTEsNCArMSw0IEBACi0vL0Agc2tp
cCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIGFkZGVkIGJ5IG1hcmstanNj
LXN0cmVzcy10ZXN0LnB5CisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KIGZ1
bmN0aW9uIGFzc2VydChiKSB7CiAgICAgaWYgKCFiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3I7
CkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGRvVGVzdCh6VmFsKSB7CiB9CiBub0lubGluZShk
b1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKSB7CiAgICAgY29uc3QgWCA9IHsgaSB9CiAgICAgQy5wcm90b3R5cGUu
eiA9IFgKICAgICBkb1Rlc3QoWCkKQEAgLTM2LDcgKzM2LDcgQEAgZm9yIChsZXQgaT0wOyBpPDEw
MDAwOyArK2kpIHsKIAogZGVsZXRlIEMucHJvdG90eXBlLnoKIAotZm9yIChsZXQgaT0wOyBpPDEw
MDAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyArK2kpIHsKICAgICBn
ZXRaKHt6OiBpfSkKICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhp
Yy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2Fj
aGUtcG9seW1vcnBoaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhZmZhYzk4ZTU2M2Q1ZjM3ZjZlZTIwOTA4
NWQ2NDgzYzk2ODFkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAsMCArMSw1
MyBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9Citu
b0lubGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVx
KQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24g
bWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0g
PSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAg
ICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAg
ICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAx
CisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6
IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZh
bCkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAzMDAwMDsgKytpKSB7CisgICAgdGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwoaSkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Rl
bGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5OTEyZGE0YmJiYWFk
MDUyMWU1NTEyNWM5MDdlNWZiMmNkYzE0ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEs
MTc0IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KKworZnVuY3Rpb24g
YXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEs
IGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRp
b24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25l
cShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNz
ZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2Vy
dF90aHJvd3MoZnVuKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgZnVuKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcgPSB0cnVlCisgICAgfQorICAg
IGFzc2VydCh0aHJldykKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkK
K25vSW5saW5lKGFzc2VydF9uZXEpCitub0lubGluZShhc3NlcnRfdGhyb3dzKQorCitmdW5jdGlv
biB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vKCkgewor
ICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJh
ciA9IDIKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0K
KyAgICBub0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28o
KQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBj
b25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAg
ICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9v
LmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZv
b1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
fQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RD
YWNoZWFibGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMigpIHsKKyAgICAg
ICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAy
CisgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9Cisg
ICAgbm9JbmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIo
KQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBj
b25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAg
ICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9v
LmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZv
b1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAg
ICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRl
c3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzMoKSB7
CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28u
YmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAg
IGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUo
bWFrZUZvbzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBh
cnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGlu
IGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEp
CisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsg
al0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0
KCEoImJhciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRW1wdHlE
ZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKSB7Cisg
ICAgZnVuY3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBm
b28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRl
IGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAor
ICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2Vy
dF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUg
Zm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAg
ICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNCkKKworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiAr
IGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDA7ICsraSkgeworICAgIHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQor
ICAgIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkTWlzcygpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCmlu
ZGV4IDc3OTVkYzU4MTU3OGU0YzM5ODFjMjJhYzg3NmM0NTU0MTNlNjRkM2MuLmE5MzlhYWUzYWM4
YWNjYzIyMTRkZDdlN2Q4MDI0NDIxYTgxNjQ1ZDkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFi
bGUtc3RydWN0dXJlLmpzCkBAIC0yNCw1ICsyNCw1IEBAIGZ1bmN0aW9uIGRvVGVzdCgpIHsKIH0K
IG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwMDsgKytpKSBkb1Rl
c3QoKQorZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyArK2kpIGRvVGVzdCgpCiAKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJh
bnNpdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1
cmUtdHJhbnNpdGlvbi5qcwppbmRleCA0MDNjN2MwOWNjMTIzZjNiMTg1NDY4MGI2YzE3ZGQ0NTZh
NWRlZjMxLi5hNGJhMWU0NGRhYzhhOWEzMzFkZTAzYjA1MzVlMzkyNDkzZTY1YzExIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5z
aXRpb24uanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVj
dHVyZS10cmFuc2l0aW9uLmpzCkBAIC0xMiw2ICsxMiw5IEBAIGZ1bmN0aW9uIGFzc2VydF9uZXEo
YSwgYikgewogICAgIGlmIChhID09PSBiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2Vy
dGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOwogfQorbm9JbmxpbmUoYXNzZXJ0KQor
bm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKIAogZnVuY3Rpb24gc2Qo
b2JqKSB7CiAgICAgbGV0IGRhdGEgPSAkdm0uZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3Qob2Jq
KQpAQCAtMzEsNiArMzQsOCBAQCBmdW5jdGlvbiBzaWQob2JqKSB7CiAgICAgbGV0IGRhdGEgPSBz
ZChvYmopCiAgICAgcmV0dXJuIGRhdGFbZGF0YS5sZW5ndGgtMV0uaWQKIH0KK25vSW5saW5lKHNk
KQorbm9JbmxpbmUoc2lkKQogCiBmdW5jdGlvbiB0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZShp
KSB7CiAgICAgbGV0IGZvbyA9IHt9CkBAIC02Miw2ICs2Nyw3IEBAIGZ1bmN0aW9uIHRlc3REZWxl
dGVJc05vdFVuY2FjaGVhYmxlKGkpIHsKICAgICBhc3NlcnRfZXEoJHZtLmdldENvbmN1cnJlbnRs
eShmb28sICJiYXIiK2kpLCAxKQogICAgIGFzc2VydChmb29bImJhciIgKyBpXSA9PT0gMSkKIH0K
K25vSW5saW5lKHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxlKQogCiBmdW5jdGlvbiB0ZXN0Q2Fu
TWF0ZXJpYWxpemVEZWxldGVzKGkpIHsKICAgICBsZXQgZm9vID0ge30KQEAgLTEwMCw2ICsxMDYs
OCBAQCBmdW5jdGlvbiB0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVzKGkpIHsKICAgICBhc3NlcnRf
ZXEoZGF0YVtkYXRhLmxlbmd0aC0yXS5wcm9wZXJ0eSwgImJhciIgKyBpKQogfQogCitub0lubGlu
ZSh0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVzKQorCiBmdW5jdGlvbiB0ZXN0Q2FuRmxhdHRlbihp
KSB7CiAgICAgbGV0IGZvbyA9IHt9CiAgICAgZm9yIChsZXQgaj0wOyBqPDUwMDsgKytqKSB7CkBA
IC0xMzEsNiArMTM5LDcgQEAgZnVuY3Rpb24gdGVzdENhbkZsYXR0ZW4oaSkgewogICAgICAgICAg
ICAgYXNzZXJ0X2VxKHZhbCwgdW5kZWZpbmVkKQogICAgIH0KIH0KK25vSW5saW5lKHRlc3RDYW5G
bGF0dGVuKQogCiBmdW5jdGlvbiB0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKCkgewogICAgIE9i
amVjdC5wcm90b3R5cGUuZ2xvYmFsUHJvcGVydHkgPSA0MgpAQCAtMTc1LDYgKzE4NCw3IEBAIGZ1
bmN0aW9uIHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUoKSB7CiAKICAgICBkb1Rlc3QodW5kZWZp
bmVkKQogfQorbm9JbmxpbmUodGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSkKIAogdGVzdERlbGV0
ZVdpdGhJbmxpbmVDYWNoZSgpCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlMGRhMDEzMTU5MTE5ZjYwMzAwZmQxMGUyMWNj
MWE0OGNlNzZiYjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJv
cGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsNDIxIEBACisvL0AgcnVuRGVmYXVsdCgi
LS11c2VCaWdJbnQ9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBp
ZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVk
Iik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAi
ICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBi
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAh
PT0gIiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0
aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7Cisg
ICAgICAgIHRocmV3ID0gdHJ1ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGlu
ZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9J
bmxpbmUoYXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQo
KSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAg
ICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28u
YmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKwor
ICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsr
aikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhm
b28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJi
dWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7Cisg
ICAgZnVuY3Rpb24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBm
b28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoi
XQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhm
b28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJi
dWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hl
YWJsZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlk
KCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAg
ICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2Vx
KGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICBy
ZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3
IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2Vx
KE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0g
MQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9
IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCgh
KCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQor
fQorbm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgewor
ICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJh
ciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBh
c3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUg
Zm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9v
YmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZh
bHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZh
bHNlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAg
ICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9Cisg
ICAgbm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQo
KQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBj
b25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAg
ICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9v
LmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZv
b1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
fQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0
ZXN0RGVsZXRlSW5kZXgoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxl
dCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAg
ICAgICBmb29bMF0gPSAyMworICAgICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEo
ZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0
cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb281KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb281
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbyku
bGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3Nl
cnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQo
Zm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0
KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisg
ICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0s
IDIzKQorICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sx
XSA9IDEKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0RGVsZXRlSW5kZXgpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsK
KyAgICBmdW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvb1siYmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZv
b1siYmF6IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b282KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pd
CisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmpl
Y3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28p
KQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAg
ICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09
IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5s
aW5lKHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0QmlnaW50RGVsZXRl
QnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzcoKSB7CisgICAgICAgIGxldCBmb28gPSB7
fQorICAgICAgICBmb29bMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5d
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWzEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXQorICAgICAgICByZXR1cm4gZm9vCisgICAg
fQorICAgIG5vSW5saW5lKG1ha2VGb283KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisg
ICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VG
b283KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAg
ICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisg
ICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNz
ZXJ0KCEoMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG4gaW4gZm9vKSkK
KyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAg
ICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAz
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUo
dGVzdEJpZ2ludERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwo
KSB7CisgICAgY29uc3Qgc3ltYm9sID0gU3ltYm9sKCdmb28nKTsKKworICAgIGZ1bmN0aW9uIG1h
a2VGb284KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAx
CisgICAgICAgIGFzc2VydCghKFN5bWJvbCgnZm9vJykgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0
KHN5bWJvbCBpbiBmb28pCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29b
c3ltYm9sXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb284
KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb284KCkKKyAgICB9CisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisK
KyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qu
a2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisg
ICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAg
IGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykK
KyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRl
c3RTeW1ib2xEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdE9iakRlbGV0ZUJ5VmFsKCkgewor
ICAgIGNvbnN0IHN5bWJvbCA9IHsgaTogImZvbyIgfTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb285
KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAg
ICAgIGFzc2VydChzeW1ib2wgaW4gZm9vKQorICAgICAgICBhc3NlcnQoISh7IGk6ICJmb28iIH0g
aW4gZm9vKSkKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xd
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzkpCisKKyAg
ICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzkoKQorICAgIH0KKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAg
ICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZv
bykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJi
dWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdE9iakRl
bGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIGZ1bmN0aW9uIG1ha2VGb28xMCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAg
ICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0
cnVlKQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7Cisg
ICAgICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAg
ICAgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvby5mb29iYXIpCisg
ICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAg
IH0KKyAgICBub0lubGluZShtYWtlRm9vMTApCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFr
ZUZvbzEwKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIp
CisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNz
ZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFz
c2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28p
KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RPdmVycmlk
ZSgpIHsKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gZnVuY3Rpb24oKSB7IH0KKyAgICAgICAgYXNz
ZXJ0X2VxKCR2bS5oYXNPd25MZW5ndGhQcm9wZXJ0eShhcnJbal0pLCB0cnVlKQorICAgICAgICBk
ZWxldGUgYXJyW2pdLmxlbmd0aAorICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFBy
b3BlcnR5KGFycltqXSksIGZhbHNlKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRf
ZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEp
CisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsg
al0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lu
bGluZSh0ZXN0T3ZlcnJpZGUpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Cisg
ICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeVZh
bCgpCisgICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWRNaXNzKCkKKyAgICB0ZXN0RGVsZXRlSW5kZXgoKQorICAgIHRlc3RQb2x5bW9y
cGhpY0RlbEJ5VmFsKGkpCisgICAgdGVzdEJpZ2ludERlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0U3lt
Ym9sRGVsZXRlQnlWYWwoKQorICAgIHRlc3RTdHJpY3QoKQorICAgIHRlc3RPdmVycmlkZSgpCit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391349</attachid>
            <date>2020-02-20 15:52:45 -0800</date>
            <delta_ts>2020-02-20 15:54:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200220155244.patch</filename>
            <type>text/plain</type>
            <size>222133</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NDUzNDdkMTM3NWUxY2RmMzgwMWE4YjY4N2VlZDZhNzdjZGU3ZjY4Li4yOTZhY2UzMjY3N2MzNzY5
ZWRkZGY4NjUyZmMzZDhkYjhiODYzZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTE5ICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBDb21wdXRlZCBQ
cm9wZXJ0aWVzIHdpdGggaW5jcmVtZW50IHNvbWV0aW1lcyBwcm9kdWNlcyBpbmNvcnJlY3QgcmVz
dWx0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBhNWNiYTJlMDUwY2M2OWY1ZDdkYzhhZmM4YmZjNzUzYmUwZWEzYTI5Li5kYzI0
YWE2MjRmMWQ3Y2ZjNzEwYWI0YTZiY2U3YTFjOWQzNWE3N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4K
KworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3BlY3RydW0uaDoKKyAgICAg
ICAgKFdURjo6U3BlY3RydW06OmFkZCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpnZXQgY29u
c3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YnVpbGRMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdURjo6U3BlY3RydW06OmNsZWFyKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OnJlbW92ZUlm
KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6U3BlY3RydW06OmVuZCk6IERlbGV0ZWQuCisKIDIwMjAtMDItMjAgIEppZXdlbiBUYW4gIDxq
aWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIFJlcGxhY2UgRGV2aWNl
SWRlbnRpdHkuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM4OTliNjU1NWM0Yzc1NTg2ZDZhMzFm
MWNiYmI1ZTA0ODc5MzkzYi4uNDk2YzBhM2EzNjhmNTQ0YjBiNjkyMzk1NjU4ZTFjOWU2OTQ3NjQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1
ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVs
ZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZURlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9k
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9i
alByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAg
ICAoLVtXZWJTY3JpcHRPYmplY3QgcmVtb3ZlV2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6
ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDIwLTAyLTIwICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XSBGaXggcmFjZSBpbiBUZXh0Q29tYmluZXJHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDE1ODQwMGFk
NjNjMmYwNzJkZmNlNjkyYmQwZWIyYTM4NGEwYTlmYS4uZTNhYjhlNmQ1YjAwYzIxZDJiYzk1MTIw
ZjJhODk1N2ZlYzliMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0xNCAg
SnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5s
aW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KToKKwogMjAyMC0wMi0yMCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtDYWNoZSBz
aG91bGQgdXNlIDRLQiB0aHJlc2hvbGQgZm9yIG1tYXAtZWQgZmlsZXMgaW5zdGVhZCBvZiAxNktC
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmI2ZDY3YzQzYTUyZmY5OTcwNmViZTQ4
N2YxNmFjNmMyMDY5N2Q2ZS4uMjg2OTM1NDZiNTRkNjVhYWU4NTZlMDA3MGNlMWY2NzZhNzRlODFh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAy
LTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtMZWdhY3lXZWJLaXRdIE92ZXJyaWRlIEVk
aXRvckNsaWVudDo6c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMDM0
YjM1N2MwNzM4ZTM0OTEyNTg4NThkNzA2OTg5ZmVmY2I0ODMzZC4uOTJjYTkyNDc3OTYyYmMwNGM3
YThlYjg2YTFmNDE1ZDJiMTg3ZjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
IAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQpOwogCiAgICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCBjZDUxMWJm
ZDI4NGEwMTMyNTJhNjQwNWE2NzA3YWFkMTM3YTFiY2NiLi40YmVjMzNhNzJkYzI4NDc3YTYxMzU2
ZmRiOTIwYTQ3Njg2MmVkNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMzczLDcgKzM3Myw3IEBAIGJvb2wg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1ib29sIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDE4
LDcgKzQxOCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgpAQCAtNDI2LDcgKzQyNiw4IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKLSAg
ICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkp
OworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CmluZGV4IGY3ZjlkYWIzZjI4YWRjMGVhYmIyYmRlOGIyNTA2NzcyYWQyNWZmY2UuLjlkZjg3OGU1
ODhmYTJhZWYwNjIyYWM2OTU4NzgxYWJlNjdhMzdlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC00NzksNyArNDc5LDggQEAgYm9vbCBKU09iamVjdERl
bGV0ZVByb3BlcnR5Rm9yS2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwg
SlNWYWx1ZVIKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhj
ZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsK
ICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC01MzQsNyArNTM1LDggQEAgYm9vbCBKU09iamVjdERlbGV0
ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdS
ZWYgcHIKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKIAotICAgIGJv
b2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZ2bSkpOworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLT5pZGVudGlmaWVyKCZ2bSksIHNsb3QpOwogICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MWU0MjdjMzBjNTExNjNlZGQ5ZjEw
NmQ0MmY5NWUwOWQwMmJlOWM0Li43NTU2ZTk1NmZjNjMyZjdlMmI5ZDBlMWFkYmY3Y2E4MWY4ZThm
MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MTUsNiArODE1LDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50
aW1lL0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCiAgICAg
cnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAorICAgIHJ1bnRpbWUvRGVsZXRlUHJv
cGVydHlTbG90LmgKICAgICBydW50aW1lL0RpcmVjdEFyZ3VtZW50c09mZnNldC5oCiAgICAgcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9EaXNhbGxvd1Njb3BlLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWY0MmMyYWU4ZmU1OTJiZjZkNjgyODUz
ODk3NmQwY2Y2ZGE2ZGIxZi4uZmI3NDU2NTE3ZjhmNzRjNjlmMWM5ZDViZGMyMDJjNGY2ZTQ0MTg1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzgsNiArMTE3OCw3IEBACiAJ
CTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDEx
QUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVB
MjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8q
IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVs
ZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzNFMzc5
OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1
NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJF
OTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250
ZXh0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1
MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zOTcxLDYgKzM5NzIsNyBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0
NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MzRCNjU1NDIz
RjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5n
dGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5n
dGguaDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJl
bmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxv
b3BTdHJlbmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01v
ZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA4NCw2ICs3MDg2LDcgQEAK
IAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKIAkJCQkx
Njk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8s
CisJCQkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICov
LAogCQkJCTBGRTA1MDBGMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwICov
LAogCQkJCTBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuaCAqLywK
IAkJCQkwRkUwNTAwRDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNw
cCAqLywKQEAgLTkyMDksNiArOTIxMiw3IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3
IC8qIERlZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRD
NDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAv
KiBEZXN0cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0E0MjNFMTdBMEJCRkQw
MEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTAz
MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNjYyLDcgKzEwNjY2LDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0
ZXMgPSB7Ci0JCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOwogCQkJ
CURlZmF1bHRCdWlsZFN5c3RlbVR5cGVGb3JXb3Jrc3BhY2UgPSBPcmlnaW5hbDsKIAkJCQlMYXN0
U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDEwMDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMmFm
NDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjliYTk3NS4uOGVkZTI4NDhkMmM5YWY5ZWYz
OGI2NGE2NDM5OWZiMTIxYjllNjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2FzZSBJbk1p
c3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNz
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5n
TGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKQEAgLTEy
Myw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3ND
YXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAor
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKKyAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09IG5l
d1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAg
ICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVs
b3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdTdHJ1Y3R1
cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisgICAgICAg
IGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsg
fSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2
ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgp
IGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEg
YnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRpZmll
ci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFj
ZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5
IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBjb25zdAog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlv
bjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAg
ICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAg
ICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpu
ZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0
LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoK
ICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgor
ICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAg
ICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAt
NDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9y
PEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBDdXN0b21B
Y2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAg
Y2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoKICAgICBj
YXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBj
YXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5UHJv
dG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJh
bnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50
ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0dXJlKQog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAo
bV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6
OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogCiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobV9zdHJ1
Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgsNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAg
ICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChz
cGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkg
ewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAgICAgdmFsdWVSZWdz
LApAQCAtMTg5Niw2ICsxOTMzLDcxIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
bG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhc2UgRGVs
ZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1Yklu
Zm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VS
ZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgICAgICBhbGxv
Y2F0b3IubG9jayhiYXNlR1BSKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7
CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+aXNQcm9w
ZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gdmFs
dWVSZWdzLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gc2NyYXRjaEdQUik7Cisg
ICAgICAgIEFTU0VSVCh2YWx1ZVJlZ3MuZ3ByKCkgIT0gc2NyYXRjaEdQUik7CisKKyAgICAgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9
CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmco
aml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNw
YWNlKTsKKworICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIo
bWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2Fz
ZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAg
ICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5LgorICAgICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAg
IC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5jZSBv
dXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1Y3R1
cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdIZWFk
ZXI7CisKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CisKKyAg
ICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSkgeworICAgICAg
ICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdzLnBh
eWxvYWRHUFIoKSwgYmFzZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZzZXQo
bV9vZmZzZXQpKSB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAg
ICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAg
ICAgICAgICAgICAgICAgICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAgICBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAgICBvZmZzZXRJbklu
bGluZVN0b3JhZ2UobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5
KG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisKKyAgICAgICAgdWlu
dDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3RydWN0dXJl
KCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAg
ICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVn
cy5wYXlsb2FkR1BSKCkpOworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0
ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3Vy
YWJsZTogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGZh
bHNlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlzczogeworICAgICAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3Mu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCmluZGV4IDc5ZDMxMDE1NWU5M2E1NDUzZDI4NjFjNDMyMjdiYTNiYWMxOWYy
NzcuLmM2YzgxODQ0NjM0MWQwYTQzYzY3YWVjOTMxODMzMzc0Nzg3ZDE4MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUsNiArODUsOSBAQCBw
dWJsaWM6CiAgICAgZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExvYWQsCiAg
ICAgICAgIFRyYW5zaXRpb24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlLAorICAgICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBsYWNlLAogICAgICAg
ICBNaXNzLAogICAgICAgICBHZXRHZXR0ZXIsCkBAIC0xNDYsOCArMTQ5LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIHN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gPSBudWxscHRyKTsKIAogICAgIC8vIFRoaXMgY3JlYXRlIG1l
dGhvZCBzaG91bGQgYmUgdXNlZCBmb3IgdHJhbnNpdGlvbnMuCi0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+KTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
Y3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgICAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0xNTcsNyArMTYzLDcgQEAgcHVi
bGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAg
aWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRp
b24gfHwgbV90eXBlID09IERlbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+
cHJldmlvdXNJRCgpOwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQpA
QCAtMTY1LDcgKzE3MSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbik7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKTsK
ICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXgg
MTMyNDA5YzBhNDUxMGJkZmE4ZWNlMzNiNzQzNDcxNjAyZDdiMGU3OS4uYjE2NmMzMGMxOGE1MjNh
NzYyNWYzOWFmNmI3ODk1MDY3YWE1ZjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC03OTUsNiArNzk1LDE1IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBY2Nlc3NDYXNlOjpBY2Nlc3NU
eXBlIHR5cGUpCiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpUcmFuc2l0aW9uOgogICAgICAgICBvdXQu
cHJpbnQoIlRyYW5zaXRpb24iKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2Fz
ZTo6RGVsZXRlOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZSIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgICAgIG91
dC5wcmludCgiRGVsZXRlTm9uQ29uZmlndXJhYmxlIik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3M6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlTWlz
cyIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpSZXBsYWNlOgogICAg
ICAgICBvdXQucHJpbnQoIlJlcGxhY2UiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXgg
NjE3ODczN2Y5ZjhhOWNkMGI2ZGRhZDU3ZjFjZjEyZWZlNGZjYTcwNS4uOTZhMWJhZWNiZTRjYmJi
NzZkYmRlZGE4MDU2NWEyYzU5ODY1NTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNzYsNiArMjc2LDEyIEBA
IHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayogY29kZUJsb2NrKQogICAg
IGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0
aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgor
ICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKKyAgICAg
ICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIGRlcmVmKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IGRkY2U4
NWVjMDI1NTU3NmM5ZTM0NTFmNjQ3MzZkMTJjMzg5NDI4MDMuLmI1NzViZGQyMTYxOWMyZGZlNGYx
ODJmYWVkOTBmMjY4ZTllMjYxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01NSw3ICs1NSw5IEBAIGVudW0gY2xhc3Mg
QWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAgR2V0QnlWYWwsCiAgICAgUHV0LAogICAgIEluLAot
ICAgIEluc3RhbmNlT2YKKyAgICBJbnN0YW5jZU9mLAorICAgIERlbGV0ZUJ5SUQsCisgICAgRGVs
ZXRlQnlWYWwKIH07CiAKIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAppbmRleCAyNmUy
ODI5MzllOWFjYTg4NjVjMjIxNzczYzJhNDFlMDI4MDk0ZGRhLi40OGI1Yjg2ZmE0YjllODY1ZWE0
OGRjOTlhNDkzYmQ5NDhkMDc0ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC0xMjksMTQgKzEyOSwxNCBAQCBib29sIERlYnVn
Z2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxP
YmplY3QtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBEZWJ1Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIERlYnVnZ2VyU2NvcGUqIHNj
b3BlID0ganNDYXN0PERlYnVnZ2VyU2NvcGUqPihjZWxsKTsKICAgICBBU1NFUlQoc2NvcGUtPmlz
VmFsaWQoKSk7CiAgICAgaWYgKCFzY29wZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKHNj
b3BlLT5qc1Njb3BlKCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9i
YWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2Jh
bE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBEZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3Bl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCmluZGV4
IGZmNGNlMWIxZGE0YjU3OTBkZThhZDk4OGE3MWY2MDJjZGYyNjE2NzQuLjQzMjdjMWYwMmM2OTI3
ODQ1MDhlMGE5YTFhMjE0OTc3NWVkZDgwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCA3ZmZhMzhlNjZkMmUwOGQ3NDU5ODliZDYxMjlkYmVhYTBmYTBkMDdiLi5mYjFhYTUy
MGQyNDUzODI2MDQ3MjEwYjM4MzI4OWZhYzNjNWY1NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2MTgsNiArMTYxOCwxOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIERlbGV0ZUJ5
VmFsOiB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUNl
bGwoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBEZWxl
dGVCeUlkOiB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRCeUlk
OgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIEJ5dGVDb2RlUGFyc2VyIGJhc2VkIG9uIHJlYWRpbmcg
dGhlCkBAIC0yNTE4LDggKzI1MzAsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5ld0FzeW5j
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CiAgICAgICAgIGNhc2Ug
TmV3UmVnZXhwOgotICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6Ci0gICAgICAgIGNhc2UgRGVsZXRl
QnlWYWw6CiAgICAgICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoKICAgICAgICAgY2FzZSBJc0Vt
cHR5OgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlM2UyMDhkMmRhMWNkNzM5YmZhY2M4YzM0YzU0
OTdjYzU2MmRiOTM2Li4zODcxNTkxNzg5MDMxMjBhNjEyNjQ1ZTRhMjM0MzUxM2JhNWRiZWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjQ2
LDYgKzI0Niw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMsIGxpbmtCdWZm
ZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBsaW5rQnVmZmVyKTsK
ICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6
ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9pbkJ5SWRzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ4ODA4NzRjMjg1YWI3ZDQ0N2ViODkzYTZlOGI0YmJm
MDEwNzMxZDQuLjJmYjZhZDhmNjJmOTVhMjZlNmNkYjgyNmFhNmQxY2Q2N2YxOTQ3ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE5MSw3ICsxOTEs
MTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9wdXRCeUlkcy5hcHBlbmQoSW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVFB1dEJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKICAgICB9Ci0g
ICAgCisKKyAgICB2b2lkIGFkZERlbEJ5SWQoY29uc3QgSklURGVsQnlJZEdlbmVyYXRvciYgZ2Vu
LCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCisgICAgeworICAgICAgICBtX2RlbEJ5SWRz
LmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93
UGF0aCkpOworICAgIH0KKworICAgIHZvaWQgYWRkRGVsQnlWYWwoY29uc3QgSklURGVsQnlWYWxH
ZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAg
ICAgbV9kZWxCeVZhbHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVy
YXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwogICAgIHZvaWQgYWRkSW5zdGFuY2VPZihj
b25zdCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93
UGF0aCkKICAgICB7CiAgICAgICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKElubGluZUNhY2hlV3Jh
cHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CkBAIC0zNDgsNiAr
MzU4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5
SWRXaXRoVGhpc0dlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICBWZWN0b3I8
SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5VmFsR2VuZXJhdG9yPiwgND4gbV9nZXRCeVZhbHM7
CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiwgND4g
bV9wdXRCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5SWRHZW5l
cmF0b3I+LCA0PiBtX2RlbEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklU
RGVsQnlWYWxHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKICAgICBWZWN0b3I8
SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3RhbmNl
T2ZzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjQyYjE2MzU2
ZjkwZTljMzg2MDJlYmM1N2ZkOWUwNGEwZjQ1YjUyOC4uNjdlNmRiNjlmYjIzMzcyOTU4MjljZDIz
ZmZiZmNiYTgwY2E3MmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExNDcsMzkgKzExNDcsODQgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHsKLSAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CiAKLSAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKworICAgIGF1dG8qIHByb3BlcnR5ID0gaWRlbnRpZmllclVJRChub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisK
KyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNl
LmdwcigpKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIHZhbHVlLnVzZSgpOworICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKIAotICAgIGZsdXNo
UmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJV
SUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOwogCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVz
ZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4o
CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CisKKyAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIHByb3BlcnR5KTsKKworICAgIG1faml0LmFk
ZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
V1RGTW92ZShzbG93UGF0aCkpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwo
Tm9kZSogbm9kZSkKIHsKLSAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBzcGVjdWxhdGUobm9kZSwg
bm9kZS0+Y2hpbGQxKCkpOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CiAK
LSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1Zh
bHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CisgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlLmdwcigpKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGtleS5ncHIoKSk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICBiYXNlLnVz
ZSgpOwotICAgIGtleS51c2UoKTsKKyAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKGJhc2VSZWdzKSk7CisgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChr
ZXlSZWdzKSk7CiAKLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVsZXRlQnlWYWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWdzLCBrZXlSZWdzKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlv
bkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwor
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAK
LSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywK
KyAgICAgICAgYmFzZVJlZ3MsIGtleVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CisKKyAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBrZXlSZWdzKTsKKworICAgIG1faml0LmFk
ZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2Nv
cGUoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAppbmRleCA0ZDM0MjdiYzgyZThjOWIyNDdhYzg3MWEwMjAwMDFiYjIzODI5ZjI2Li5i
ODhmM2RhNWMwMGFlOTNiNzMxODRiMzcwYjM0OGE2ZGQ3MmQ0MTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC01MTQ0LDIwICs1MTQ0LDE2
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFz
ZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVz
KCkpLCBhY2Nlc3Nvcik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8RGVsQnlLaW5kIGtpbmQsIHR5
cGVuYW1lIFN1YnNjcmlwdEtpbmQ+CisgICAgdm9pZCBjb21waWxlRGVsQnkoTFZhbHVlIGJhc2Us
IFN1YnNjcmlwdEtpbmQgc3Vic2NyaXB0VmFsdWUpCisgICAgeworICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQ7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtp
bmQ6Ok5vcm1hbCkgeworICAgICAgICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQo
SW50NjQpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YmFzZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGJhc2UsIFZhbHVlUmVwOjpT
b21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShzdWJzY3JpcHRWYWx1ZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsK
KyAgICAgICAgfQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVycyA9IDE7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+
IGV4Y2VwdGlvbkhhbmRsZSA9CisgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2Vw
dGlvbnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7
CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisKKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4g
ZXhjZXB0aW9ucyA9CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1
bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKyAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgICAgICAgICAgICAgIGF1dG8gYmFz
ZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgYXV0byBy
ZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2Uu
Z3ByKCkgIT0gcmV0dXJuR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAh
PSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BS
ICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOworCisgICAgICAgICAgICAg
ICAgY29uc3RleHByIGF1dG8gb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisK
KyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vi
c2NyaXB0VmFsdWUpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0u
Z3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJd
LmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0oKTsKKwor
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVh
dGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuR1BSLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklU
RGVsQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCByZXR1cm5HUFIs
IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRo
KGppdCk7CisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBq
aXQubGFiZWwoKTsKKworICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAg
ICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGpp
dC5sYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1
bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5r
QnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5v
dFplcm82NChwYXRjaHBvaW50KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJ
ZCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFs
dWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGF1dG8gdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25E
ZWxldGVCeUlkLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBtX291dC5jb25zdElu
dFB0cih1aWQpKSkpOworICAgICAgICBMVmFsdWUgYmFzZTsKKworICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAg
ICAgICAgICAgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAg
ICAgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsPihiYXNlLCBt
X2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKTsKICAgICB9
CiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeVZhbCgpCiAgICAgewotICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQyKCkpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwo
SW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBi
YXNlLCBzdWJzY3JpcHQpKSk7CisgICAgICAgIExWYWx1ZSBiYXNlOworICAgICAgICBMVmFsdWUg
c3Vic2NyaXB0OworCisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkp
IHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBiYXNlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBiYXNlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNl
IGtpbmQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7
CisgICAgICAgICAgICBzdWJzY3JpcHQgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
KyAgICAgICAgICAgIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6
Tm9ybWFsQnlWYWw+KGJhc2UsIHN1YnNjcmlwdCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29t
cGlsZUFycmF5UHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lD
U3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5
MjhmNGE4NWI0YWRlNDQ0YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUx
NjExZjg2MGZjNGQ0MjY1NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBA
IC03MCw3ICs3MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nl
c3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3Jv
KFB1dEJ5SWRTZWxmUGF0Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFj
cm8oSW5CeUlkU2VsZlBhdGNoKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwK
KyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1
MjVlZDIwNzk2OWNkMWI3ODc0NGU4Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0
MDhhNWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRo
aXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXgg
PSAwOworICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwog
ICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9
IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
ZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21w
aWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0
QnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlk
c1dpdGhUaGlzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRC
eUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMs
IHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0
Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZm
ZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQw
NWI1OTczMTI5YTllODY1NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2Vu
ZXJhdG9yPiBtX3B1dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBt
X2luQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRz
OworICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAg
ICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAg
ICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwog
ICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZv
OwpAQCAtOTM0LDYgKzkzOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBt
X2dldEJ5SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9w
dXRCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4
IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9N
QVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAg
ICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVu
c2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5z
aWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDky
MGI3MjAzZTNjZjRiZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLmIwYWQ2M2JjNTExYzI3NTU0
Mzc3MTIwYTQ4ZmZmMzYyYmQxNTVmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY4IEBA
IFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5j
dGlvbigpCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0K
IAorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKKyAg
ICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBl
OjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25z
dGFudElkZW50aWZpZXIgPSBmYWxzZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0g
cmVzdWx0KTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsK
KyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1
YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52LnBy
b3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CisjZW5kaWYKKyAgICBtX3N0dWJJbmZv
LT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOworfQorCit2b2lkIEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9z
dGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1
bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdl
bmVyYXRvcjo6ZmluYWxpemUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXIm
IHNsb3dQYXRoKQoreworICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZp
bmFsaXplKAorICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRv
cjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
c2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1Yklu
Zm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CisgICAgQVNTRVJUKGJhc2UucGF5bG9h
ZEdQUigpICE9IHJlc3VsdCk7CisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9h
ZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9z
dHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnYu
cHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCisgICAgbV9zdHViSW5mby0+
dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFy
dCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAo
KTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJh
dG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xv
d1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxp
emUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRT
dHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJ
VEluQnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBiZmI5MDIxNmIyOWMyN2Zm
ZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li4yNmU3MDBmYmI3YWQxODNiZTFhY2JhNzNmMzdmNmZi
NDJmZWZjZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNDIsNiArMTQyLDU2IEBAIHByaXZhdGU6CiAgICAgUHV0
S2luZCBtX3B1dEtpbmQ7CiB9OwogCitjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1Ymxp
YyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisK
KyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgc2NyYXRjaCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1
bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5p
c1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisK
KyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZm
ZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CisKKyAgICB2b2lkIGdlbmVyYXRl
RmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Ns
b3dQYXRoSnVtcDsKK307CisKK2NsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yKCkgeyB9CisKKyAgICBK
SVREZWxCeUlkR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworCisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Ns
b3dQYXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAg
TGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtC
dWZmZXIpOworCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisK
K3ByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCiBjbGFzcyBKSVRJ
bkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAg
SklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAppbmRleCBlMzYyNjczMjVjNzRhZTIyZjg2MThlYTllMmFkMDAyZTQ4ZGM2
MzM0Li43YmRmMWY3MzJiZjRlMDVkOWI4NTY5NmVmNDY4NDdmM2I1NjEwNzZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIxNDIsNyArMjE0Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3Bl
cnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxPYmplY3QsIGluZGV4LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAg
ICAgCi1zdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90LCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMTUwLDMxICsyMTUwLDUx
IEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwogICAgIGlmICghYmFzZU9iaikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKSk7
CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAg
aWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgVW5hYmxlVG9E
ZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKLQotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKSkpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlJZChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgdWlkKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGlmICghcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGlu
Zyh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpKQorICAgICAgICAg
ICAgICAgIHJlcGF0Y2hEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZh
bHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5v
cm1hbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7Cisg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2Up
LCB1aWQpOwogfQogCi1zdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIEpT
VmFsdWUga2V5KQorc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5KQogewogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE5MCw3ICsyMjEwLDcgQEAgc3RhdGljIGJv
b2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIFZNJgogICAgIGVsc2UgewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0g
a2V5LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eSk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICghY291bGRE
ZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCkBAIC0yMTk4
LDIwICsyMjE4LDQyIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYKICAgICByZXR1cm4gY291bGRE
ZWxldGU7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXkpCitzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpKSk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKworICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0
cnVjdHVyZU9yTnVsbCgpOworCisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlk
ZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAg
ICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkgfHwgIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
eworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVC
bG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICByZXBh
dGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtl
eSkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBkZWxldGVCeVZhbChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwg
c2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRTdWJzY3JpcHQpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hX
aXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2Nv
cGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjIxMGM1YTA3MzQxOTY4M2Q2MGVhOGM0OGNkNDNl
ZWZmODJhMzAwYy4uNjAwZmNhMjlkYzIwMzg1ZGM1MDIyMjgwMjU0MTEyY2FjMzFkNjg0MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI1MSwxMCArMjUx
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlE
ZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVC
eVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lO
VEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJy
ZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9i
amVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFBO
YW1lcyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBhYmY1MmY3
MTNlOGFhMGFmYjVlODA1YzdjZjNmMWQzODgzNzFjMmY2Li4yYmEwZmE2ODQ4YmNlODI5YWNkNjQx
OTA1ZjA1ZjRiZDU0ZGNiZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzg3LDkgKzM4NywzOSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOworICAgIEpJVERlbEJ5
SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMCwgcmVnVDIpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7
CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Cisg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpLmltcGwoKTsKKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9
IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIG1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkg
KzQyOCw0MiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2Rl
Lm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAg
IFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHksIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHBy
b3BlcnR5KTsKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDAsIHJlZ1QyKTsK
KyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJv
b2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGVsQnlWYWw+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owor
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBKSVREZWxCeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOworCisgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBy
ZWdUMSk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBk
c3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJl
Z1QxKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2Vu
LnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJl
Z1QwKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDVjYzdkZjljNTQxODljN2Ni
M2Q0MDkxYjVjNGY0YzhiZGFlZWYxNGMuLmI2NjlkZDhiN2FkMjZkM2Y3N2Q5Njg2ZGU2MDgzNDM0
ZjM2ZGJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTIzLDcgKzEyMyw5IEBAIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGludCBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIG1fY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwg
bnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzMsOSArMTM1LDE0IEBA
IHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAg
IGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMikpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRl
QnlWYWxHZW5lcmljLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOworICAgIGJv
eEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpIHsgfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCmluZGV4IDkxODIwNDE1NTRiZGM3NmMxOTFjYjEzODVkMTNhOWM4MWZmZDQ1ZWIuLmJlNzUw
MWVmMjJjMTgzM2U0ZmI3ZjA2YTlhYmUzYWFiMDc2ZWRjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIGlkZW50
LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBv
bGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5p
c0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkgewogICAgICAg
ICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewpAQCAtNzM0LDYgKzczNCw3MiBA
QCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdl
bmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCitzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
cmVzdWx0OworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKKyAgICAgICAg
aWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhb2xkU3Ry
dWN0dXJlIHx8ICFvbGRTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkgfHwgIW9sZFN0cnVjdHVyZS0+cHJv
cGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CisKKyAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlRGVsZXRlKCkpCisgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gbmV3Q2FzZTsKKworICAgICAgICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7Cisg
ICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQ7CisgICAgICAgICAgICBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBuZXdPZmZzZXQpOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKyAgICAgICAgICAgIGlmICghbmV3U3RydWN0
dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgfHwgbmV3U3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAg
ICAgICAgIEFTU0VSVChuZXdPZmZzZXQgPT0gc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkgPT0gb2xkU3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlvblRyYW5z
aXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsK
KyAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG5ld09mZnNldCkpOworICAgICAgICAg
ICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSh2bSwgY29kZUJsb2NrLCBDYWNo
ZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIG5ld09mZnNldCwgb2xkU3RydWN0dXJlLCBu
ZXdTdHJ1Y3R1cmUpOworICAgICAgICB9IGVsc2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xvdC5pc05vbmNvbmZpZ3VyYWJsZSgpKQorICAgICAg
ICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNj
ZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3Bl
cnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3MsIENhY2hlYWJsZUlkZW50
aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51
bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNz
Q2FzZShsb2NrZXIsIGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsK
KworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgcHJv
cGVydHlOYW1lKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAo
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVh
clN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywgcmVzdWx0KTsKKworICAgIHJl
dHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNo
ZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2lu
ZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisK
KyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFz
ZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQpID09IEdp
dmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRo
R2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBw
cm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisg
ICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LAogICAgIGJvb2wgd2FzRm91
bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQpAQCAtMTM5MSw2ICsxNDU3LDE1IEBAIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7CisgICAgaWYgKGtpbmQgPT0gRGVs
QnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0
aW1pemUpOworICAgIGVsc2UKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXRQ
YXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRl
eCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBlOGE5OTQ0YmI0ZjlmZTM5Li5jMWQ5OTU5YWRhZmQz
NjU3NjJlODkxNzlhYjNjMGVlZDY2ZTU4N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51bSBjbGFzcyBHZXRCeUtpbmQgewogICAgIERpcmVj
dAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtpbmQgeworICAgIE5vcm1hbCwKKyAgICBOb3JtYWxC
eVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1
YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwordm9pZCBy
ZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNs
b3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgU3RydWN0dXJlU3R1
YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgYm9vbCB3YXNGb3VuZCwg
Y29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaElu
c3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1Zh
bHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQg
bGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2Jq
ZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CkBAIC01
Myw2ICs1OSw3IEBAIHZvaWQgdW5saW5rRm9yKFZNJiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0lu
Zm8mLCBDYWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYp
Owogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9u
Q2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdD
YWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCAyMjU0ZmNjNDI5NjE3Y2U4Mzk3ZDI0ZTU1MGUxYWNlYzY3YjYxNDQz
Li5mYWNhN2JmNGUxNzhkNDI1ZmZiZWZmZTk1NGU4ZjMxZWIwMDIwNmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTkyNSw3ICs5MjUs
OCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BEZWxCeUlkPigpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBib29sIGNvdWxkRGVs
ZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSksIHNsb3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmICghY291bGRE
ZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9y
KSk7CkBAIC0xMTA4LDcgKzExMDksOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZGVsX2J5X3ZhbCkKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIGF1
dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNl
T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0K
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKaW5kZXgg
ZmZiM2ViOWQwMDVjZjZmZDA4ZmZkMmJiODhiOWQ1ODdiYWVkMGZmNi4uMTA3YjVkNjA3MjAzNzA1
MWY2YTdjMWU5Y2IwYzE1ZjI2NTg5NzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCkBAIC00Miw2
ICs0Miw3IEBAIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVy
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGluZSBDYWNoZWFibGVJZGVudGlm
aWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKEpTQ2VsbCogaWRlbnRpZmllcikKIHsKKyAgICBBU1NF
UlQoaXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChpZGVudGlmaWVyKSk7CiAgICAgc2V0Q2VsbEJp
dHMoaWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmgKaW5kZXggZmU2YzZiN2Q4NGM0N2VkZWUxMWFhYzExZjY0ODRhNzJkNDE3YmM0Ni4uN2E1
OWI4ZmRiMGMyMmNjYmJkMjhkODAzMWRhOGExN2VlMDUzNzIxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IE1ldGhv
ZFRhYmxlIHsKICAgICB1c2luZyBQdXRCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9F
TlRSWShwdXRCeUluZGV4KTsKIAotICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIg
PSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
dXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBEZWxl
dGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShkZWxldGVQcm9wZXJ0eSk7
CiAKICAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCop
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggOTZhMzYzNWU2ODI3
MzkzZWU4MzZkODA0Nzc3MjRhMjVkNTQ2YzI2MS4uZjY5OTllNzM0ODRlMmFiZDg4MTQ1NGYxMTQ4
MzEwYzAyZDRmMmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVu
dHM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmEKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIGlkZW50KQorYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50cyo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkK
ICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lmTmVjZXNzYXJ5KGdsb2Jh
bE9iamVjdCk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKIH0KIAogYm9vbCBDbG9u
ZWRBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAppbmRleCBmZDNhMjdiZjczNTU0
ZDVlZTRhNmUzMWQwYmEwY2FkMTU3NjA1ZmY1Li4wMGM1MzQ3NTYwNWE3M2IyYjNlYjM4ZDNjZjgx
MzI4ODM0ZmYxYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAogICAg
IGJvb2wgc3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IDBlMmJjM2EyNzE5YzJhOTM1M2U3ZDc1MjFhODc5YmQxMmQ3NDAwNjkuLjFkZTgyMzk1
MDllMGM4ZDdhNTZhMzI0MTRmZmU4YTc0YTliNzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtOTg1LDcgKzk4NSw4IEBA
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFz
ZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
c2xvdCk7CiAgICAgfQogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYWQ2ZjZiNDgwMGVmNTc4NTYxY2FlZGM5ZGRiYmM4MmYyNTMyZTYxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgK
QEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCisjaW5j
bHVkZSAiUHJvcGVydHlTbG90LmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgRGVs
ZXRlUHJvcGVydHlTbG90IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgVW5j
YWNoZWFibGUsIERlbGV0ZUhpdCwgQ29uZmlndXJhYmxlRGVsZXRlTWlzcywgTm9uY29uZmlndXJh
YmxlIH07CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3QoKQorICAgICAgICA6IG1fb2Zmc2V0KGlu
dmFsaWRPZmZzZXQpCisgICAgICAgICwgbV9jYWNoZWFiaWxpdHkoQ2FjaGluZ0FsbG93ZWQpCisg
ICAgICAgICwgbV90eXBlKFVuY2FjaGVhYmxlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNl
dENvbmZpZ3VyYWJsZU1pc3MoKQorICAgIHsKKyAgICAgICAgbV90eXBlID0gQ29uZmlndXJhYmxl
RGVsZXRlTWlzczsKKyAgICB9CisKKyAgICB2b2lkIHNldE5vbmNvbmZpZ3VyYWJsZSgpCisgICAg
eworICAgICAgICBtX3R5cGUgPSBOb25jb25maWd1cmFibGU7CisgICAgfQorCisgICAgdm9pZCBz
ZXRIaXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV90eXBlID0gRGVs
ZXRlSGl0OworICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKKyAgICB9CisKKyAgICBib29sIGlz
Q2FjaGVhYmxlRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBtX3R5cGUg
IT0gVW5jYWNoZWFibGU7IH0KKyAgICBib29sIGlzRGVsZXRlSGl0KCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IERlbGV0ZUhpdDsgfQorICAgIGJvb2wgaXNDb25maWd1cmFibGVEZWxldGVNaXNz
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENvbmZpZ3VyYWJsZURlbGV0ZU1pc3M7IH0KKyAg
ICBib29sIGlzTm9uY29uZmlndXJhYmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE5vbmNv
bmZpZ3VyYWJsZTsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGRpc2Fi
bGVDYWNoaW5nKCkKKyAgICB7CisgICAgICAgIG1fY2FjaGVhYmlsaXR5ID0gQ2FjaGluZ0Rpc2Fs
bG93ZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nQWxsb3dlZDsgfQorCisgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmlsaXR5VHlwZSBtX2NhY2hlYWJpbGl0eTsK
KyAgICBUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBmMTgy
MWQ1NTZhM2Q0MDQ0OTM2NzVlYWUyNWZhMmU0NjY3M2VjNDNhLi42ODVjN2FjYmMxMWM2MmQyMzM3
N2QzMmM0ZGU5YTIwYjY1ODc4YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtODcsNyArODcsNyBAQCBib29sIEVycm9y
Q29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvckNvbnN0cnVj
dG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVycm9yQ29uc3RydWN0b3I6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBFcnJvckNvbnN0cnVjdG9y
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKQEAgLTk1LDcg
Kzk1LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBpZiAocHJvcGVydHlOYW1lID09
IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCkKICAgICAgICAgdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOwogCi0gICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
aAppbmRleCA5M2Q1MjcxNDg2ZjY2ZmRlNzUzZTQ5YTQwMTZmMTY4MzhlOTc1NzIxLi45YTVhNDYz
MjFiM2RiYjc2NGMyYTFiNTIxZDkyNjhmOGQxNDM1MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC00OSw3ICs0OSw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgRXJyb3JQcm90b3R5cGUqKTsK
IAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBFcnJvckNvbnN0
cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGZkNDhiYmYzNGMzMDQzMGQyZTcwZGU1NzQ5OGU5
YjUxZTZhYzI0NGQuLjFkNTBjZDE3NGZjNDdkOTIyMTcxODhlMzI1ZmY1N2FlOGQxNWI4MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBA
IC0yOTcsMTIgKzI5NywxMiBAQCBib29sIEVycm9ySW5zdGFuY2U6OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZQogICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIH0KIAotYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCitib29sIEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBFcnJvckluc3RhbmNlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9ySW5zdGFuY2Uq
PihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6ZUVycm9ySW5mb0lmTmVlZGVkKHZt
LCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmgKaW5kZXggZjFmYWM1OTY4MmQ5ZTAyNjUwOGNiNGZmOGM5YjI2N2I0
ZWU3NmU4Ny4uNDAwNjA4ZDA4YTgzNGNkMzFlNjEyZTczYWI1MzFjYjBhM2NhMTFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaApAQCAtOTksNyAr
OTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0U3RydWN0dXJlUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAg
IHZvaWQgY29tcHV0ZUVycm9ySW5mbyhWTSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5kZXggY2UxMGY3ZmU0ODczZTRhNDdiZTE0
MWUyNTU2OWFkNjQ4YWZmOWQyOC4uNDcxMjE2NzMwMzY0ODI4ZmUyNzcwZTIzNDg2OWFjZTcwOTA4
ZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1
bWVudHMuaApAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggYjgz
N2VjMWJiNDMwZjZkNThiMWQ1YjExNWRhNTEzYzViY2MwYmY1My4uYTVhOWVjYjMyMmEyMGRhOGZl
MjQzM2ZmZDU0N2E3OGFmYzYwMmNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBAIC0xMzksOCArMTM5LDEw
IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvCiAgICAgICAgIHRoaXNPYmplY3QtPnNldEluZGV4
UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpKTsKKworICAgIGF1dG8g
cmVzdWx0ID0gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVl
LCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
eXBlPgpAQCAtMTU4LDcgKzE2MCw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1ib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIGlkZW50KQorYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBpZGVudCwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFR5cGUqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKQEAgLTE3NSw3ICsxNzcsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW5kZXgpKTsKIAotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpZGVudCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
QmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xv
dCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAwMzQ4N2Y2MWUwZjJmYzc1MWJhNzAzYjcw
Y2EzNmQwMjIyMTYzNGRlLi42MDFmMWU0OWYxNWNkNTAxYTBlMGE3NWVlMjg1MDZmMzJiMGRiM2Ey
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAt
MTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgc2V0
UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBib29sKSB7IFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIHsgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZh
bHNlOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2dldHRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggNmQwNzU5MTcx
MWVlZGJjMjhlMGU0ZGE3ODQ5ODIyYWI4ZDY2ZjVkMS4uYmNlMzY1NWEzMTkyZWEyOTBmZTdmMDQw
ODI0YTM4ODZmNmIwNDgzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KIAotYm9vbCBKU0FycmF5Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QXJyYXkqPihjZWxsKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEpTQXJyYXk6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAogc3RhdGljIGludCBjb21wYXJlS2V5c0ZvclFTb3J0KGNvbnN0IHZv
aWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgKaW5kZXggMzExNjViNWZmNDkyNTRjYzFhNmM0NzkwMmI3OTEwYWM0YTdkOWJmZi4uY2RjMzli
NTEyZDdlZTNhMTVjZjFhZWMyZTBhMmQ5M2Q5YWFhZDBmMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHByb3RlY3RlZDoKIAogICAg
IHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGZlMDE4MGRkNjBj
M2QxYmI2MGY4YjUzM2IxODYwNThlZWFkODFiNzUuLjU4NmFmM2ZhYjM3OTUyZTNmZGUxY2U0NzBj
OTlhYjFlZGM0YTc0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBc3NlbWJs
eUhlbHBlcnM7CitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Q7CiBjbGFzcyBKU0JpZ0ludDsKIGNs
YXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2VsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCmluZGV4IDI3MTM1MmIyMTc0NzAzNTZkZjQwM2ZkZDljZGU2MGRlZjg4ODE2
MDcuLjBlNjdmODY2NzZkNTg2NWFhODhmMDRmMzVhZGE3NDMyMWUwMmNmMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTI2LDEwICsxMjYsMTAgQEAgYm9v
bCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBpZGUKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgdmFs
dWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50
aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpZGVudGlmaWVyLCBzbG90KTsKIH0KIAogYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDY2
NWQwODg5Y2Y0NDYxYzNhYjBhMmFmNGIwN2M2YTU4YzkwNDIxYzQuLjA2MmU4M2RiMzlhYjM0YTZl
ZjRmZGEzNmZmYTUwZTRjMTExZDk3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0SW5saW5lKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAg
Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RhdGljIEpTVmFsdWUgdG9UaGlz
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCAxNDZhOTEzMmQ0NzM1MjQyYzEwNmU2
NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJiMDllMzdmOGE0NzQzMTliZjc2YzMyZDhh
OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApA
QCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5lT3duUHJvcGVydHkoCiB9
CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
ICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEpTRGF0YVZp
ZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTRGF0YVZpZXc6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4MmE2N2U5N2VmYmI0ZjMyZjFiYzEyZTc4
Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVlNmNjN2I5ZjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC03Miw3ICs3Miw3IEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKaW5kZXggZWU4NWVlMDY0NmM5ZGRhZjllNmU5N2FmMTdiOWY5YzAzNzdk
MThlMC4uOGI4ZDUwNjUzNmU1M2Y5MjhiYzM2OWQyZWJmZDVhNjMwYjA4NmI4NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTU4Niw3ICs1ODYs
NyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTYxNyw3ICs2
MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiB9
CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGFkZGRl
MmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZhY2QuLjE4YWI0NzU0M2ZkNzgyOTc4YWZl
YTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZjA4Zjg1MjQ2OWJlZmQ2YzVh
ZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2NWNlMWMzNTY1NTBlY2Q1OGI3N2ZlZDlk
NjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUsNyArMzA1LDcgQEAgcHJvdGVjdGVkOgog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAwY2FmYmQyNzZjZjc0ZDBjODVl
ZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi41OGZiYjU3NTYyYjcxMDA3OWU2NTE0MGY3ZTA5ZTcwODA0
OGZhMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNDM4LDcgKzQzOCw3IEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlZmluZU93blByb3BlcnR5
KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTQ4NCw3ICs0
ODQsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7
CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1NjZjNWQ0YTE4YTkyODcxZjdlLi4wZjg5
MDMwMGJlYjc4NGM3MTc5YTg3M2ZhY2ZjYjJhODRkMGM5ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMzE0LDcgKzEzMTQs
OCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgbWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgYWRk
R2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCBmMzQ1YzUwMjdh
YmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45NzRiOTJiNTRlMWEzMzgzMTY5ZGVmYWIy
YTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsMTMgKzEyNywxMyBAQCBib29s
IEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRPd25EYXRhUHJv
cGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0K
IAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXJndW1l
bnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggZDAxM2I1MWVmYTI5N2ViZjAz
Y2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMyZGQ0OTNmZjdhNGUzMWE0ODI2YjcwYzI1
MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJFX0lORk87CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKaW5k
ZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAwYjcyOWY3YzczZC4uODU4YTk0MmZlNzM1
NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTEyNyw3ICsxMjcs
NyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAocmVzb2x1dGlvbi50eXBl
ID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5kZXggZGFlYWI2NjJmYzA0ZGFiZGQy
NmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2ZiOThiYjJhODJkYWEyOWE1OTYzNTJlNzE5
YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0
ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5
bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggMmJkYjEzMDVlYjBjNGJlOTYwODA2
NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNhNjVhZDExOTAyZjVkMDEzZWQ2NWQ4NjU2
MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5LDEyICsxOTksMTIgQEAgYm9vbCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3Jn
L2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVsZXRl
LXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVy
dHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4IDhlZWY2MjFlM2I4NGZhNjYyOGNm
YTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdhMTNlN2VmYmZjZjFjOWUyODYzMGUyNDJh
NzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNmOWNiMDFlMmJmMzIxYjA2ZWQ0MTk2Yzku
LmVkYTJkNjIzNTA5OWVkMzAxYmIwYWUxMTQ1MTRmMzJlMTU0Y2I2MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC03NTksOSArNzU5LDEwIEBA
IE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAg
ICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZlcihvYmplY3QsIGpzU3RyaW5n
KHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFsdWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFs
dWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3ApOwotICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgc2xvdCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5w
dXQob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgZmlsdGVyZWRWYWx1ZSwgc2xvdCk7CiAg
ICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAg
ICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCmluZGV4IGFjZDI5ZGVkODEzNTFmYjI4NGIyMTU5YWQ0N2E2MzFjMzQ5
NGYxZGYuLjM0NzMyZTFjMmJmMzZmZTVkNzk3N2MxYmRlMjVjZGFlZDYzYWM5YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE5NzIsNyArMTk3Miw3
IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAKIC8vIEVDTUEgOC42LjIuNQotYm9vbCBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xOTk5LDggKzE5OTksMTAgQEAgYm9vbCBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJvcGVydHlJc1ByZXNlbnQgPSBpc1ZhbGlk
T2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKICAg
ICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpCisgICAgICAgIGlmIChh
dHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJv
cGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJsZSgpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7
CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKQEAgLTIw
MDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAgICAgICAgICAgICBvZmZz
ZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3Bl
cnR5TmFtZSwgW10gKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFByb3BlcnR5T2Zm
c2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBz
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOwotICAg
ICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5ICYmICFzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVj
dCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNldCk7CisgICAgICAgICAgICBpZiAo
IXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVy
KHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1fYnV0
dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5udWtlU3RydWN0dXJlQW5kU2V0
QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLCBudWxscHRyKTsKICAgICAg
ICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgICAgICAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRPZmZzZXQpOwpAQCAtMjAyMCw3ICsy
MDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgICAgICBpZiAob2Zmc2V0ICE9
IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgc2xvdC5zZXRD
b25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwMzAsOCArMjAz
NSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNl
bGwpOwogICAgIAotICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKQotICAgICAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkpKTsKKyAgICBpZiAoaSA+IE1BWF9B
UlJBWV9JTkRFWCkgeworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpKSwgc2xvdCk7CisgICAg
fQogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdNb2RlKCkpIHsKICAgICBj
YXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAgLTM2MjUsNyArMzYzMiw4IEBAIGJvb2wg
dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkg
Y2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAo
ZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50
LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuIHB1dERlc2Ny
aXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVz
Y3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwog
ICAgICAgICB9CkBAIC0zNjQxLDcgKzM2NDksOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9w
ZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAg
ICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGdsb2JhbE9i
amVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmli
dXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CkBAIC0zNjY1
LDcgKzM2NzQsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGds
b2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3Iu
YXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CkBA
IC0zNzE4LDcgKzM3MjgsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAKICAgICBHZXR0ZXJT
ZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdldHRlciwgc2V0dGVyKTsKIAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIHVuc2lnbmVkIGF0dHJzID0g
ZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7CiAgICAgb2Jq
ZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
U2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBlYzYzMDBlYTliOTcyY2U5YmEwZmFk
ODE4MjU3YWZiMjBkODJhMmVkLi42OTNiZGJiOTk3ZDY0NDIwODA2NTFjMjdlZGRlN2IwODhhMTQx
NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRl
ICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5k
ZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC02MjMsNyArNjI0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRleCA5YzQ3OTM0ZTRhM2Q5MTk5ZmE5
ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEyZDIyMTkxMjdjZDk5YjMwMjA5MzA4ODcy
MTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApAQCAt
OTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09i
amVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlZmluZU93
blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTUHJveHk6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRh
cmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgp
KS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Byb3h5Ojppc0V4dGVuc2libGUoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFlNjY4ZDI1OTBkOWI5N2M4ZjRiYmEyYmZm
YjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5NGMwYjI1ODk1Nzk4ZmM1ZjllZjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBAIC05Myw3ICs5Myw3IEBA
IHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJv
cGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDYzMGUxYjc4YmIyMDZlN2Fm
NjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMxNTBlOTZhZWNkNTM3NDczMWZkYThkOWE3
YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgdm9pZCBKU1N5bWJvbFRh
YmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7CiB9CiAK
LWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhp
c09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNkZWQ5OGIzMzVkZjczNmIyMS4uYjU2OGU4
ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJl
dHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTeW1ib2xUYWJsZU9i
amVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4MTU5OGZmZWYyYTVlMTRhODBmZDRlNTRk
YzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTllNWY5MGM2NjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC02ODUsMTIg
KzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFBy
b3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9i
amVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHREZWxldGUgPSBbJl0gKCkgLT4g
Ym9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzT2JqZWN0LT50YXJnZXQoKTsK
LSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+
ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0
ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1EZWxldGUoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDE3Y2EyOWZiMGEzZmRkYmE3MWViNjgy
NDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgxOGE0Njc0YTUyMmJmNjBhMmNhMDllYWMx
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNhMDljMDA0ODFhNTE1MzgyNy4uMWNlMWI0
YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmViYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03MSwxMiArNzEsMTIgQEAgYm9v
bCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJl
Z0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBSZWdFeHBPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAocHJvcGVydHlO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2MzcxOTFhODlmMGI3Yzk2YzVmYmI3MTQuLjg1
N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNlMGIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0g
KG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgfCBsYXN0SW5kZXhJc05vdFdy
aXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAppbmRleCA1MTU3NTI3NjVlY2Iw
MmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRiYzY3YzU3ZjgxNTYxZmE3OGQxOTRlZmFm
MDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIFN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBTdHJp
Y3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2IxMDk2YjI2ZDE4NzA3NGNiZjE3ZWI4M2My
OS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBmZGJiN2ExMDA3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNjb3BlOwogICAgIH0KIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NzdiOWNhZmIzZmEw
MDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZkZDkyNzNiNzUwNThhNDdmNzY5YTNmY2Y4
Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRp
b24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNl
bGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByCiAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
IChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4
LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2IzYTNlNGRhMzUyZjIyNzg2NTIzLi42OWYy
NmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBlZGE0NDZiZmJl
MjY3YWIwMWI4NTJlMTVmZGU5YzljMzBlNmY1OGU2Li42MzY5NGYwYzRhZGQxYmE0ZWI3NGRiYWQy
NjFkNzAwM2U4MjczZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKQEAgLTU0MCw4ICs1NDAsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3
UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBk
ZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAobmV3U3RydWN0dXJlKQogICAg
ICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01NDksMTYgKzU0OCwxMyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQs
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKikKK1N0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJ
bXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewotICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hl
YWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAK
LSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IGZh
bHNlOworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgaWYgKFN0cnVjdHVyZSogZXhp
c3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVy
dHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkgewogICAgICAgICB2YWxpZGF0
ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdU
cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdU
cmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01NjgsMTEgKzU2NCwzMCBAQCBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBudWxscHRyOwogfQogCitTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsK
KyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBpbnZhbGlkT2Zmc2V0
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0
dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBp
bnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKwogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJl
bW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJl
ZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7CiAgICAgQVNT
RVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwgcHJvcGVy
dHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92
ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgb2Zmc2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5
KHByb3BlcnR5TmFtZS51aWQoKSkgIT0gaW52YWxpZE9mZnNldCk7CiAKICAgICBpbnQgdHJhbnNp
dGlvbkNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNp
dGlvbkNvdW50IDw9IHNfbWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZpb3VzSUQoKSkK
QEAgLTEyMDMsNyArMTIxOCw3IEBAIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0
cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUsIGJvb2wmIHNhd1BvbHlQcm90CiAKIHZvaWQgU3Ry
dWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KFJh
d1BvaW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKKyAg
ICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgUmF3UG9pbnRlcihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihpZCgpKSksICIsICIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsi
KTsKICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDUyY2QzYzcxZDkyMGYyZjhhOTdiNDYwYjkw
ZTBlYzcwZDVkNzExYWYuLmFlMjBhZTk2YmE0MDMyZjZhYTFmOTRiZTNjMTc0Yjc2M2M3M2ZhZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNM
b2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5kZXhp
bmdUeXBlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpA
QCAtMTkxLDcgKzE5Miw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVj
dHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQm
KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0m
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnRGaXJlKiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRj
aHBvaW50RmlyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90
eXBlLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRp
b24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlv
bmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKQEAgLTQ3Nyw2ICs0NzksNyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikg
Y29uc3Q7CisgICAgYm9vbCBtYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2Vs
bCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIApAQCAtNzE2LDYgKzcxOSw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0
cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKIAogICAg
IC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9w
ZXJ0eSB0YWJsZSwgdGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qgb2Yg
c3RydWN0dXJlcyB0aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0
dXJucyBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKaW5kZXggMGNkOThkNTJhY2M3ZjcxNGMwNWIxNTNlMDgxMzllNDkxY2Q4Y2Y4Yy4uZmUy
ODU4NzQwOTRkYWMzMDcwNzVkMmM3NjFlMjMyMmE0NjAxNzVmNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjI0LDEwICsyMjQs
MjMgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0Nl
bGwqIGNlbGwpIGNvbnN0CiAgICAgCiAgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlw
ZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUo
KSA9PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7CiB9CiAKK2lubGluZSBib29sIFN0cnVjdHVyZTo6bWF5
SGF2ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0Cit7CisgICAgbXVz
dENoZWNrQ2VsbCA9IGZhbHNlOworICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGlu
Z1R5cGUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFpc1R5cGVkVmlldyh0
eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtdXN0Q2hlY2tDZWxsID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
aW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoKSAmJiBnbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2Jq
ZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDlh
N2Y0OWExNDA1M2EwODI3ZGJhZTM1MmQyOGY1MDM2MDdmZjZjZDcuLjRlZjI5ZWQ3NzY4OGRjMTc5
Mzg4YjcxMGYxNGU0MzYxOGVjZjllOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSkKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CkBAIC0yODUwLDYgKzI4NTAsMTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHkoSlNHbG9iYWxPYmplY3QqIGds
b2IKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNPYmplY3QqIHRhcmdldCA9IGFz
T2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHRhcmdldCk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rpb24tPmFyZU5hbWVBbmRMZW5n
dGhPcmlnaW5hbCh2bSkpKTsKK30KKwogdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTI5ODMs
NiArMjk5Miw4IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAg
IGFkZEZ1bmN0aW9uKHZtLCAiZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QiLCBKU0RvbGxhclZN
SGVscGVyOjpmdW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0LCAxKTsKICAgICBhZGRG
dW5jdGlvbih2bSwgImdldENvbmN1cnJlbnRseSIsIGZ1bmN0aW9uR2V0Q29uY3VycmVudGx5LCAy
KTsKIAorICAgIGFkZEZ1bmN0aW9uKHZtLCAiaGFzT3duTGVuZ3RoUHJvcGVydHkiLCBmdW5jdGlv
bkhhc093bkxlbmd0aFByb3BlcnR5LCAxKTsKKwogICAgIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0
UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqZWN0
RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggY2I4
ZDNiYjAzMDUyODkxMDhhOGQ4ODFmMDAyMzE0Njg0MzJmYWNmMC4uNDU4NWIxMDBhYzdkYTk0ODIx
NGFkOGM4ZmZiYjIxOTRhYWM3MGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3BlY3Ry
dW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50
ID0gMSkKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgaWYg
KCFjb3VudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxU
LCBDb3VudGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7
CkBAIC01OCw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBDb3VudGVyVHlwZSBnZXQoY29u
c3QgVCYga2V5KSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBp
ZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjYsOCAr
NjgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X21hcC5zaXplKCk7IH0KICAgICAKLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbWFw
LmJlZ2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQog
ICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsg
fQogICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9
CiAgICAgCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBv
cmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCiAgICAgVmVjdG9yPEtl
eUFuZENvdW50PiBidWlsZExpc3QoKSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
cihtX2xvY2spOwogICAgICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGxpc3Q7CiAgICAgICAgIGZv
ciAoY29uc3RfaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikK
ICAgICAgICAgICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50KGl0ZXItPmtleSwgaXRlci0+dmFs
dWUpKTsKQEAgLTEwNiwxNyArMTA3LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7
CiAgICAgfQogICAgIAotICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0KKyAgICB2
b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAg
ICAgbV9tYXAuY2xlYXIoKTsKKyAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewor
ICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fbWFwLnJlbW92ZUlmKFsm
ZnVuY3Rvcl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJU
eXBlJiBwYWlyKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQo
cGFpci5rZXksIHBhaXIudmFsdWUpKTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAKIHBy
aXZhdGU6CisgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBIYXNoTWFwPFQsIENvdW50ZXJU
eXBlPiBtX21hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCAyMDUwNmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZk
NzJhNTRkLi5mN2E4OTU1N2VkNTZhY2VmOTEzYTRhMWY2ZDcyNDY3NTJlMTRjZDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0z
MTQsMTMgKzMxNCwxMyBAQCBib29sIEpTRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEJhc2U6
OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01X
aW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBP
bmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdp
bi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRv
dyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIFRocm93U2VjdXJp
dHlFcnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvdzo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggMWVmMDZjMjZlZTI1MmRlNjY4
YzFkZWRlOTFjNWRkZjZhMGRkZmRlNS4uODRiOWExM2UxOWVhMTg5ZGYzMDc0NzYwNjVkZDM3M2U1
MWU0ZjY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAKQEAgLTE2MywxMyArMTYzLDEzIEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1CiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3Qs
IGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTG9jYXRpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxsKTsK
ICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4u
CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLndpbmRvdygpLCBUaHJv
d1NlY3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNMb2NhdGlv
bjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAppbmRl
eCBlMmVlZGZkNWIwYzVhYTcxODcwZGE3NjU0Mzk3ZTM1Yjk5YTgyY2FjLi4wY2I2N2VmMjljNjJi
ZjhjYzQ0NmEwZWNlMzFjOWZlNTM1MTU3YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCkBAIC04Miw3ICs4Miw3
IEBAIGJvb2wgSlNSZW1vdGVET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
SlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUpCitib29sIEpTUmVtb3RlRE9NV2lu
ZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIFZNJiB2
bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwM2RkOWMxNjFhODM5OTEyZDQzOTM0MmQyNjViYzVm
ZDE1YjZhNDE2Li5iN2NkMWZjYTQzOTljZTg5OTZhYWE2ZWNhNzk1MDczNmMwNTMyMzllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMTMwMSw3ICsxMzAxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKICAgICAj
IFRoaXMgaW1wbGVtZW50cyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3kt
cGxhdGZvcm0tb2JqZWN0LWRlbGV0ZSBmb3IgdGhlCiAgICAgIyBmb3IgdGhlIGRlbGV0ZVByb3Bl
cnR5IG92ZXJyaWRlIGhvb2suCiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xh
c3NOYW1lfTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBh
dXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwpAQCAt
MTMyMSw3ICsxMzIxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKIAogICAgICMgRklY
TUU6IEluc3RlYWQgb2YgY2FsbGluZyBkb3duIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSwgcGVy
aGFwcyB3ZSBzaG91bGQgaW1wbGVtZW50CiAgICAgIyB0aGUgcmVtYWluZWQgb2YgdGhlIGFsZ29y
aXRobSBvdXJzZWx2ZXMuCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogfQogCkBAIC0y
Njk2LDcgKzI2OTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9CiAKICAgICBpZiAoSW5z
dGFuY2VPdmVycmlkZXNEZWxldGVQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTtcbiIpOwogICAgIH0KIApAQCAtNDMyNCw3
ICs0MzI0LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTc1MTIsNyArNzUxMyw4IEBAIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5h
bWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAm
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Jmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNl
bmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcAppbmRleCBiNWVhNTQ4ZTFkMTI3MmUxODZkYjk0NGNlNjE5ODUwZjRm
ZDJlODA4Li5lNjMzMjM5ZGFlZmNlZjA0MDljOGI0NjNiODcwZjY2YjgxMDVkNzVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0xMzcsNyArMTM3LDggQEAgdm9pZCBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpLCBzdHJsZW4oImVu
YWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CkBAIC0xNDUsNyArMTQ2LDggQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0
dGluZ0F0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRp
ZgogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5p
c0RpY3Rpb25hcnkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApp
bmRleCA4MGZhZjM1MTA1NDdhMmFkZTc3Y2I3ZWM5NWIyOTE5MmQ5MDFhYTQ5Li5lZjY2MDMzNGUz
MTgxYjY3ZGU1MjRiM2QzNWRmMTY1NjRmNjU2YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xMDgsNyArMTA4LDggQEAgdm9pZCBKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiYVNlY3JldEF0dHJpYnV0ZSIpLCBzdHJsZW4oImFTZWNyZXRBdHRyaWJ1dGUiKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAg
ICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0
aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggYmZmNGMzYjA5
ZGE1OTQxYmZmNzFkY2RiYjM4NTI1NDhhMDBjM2YxZC4uODc4M2UxNWMyODEzNzY2MzRmZGM3NWRl
ZmZjODVkZGE5NjU0ODlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5jcHAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiti
b29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRo
aXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcio+KGNlbGwp
OwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBpZiAoaXNWaXNp
YmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVs
ZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAg
ICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXIuaAppbmRleCAwZWE0YmIxMWI4NjA1MzAxMTY1N2ZkNmVhNjNmMjQ2ZDRkODJlNTBhLi4xMzhk
NGMxOGY4ZjQ2YmMzNDMzMTA5YmQwMzIzOTU2MzdkMGFjMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09i
amVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlND
OjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpK
U0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IDc5NGQ1OTc2ZjEzZjA3
MThiNGNlZTUxNjMzODMwY2NkMzBmMWMzMzMuLjU3OWYyYTBlNmE4YzdhOTI1NTYxOWQ4NDQ1MjZi
YThkZGIyZGFhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwpAQCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAKICAgICAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9Ci0gICAgcmV0dXJuIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24u
aAppbmRleCA3OTFiZTE4MmViMWIzNjk2OTIxZGU5NzY5NTI3MjlmMGI0ZjBiMzRhLi4wNTVkM2Rm
OTIzODE4YzAwNzY3ZjE4OTVkZjY3MjVmNWJjMGVkZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJh
eSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiMzM3NmUzYTlmZTUy
YjhhMGE2ZDNkNDA1YTZhYWZlYzQxYmNmMDg3Li4yNTAyM2EzMWExNDY0MjI4N2EwYjFiNTBkZGY0
ZGY0NjE5ZGRmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpT
RwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiti
b29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYg
dGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqPihj
ZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyAr
MjA0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamUKICAgICAgICAgaW1wbC5uYW1lZERlbGV0
ZXIocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IDU0ZTAyNTQ3OGUxZGMzOTkwNzA3MzNlNDk5YjAxNjMx
NDkwMTI0OWUuLmE4NThhMjcxNTRiZDNjNjM2NGZjNDVhNjQ3ZmY0MmI2YjQ3MjUwNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9k
ZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmlu
ZGV4IGU4ZDk3NDE5YWZhNWQ5YWU2OGRhMDRlYTU0MWVhYmY1MGQ0Nzg3MzYuLmY2ZjM2NmUyMjJl
NDE0NGE3NGI2Mzc1NGZiZDA3ODk4Zjk4YjY2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBA
IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
Ci1ib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPCiAgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6
Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAg
ICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJp
bmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1
cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKaW5kZXggYTk5NDViYWZj
NjExNDNlNTc2ZmZkNjBmZWM4ZWVlNjk2NGI5ZjAzMC4uMmZlYThkOTBmNGY0YTE4NDJjOGUxOTJh
ZjM1ZDg1YzdkMTg2ODllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0
aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDExMDBhYTNjZWMwYjFlMTBm
NzkwNzMwYWY1MTMwOTcwMDYwMGI5NWUuLjFmYjNmMWJlYThkYWYyZjBkMDllMjk2YzU4N2ZmZTA0
NzA4NjNmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTE1Nyw0NSArMTU3LDUyIEBAIHZvaWQgSlNUZXN0
Tm9kZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
ImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
ICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdldFNlY3JldEJvb2xlYW4iKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRl
eHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0
dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0g
dHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJh
dG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW50cmllcyIpLCBzdHJsZW4oImVu
dHJpZXMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
ZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJrZXlzIiksIHN0cmxl
bigia2V5cyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInZhbHVlcyIpLCBz
dHJsZW4oInZhbHVlcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZvckVh
Y2giKSwgc3RybGVuKCJmb3JFYWNoIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlv
bmFyeU9iamVjdCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDRjMTA3MTAxMzEwOWI1ZmVlY2I0MzI1NzE0
ODQwNjkyZDg5MDZmMjEuLmY1Njg0MzI0YTY2N2JhOTZkZTc1MzYwODE4NzNkMjUyMGFhOGU1MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC0xOTg0LDE0ICsxOTg0LDE2IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRl
c3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFi
bGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZVN0YXRpYyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxl
ZCgpKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lT3Bl
cmF0aW9uU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNl
bmRpZgogfQpAQCAtMjM0Nyw5MCArMjM0OSwxMDQgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlm
CiAgICAgaWYgKCEod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNvbWVXb3JsZCgpICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkp
KSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZUVuYWJsZWQiKSwgc3RybGVuKCJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRp
bWVGZWF0dXJlRW5hYmxlZCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghd29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNvbWVX
b3JsZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwog
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigid29ybGRTcGVjaWZpY01ldGhvZCIpLCBzdHJs
ZW4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNv
bnRleHQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBz
dHJsZW4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2Vj
dXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBz
dHJsZW4oImdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlm
ICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0
dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1
bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwog
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRv
d0Z1bmN0aW9uIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9u
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAg
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIiksIHN0cmxl
bigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCEoanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFsbG93c01lZGlhRGV2aWNl
cygpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1lZGlhRGV2aWNlcyIpLCBzdHJsZW4oIm1lZGlh
RGV2aWNlcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKXx8IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5oYXNTZXJ2aWNlV29ya2VyU2NoZW1lKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
c2VydmljZVdvcmtlcnMiKSwgc3RybGVuKCJzZXJ2aWNlV29ya2VycyIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKCEoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlMUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicnVu
dGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiKSwgc3RybGVuKCJydW50aW1lQ29u
ZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9j
dW1lbnQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5k
b3dBdHRyaWJ1dGUiKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmli
dXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpLCBz
dHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICAvLyBBZGRp
bmcgYmFjayBhdHRyaWJ1dGUsIGJ1dCBhcyByZWFkb25seSwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHJl
YWQtd3JpdGUgdmFyaWFudCBhYm92ZS4gCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAKaW5kZXggZmVlYmRlZjdiYzQ1ZTk4YzkzMDhmZGZiZGUxMTBiOTlm
ZGRkY2EyYy4uMzJjMTNiOWViNDA3MDgzNWViMjU4MzcxOTZkNzgzMjU4YWM1OTczMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0zOTEsOCArMzkxLDkgQEAgYm9vbCBf
TlBOX1JlbW92ZVByb3BlcnR5KE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKGktPmlzU3RyaW5nKCkpCi0gICAgICAgICAgICBvYmot
PmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmotPmltcCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVj
dCwgaS0+c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVy
RnJvbU5QSWRlbnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSksIHNsb3Qp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgob2JqLT5pbXAsIGxleGljYWxHbG9iYWxPYmplY3QsIGktPm51
bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2Ny
aXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tCmluZGV4IDIyZjBiOGQ5ZDhmYWU0YTc5YzZiNjMxZTkzNWNiNmFkYzdkOTRmZmYuLmRiYzZk
M2IxZTE5ZjljMjFkOWI2MGMxN2VkZmY5NzE2MDA2N2MwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTQ1Nyw4ICs0NTcsOSBAQCAtICh2
b2lkKXJlbW92ZVdlYlNjcmlwdEtleTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIg
bG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAg
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7
CisgICAgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKIAotICAgIFtzZWxmIF9pbXBdLT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmcoa2V5KSkpOworICAgIFtz
ZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmcoa2V5
KSksIHNsb3QpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAg
ICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IDVlZDIxZjEzNGVmNGFhYjVk
YzBjNTVhNDVkZTZhNjNkMjdjNmJlMmUuLjYyMjk2MzY4ZWJiOTBjNTBiOWRlN2ZhMDc4MmM5YzZm
YTI4NTkxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBA
IC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSk7CiAKICAgICBib29sIHRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCopIGNvbnN0OyAv
LyBGSVhNRTogQ3VycmVudGx5IHRoaXMgaXMgYnJva2VuIGJlY2F1c2Ugbm9uZSBvZiB0aGUgc3Vw
ZXJjbGFzc2VzIGFyZSBtYXJrZWQgdmlydHVhbC4gV2UgbmVlZCB0byBzb2x2ZSB0aGlzIGluIHRo
ZSBsb25nZXIgdGVybS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQppbmRleCAxOWVkMTljYmM3YWUzZWU0Njc3OTZiMTAzY2JmZTc2MTYwOWFkNzMwLi42ZTg3N2Qy
ZWI3ZjQ0ZDAzYTI4ZTE3MTA4M2JkM2QwZjBiYjk4ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgQ2FsbFR5cGUgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBj
YWxsRGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKLWJvb2wgT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAKaW5kZXggNGQyOTdjNzBkNmIxYjZjMWFmODhmOTE0YmU4NWY2MGRmMDNjYzliMS4u
ZWMzNTg4ZmM1NjU5NTUzZjUyNzI4M2M1OGE3MzU4MDIxMzI5YWM1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgUnVudGlt
ZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+
c2V0VmFsdWVBdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUpOwogfQogCi1ib29s
IFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpCitib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5k
ZXggZmNmNWUzM2ZiMTE0MDE4NTEwNzk5MzBmYmQxMTc2MTM1NDUyYzdlNi4uMjk4MTJhNjZkNmYw
MTI0ZTM4MzYyNWY5NTYwMTljYTMzYmMzYmQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAKICAgICB1bnNpZ25lZCBn
ZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5nZXRMZW5ndGgoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggYTAzNmI2NjYyZDQ4NzJmNjhk
YzUyNjQ1YmExYWYyYmExNTMzMDMyZC4uOWQ1ZDYwZGVmMzU3NTRiZTFlMGUwNjIwZTQxZWRiOThl
ZmUzOWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0y
MDAsNyArMjAwLDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGUKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90JikKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEgcHJvcGVydHkgb2YgYSBSdW50
aW1lT2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmgKaW5kZXggNmNiZjdiZjc5NmIwYTg5NDA0Yjk0MjI3NWQ2NTFlNjBlNzMyNDU4Mi4u
M2MxMGQ4YmQ1MGYzYjdkYWE0ODQyMjE0YjllMDRmMDQzYWZkZjJmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmNwcAppbmRleCAyZWZiMjI1MjNmOTIxZTkyYWJkMDIxNmViMGNkMWZmZDEwMDM2MmJlLi4wNWQx
MjkyOTM5NTgyZjA0YzQzMmQzMGMxNDJkYmE1ZGFhMGJmMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApA
QCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxKU05Q
T2JqZWN0Kj4oY2VsbCktPmRlbGV0ZVByb3BlcnR5KGxleGljYWxHbG9iYWxPYmplY3QsIG5wSWRl
bnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCmluZGV4
IDg1NTg4OTQ5YTMwNjA0YzY5Zjc3Y2NjM2Y2MGU1NDY5NzdmZmFjNmQuLjQ4MDNjMGJjNTcxZjk3
N2RkYzI3MjJiYmFiOTZiNmQyN2MyYTljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTk1LDcgKzk1LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09i
amVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDOjpKU0dsb2JhbE9iamVjdCosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2Jq
ZWN0LmNwcAppbmRleCAzNmYyOGVlNmZiMDEwMmQ4YzE3NzEzYzYwOGI2MTRlYWY4NWRkYjc2Li44
YjlmY2RmMzA4NTJkMWQyMjJhNWIzYmQ1OTA2ZGE0YmFmZTQzYTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNw
cApAQCAtMjI5LDggKzIyOSw5IEBAIGJvb2wgTlBKU09iamVjdDo6cmVtb3ZlUHJvcGVydHkoTlBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkobV9qc09iamVj
dC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
aWRlbnRpZmllciwgc2xvdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2pzT2JqZWN0
LT5oYXNQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwLT5udW1iZXIo
KSkpIHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAzMmFmYTI4MGZhOTI3ZDg3NzMyMGVi
ODFjYmQ5MDcxMDI1NTk3ZS4uMTJjZTQwOWM1NDNjMjI4ODIyNzcxOWIyZDQxMDhiZjJhODc5ZDQ5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTE0MSw4
ICsxMTQxLDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJlbW92ZVByb3Bl
cnR5KHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGkKICAgICAgICAgc2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBzY29wZS5jbGVhckV4Y2Vw
dGlvbigpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxNDZhNzU1YWQ5ZjkzMmIxYjUxNzI5Y2E0MDZm
YzRmMThlOTdlMjc1Li5hMDY2ODYyNjAxNjBjNmQ1ODg4OWFlYmVjMjM0MzBkZTA3ZDRiOWEyIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYzIEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVk
QGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNo
bWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzOgorICAgICAgICAo
ZGVsZXRlLkMucHJvdG90eXBlLnopOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzOiBBZGRlZC4KKyAgICAgICAgKGFz
c2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAg
ICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9u
ZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwubWFrZUZvbzYpOgorICAgICAgICAobm9JbmxpbmUu
YXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RQb2x5bW9y
cGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFs
KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNo
ZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAg
ICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChu
b0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9J
bmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAg
ICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0
X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxl
dGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMp
OgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFi
bGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5
RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRN
aXNzKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNh
Y2hlYWJsZS1zdHJ1Y3R1cmUuanM6CisgICAgICAgICogc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1p
bmxpbmUtY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2Vy
dF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKGFzc2VydF90aHJvd3MpOgor
ICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3Nl
cnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFr
ZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5s
aW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlk
Lm1ha2VGb28zKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50
ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgubWFrZUZvbzUpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleCk6CisgICAgICAg
IChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlWYWwubWFrZUZv
bzYpOgorICAgICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhpY0Rl
bEJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RC
aWdpbnREZWxldGVCeVZhbC5tYWtlRm9vNyk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1v
cnBoaWNEZWxCeVZhbC50ZXN0QmlnaW50RGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdEJpZ2ludERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxldGVCeVZhbC5tYWtlRm9vOCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJvbERlbGV0ZUJ5
VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xEZWxldGVCeVZhbC50ZXN0T2JqRGVs
ZXRlQnlWYWwubWFrZUZvbzkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN5bWJvbERlbGV0ZUJ5
VmFsLnRlc3RPYmpEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqRGVsZXRl
QnlWYWwudGVzdFN0cmljdC5tYWtlRm9vMTApOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iakRl
bGV0ZUJ5VmFsLnRlc3RTdHJpY3QpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN0cmljdC50ZXN0
T3ZlcnJpZGUuYXJyLmopOgorICAgICAgICAobm9JbmxpbmUudGVzdFN0cmljdC50ZXN0T3ZlcnJp
ZGUpOgorICAgICAgICAobm9JbmxpbmUudGVzdE92ZXJyaWRlKToKKwogMjAyMC0wMi0xOSAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgQ29tcHV0ZWQg
UHJvcGVydGllcyB3aXRoIGluY3JlbWVudCBzb21ldGltZXMgcHJvZHVjZXMgaW5jb3JyZWN0IHJl
c3VsdHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0
eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwppbmRleCA0OWEzMWI3ZjI0N2MxYmQw
YWNhODJjYjIyZGYyMGU4ZjFiZjYxYmRkLi41NGJiYTgyZTY5OWM2MmNjY2E4OTQ1MTZlNjJiN2U2
Y2ExZjUxMjAyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJv
cGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCkBAIC0xLDQgKzEsNCBA
QAotLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBi
eSBtYXJrLWpzYy1zdHJlc3MtdGVzdC5weQorLy9AIHNraXAgaWYgJG1vZGVsID1+IC9eQXBwbGUg
V2F0Y2gvCiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICghYikKICAgICAgICAgdGhyb3cg
bmV3IEVycm9yOwpAQCAtMjgsNyArMjgsNyBAQCBmdW5jdGlvbiBkb1Rlc3QoelZhbCkgewogfQog
bm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewogICAgIGNvbnN0IFggPSB7IGkgfQogICAgIEMu
cHJvdG90eXBlLnogPSBYCiAgICAgZG9UZXN0KFgpCkBAIC0zNiw3ICszNiw3IEBAIGZvciAobGV0
IGk9MDsgaTwxMDAwMDsgKytpKSB7CiAKIGRlbGV0ZSBDLnByb3RvdHlwZS56CiAKLWZvciAobGV0
IGk9MDsgaTwxMDAwMDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDAwMDsgKytp
KSB7CiAgICAgZ2V0Wih7ejogaX0pCiAgICAgZG9UZXN0KHVuZGVmaW5lZCkKIH0KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUt
cG9seW1vcnBoaWMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiYWZmYWM5OGU1NjNkNWYz
N2Y2ZWUyMDkwODVkNjQ4M2M5NjgxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzCkBA
IC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNv
bmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiAr
IGIpOworfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUo
YXNzZXJ0X25lcSkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkgeworICAg
IGZ1bmN0aW9uIG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9v
WyJiYXoiK2ldID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJi
YXoiK2ldCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzYp
CisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsr
aikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAgfQorCisgICAgZm9yIChsZXQg
aj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAgICAgICBm
b28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1
ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMzAwMDA7ICsraSkgeworICAgIHRl
c3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTkx
MmRhNGJiYmFhZDA1MjFlNTUxMjVjOTA3ZTVmYjJjZGMxNGU0Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpA
QCAtMCwwICsxLDE3NCBAQAorLy9AIHNraXAgaWYgJG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCisK
K2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorCitmdW5j
dGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRy
eSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHRocmV3ID0gdHJ1ZQor
ICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShhc3NlcnQpCitub0lubGluZShh
c3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9JbmxpbmUoYXNzZXJ0X3Rocm93cykK
KworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFr
ZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBm
b28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBBcnJheSg1
MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0g
PSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09
IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAg
YXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAg
IGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitmdW5j
dGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzIo
KSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBm
b28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4gZm9v
CisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUw
KQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9
IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09
IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAg
YXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAg
IGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQorCitm
dW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1h
a2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAg
ICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVl
KQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAg
IG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28zKCkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVu
Z3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQo
ISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9v
LmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZv
b1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
ICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hl
YWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRN
aXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0
X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAg
ICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAgIHZh
bHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOworICAg
ICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRf
ZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2Jh
ciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzQp
CisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDAwOyArK2kp
IHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0
ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2Fj
aGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVj
dHVyZS5qcwppbmRleCA3Nzk1ZGM1ODE1NzhlNGMzOTgxYzIyYWM4NzZjNDU1NDEzZTY0ZDNjLi5h
OTM5YWFlM2FjOGFjY2MyMjE0ZGQ3ZTdkODAyNDQyMWE4MTY0NWQ5IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVj
dHVyZS5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2Vl
cHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwpAQCAtMjQsNSArMjQsNSBAQCBmdW5jdGlvbiBkb1Rl
c3QoKSB7CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDAwMDA7
ICsraSkgZG9UZXN0KCkKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgKytpKSBkb1Rlc3Qo
KQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2stc3Ry
dWN0dXJlLXRyYW5zaXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hl
Y2stc3RydWN0dXJlLXRyYW5zaXRpb24uanMKaW5kZXggNDAzYzdjMDljYzEyM2YzYjE4NTQ2ODBi
NmMxN2RkNDU2YTVkZWYzMS4uYTRiYTFlNDRkYWM4YTlhMzMxZGUwM2IwNTM1ZTM5MjQ5M2U2NWMx
MSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVj
dHVyZS10cmFuc2l0aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1j
aGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcwpAQCAtMTIsNiArMTIsOSBAQCBmdW5jdGlvbiBh
c3NlcnRfbmVxKGEsIGIpIHsKICAgICBpZiAoYSA9PT0gYikKICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKIH0KK25vSW5saW5l
KGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCiAKIGZ1
bmN0aW9uIHNkKG9iaikgewogICAgIGxldCBkYXRhID0gJHZtLmdldFN0cnVjdHVyZVRyYW5zaXRp
b25MaXN0KG9iaikKQEAgLTMxLDYgKzM0LDggQEAgZnVuY3Rpb24gc2lkKG9iaikgewogICAgIGxl
dCBkYXRhID0gc2Qob2JqKQogICAgIHJldHVybiBkYXRhW2RhdGEubGVuZ3RoLTFdLmlkCiB9Citu
b0lubGluZShzZCkKK25vSW5saW5lKHNpZCkKIAogZnVuY3Rpb24gdGVzdERlbGV0ZUlzTm90VW5j
YWNoZWFibGUoaSkgewogICAgIGxldCBmb28gPSB7fQpAQCAtNjIsNiArNjcsNyBAQCBmdW5jdGlv
biB0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZShpKSB7CiAgICAgYXNzZXJ0X2VxKCR2bS5nZXRD
b25jdXJyZW50bHkoZm9vLCAiYmFyIitpKSwgMSkKICAgICBhc3NlcnQoZm9vWyJiYXIiICsgaV0g
PT09IDEpCiB9Citub0lubGluZSh0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZSkKIAogZnVuY3Rp
b24gdGVzdENhbk1hdGVyaWFsaXplRGVsZXRlcyhpKSB7CiAgICAgbGV0IGZvbyA9IHt9CkBAIC0x
MDAsNiArMTA2LDggQEAgZnVuY3Rpb24gdGVzdENhbk1hdGVyaWFsaXplRGVsZXRlcyhpKSB7CiAg
ICAgYXNzZXJ0X2VxKGRhdGFbZGF0YS5sZW5ndGgtMl0ucHJvcGVydHksICJiYXIiICsgaSkKIH0K
IAorbm9JbmxpbmUodGVzdENhbk1hdGVyaWFsaXplRGVsZXRlcykKKwogZnVuY3Rpb24gdGVzdENh
bkZsYXR0ZW4oaSkgewogICAgIGxldCBmb28gPSB7fQogICAgIGZvciAobGV0IGo9MDsgajw1MDA7
ICsraikgewpAQCAtMTMxLDYgKzEzOSw3IEBAIGZ1bmN0aW9uIHRlc3RDYW5GbGF0dGVuKGkpIHsK
ICAgICAgICAgICAgIGFzc2VydF9lcSh2YWwsIHVuZGVmaW5lZCkKICAgICB9CiB9Citub0lubGlu
ZSh0ZXN0Q2FuRmxhdHRlbikKIAogZnVuY3Rpb24gdGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSgp
IHsKICAgICBPYmplY3QucHJvdG90eXBlLmdsb2JhbFByb3BlcnR5ID0gNDIKQEAgLTE3NSw2ICsx
ODQsNyBAQCBmdW5jdGlvbiB0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKCkgewogCiAgICAgZG9U
ZXN0KHVuZGVmaW5lZCkKIH0KK25vSW5saW5lKHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUpCiAK
IHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUoKQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRl
LXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTk3MjgxMDdjYWRiNDFiOTk3
YWUyN2JlYTliY2RiNTg2YjYwMTNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
ZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDUzOSBAQAorLy9AIHJ1
bkRlZmF1bHQoIi0tdXNlQmlnSW50PXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9u
KSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0
aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChh
ICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBh
ICsgIiA9PT0gIiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBp
ZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAi
ICsgYSArICIgIT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmdW4pIHsK
KyAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW4oKQorICAgIH0g
Y2F0Y2ggeworICAgICAgICB0aHJldyA9IHRydWUKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KQor
fQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0
X25lcSkKK25vSW5saW5lKGFzc2VydF90aHJvd3MpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28oKSB7CisgICAgICAgIGxldCBmb28g
PSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBk
ZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1h
a2VGb28pCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbygpCisgICAgfQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltq
XQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2Jq
ZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5
VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28yKCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRl
IGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtl
Rm9vMikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMigpCisgICAgfQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltq
XQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2Jq
ZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5l
KHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5
RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0IGZv
byA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoK
KyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMykKKworICAg
IGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9
IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJi
dWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28p
KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1
bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vNCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRf
ZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmln
dXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28u
Zm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxz
ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9v
CisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUw
KQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9
IG1ha2VGb280KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09
IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAg
YXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAg
IGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKwor
ZnVuY3Rpb24gdGVzdERlbGV0ZUluZGV4KCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb281KCkgewor
ICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJh
ciA9IDIKKyAgICAgICAgZm9vWzBdID0gMjMKKyAgICAgICAgZm9vWzFdID0gMjUKKyAgICAgICAg
YXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRl
IGZvb1sxXSwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZv
bworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNSkKKworICAgIGFyciA9IG5ldyBBcnJheSg1
MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0g
PSBtYWtlRm9vNSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qu
a2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAg
ICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBhc3NlcnRf
ZXEoZm9vWzBdLCAyMykKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgdW5kZWZpbmVkKQorICAg
ICAgICBmb29bMV0gPSAxCisgICAgICAgIGFzc2VydF9lcShmb29bMV0sIDEpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdERlbGV0ZUluZGV4KQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxC
eVZhbChpKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7
fQorICAgICAgICBmb29bImJheiIraV0gPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAg
IGRlbGV0ZSBmb29bImJheiIraV0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lu
bGluZShtYWtlRm9vNikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0
IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAg
fQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZv
byA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3Nl
cnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoi
K2kgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcg
PT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1
ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisKKyAgICB9
Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCkKKworZnVuY3Rpb24gdGVzdEJp
Z2ludERlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb283KCkgeworICAgICAgICBs
ZXQgZm9vID0ge30KKyAgICAgICAgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTBuXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1sx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbl0KKyAgICAgICAgcmV0dXJu
IGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNykKKworICAgIGFyciA9IG5ldyBBcnJh
eSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vNygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFy
ID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisg
ICAgICAgIGFzc2VydCghKDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBu
IGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09
IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWci
ICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30K
K25vSW5saW5lKHRlc3RCaWdpbnREZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdFN5bWJvbERl
bGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0IHN5bWJvbCA9IFN5bWJvbCgnZm9vJyk7CisKKyAgICBm
dW5jdGlvbiBtYWtlRm9vOCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1tz
eW1ib2xdID0gMQorICAgICAgICBhc3NlcnQoIShTeW1ib2woJ2ZvbycpIGluIGZvbykpCisgICAg
ICAgIGFzc2VydChzeW1ib2wgaW4gZm9vKQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBk
ZWxldGUgZm9vW3N5bWJvbF0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGlu
ZShtYWtlRm9vOCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vOCgpCisgICAgfQor
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9
IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRf
ZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKHN5bWJvbCBp
biBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAx
KQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiAr
IGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citu
b0lubGluZSh0ZXN0U3ltYm9sRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RPYmpEZWxldGVC
eVZhbCgpIHsKKyAgICBjb25zdCBzeW1ib2wgPSB7IGk6ICJmb28iIH07CisKKyAgICBmdW5jdGlv
biBtYWtlRm9vOSgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1tzeW1ib2xd
ID0gMQorICAgICAgICBhc3NlcnQoc3ltYm9sIGluIGZvbykKKyAgICAgICAgYXNzZXJ0KCEoeyBp
OiAiZm9vIiB9IGluIGZvbykpCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBm
b29bc3ltYm9sXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b285KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb285KCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pd
CisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmpl
Y3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5l
KHRlc3RPYmpEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdFN0cmljdCgpIHsKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vMTAoKSB7CisgICAgICAgIGxldCBmb28g
PSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBh
c3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUg
Zm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9v
YmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZh
bHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBmb28u
Zm9vYmFyKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVy
biBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzEwKQorCisgICAgYXJyID0gbmV3IEFy
cmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IG1ha2VGb28xMCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28u
YmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisg
ICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMwor
ICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U3RyaWN0KQorCitmdW5jdGlvbiB0
ZXN0T3ZlcnJpZGUoKSB7CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IGZ1bmN0aW9uKCkgeyB9Cisg
ICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJvcGVydHkoYXJyW2pdKSwgdHJ1ZSkK
KyAgICAgICAgZGVsZXRlIGFycltqXS5sZW5ndGgKKyAgICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNP
d25MZW5ndGhQcm9wZXJ0eShhcnJbal0pLCBmYWxzZSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAg
ICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9v
LmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZv
b1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
fQorfQorbm9JbmxpbmUodGVzdE92ZXJyaWRlKQorCitmdW5jdGlvbiB0ZXN0Tm9uT2JqZWN0KCkg
eworICAgIGZ1bmN0aW9uIGRlbGV0ZUl0KGZvbykgeworICAgICAgICBhc3NlcnQoZGVsZXRlIGZv
by5iYXopCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUoZGVsZXRlSXQp
CisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0geyBiYXo6IGogfQorICAgIH0KKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoImJheiIgaW4gZm9vKQorICAgICAgICBkZWxldGVJdChmb28pCisgICAg
ICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorCisgICAgYXNzZXJ0KGRlbGV0ZUl0
KCJiYXoiKSA9PSAiYmF6IikKKyAgICBkZWxldGVJdChTeW1ib2woImhpIikpCit9Citub0lubGlu
ZSh0ZXN0Tm9uT2JqZWN0KQorCitmdW5jdGlvbiB0ZXN0Tm9uT2JqZWN0U3RyaWN0KCkgeworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIGRlbGV0ZUl0KGZvbykgeworICAgICAgICBh
c3NlcnQoZGVsZXRlIGZvb1siYmF6Il0pCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUoZGVsZXRlSXQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0geyBiYXo6IGogfQor
ICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25z
dCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoImJheiIgaW4gZm9vKQorICAgICAgICBk
ZWxldGVJdChmb28pCisgICAgICAgIGRlbGV0ZUl0KDUpCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisgICAgfQorCisgICAgYXNzZXJ0KGRlbGV0ZUl0KCJiYXoiKSA9PSAiYmF6IikK
KyAgICBkZWxldGVJdChTeW1ib2woImhpIikpCisKKyAgICBsZXQgZm9vID0ge30KKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnYmF6JywgeworICAgICAgdmFsdWU6IDQyLAorICAgICAg
Y29uZmlndXJhYmxlOiBmYWxzZQorICAgIH0pOworICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVs
ZXRlSXQoZm9vKSkKK30KK25vSW5saW5lKHRlc3ROb25PYmplY3RTdHJpY3QpCisKK2Z1bmN0aW9u
IHRlc3RFeGNlcHRpb25VbndpbmQoKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rp
b24gbXV0YXRlVGhlbShhLGIsYyxkLGUsZixnLGgsaSkgeworICAgICAgICBnLmkgPSA0MgorICAg
IH0KKyAgICBub0lubGluZShtdXRhdGVUaGVtKQorCisgICAgZnVuY3Rpb24gZGVsZXRlSXQoZm9v
KSB7CisgICAgICAgIGxldCBjYXVnaHQgPSBmYWxzZQorCisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICB2YXIgYSA9IHsgaTogMSB9CisgICAgICAgICAgICB2YXIgdiA9IHsgaTogMTAgfQorICAg
ICAgICAgICAgdmFyIGIgPSB7IGk6IDEwMCB9CisgICAgICAgICAgICB2YXIgYyA9IHsgaTogMTAw
MCB9CisgICAgICAgICAgICB2YXIgZCA9IHsgaTogMTAwMDAgfQorICAgICAgICAgICAgdmFyIGUg
PSB7IGk6IDEwMDAwMCB9CisgICAgICAgICAgICB2YXIgZiA9IHsgaTogMTAwMDAwMCB9CisgICAg
ICAgICAgICB2YXIgZyA9IHsgaTogMTAwMDAwMDAgfQorICAgICAgICAgICAgdmFyIGggPSB7IGk6
IDEwMDAwMDAwMCB9CisgICAgICAgICAgICB2YXIgaSA9IHsgaTogMTAwMDAwMDAwMCB9CisKKyAg
ICAgICAgICAgIG11dGF0ZVRoZW0oYSxiLGMsZCxlLGYsZyxoLGkpCisKKyAgICAgICAgICAgIGRl
bGV0ZSBmb29bImJheiJdCisKKyAgICAgICAgICAgIGEgPSBiID0gYyA9IGQgPSBlID0gZiA9IGcg
PSBoID0gaQorICAgICAgICB9IGNhdGNoIHsKKyAgICAgICAgICAgIGFzc2VydF9lcShhLmksIDEp
CisgICAgICAgICAgICBhc3NlcnRfZXEoaS5pLCAxMDAwMDAwMDAwKQorICAgICAgICAgICAgYXNz
ZXJ0X2VxKGcuaSwgNDIpCisgICAgICAgICAgICBjYXVnaHQgPSB0cnVlCisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGNhdWdodAorICAgIH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgMTAwMDAwOyArK2opIHsKKyAgICAgICAgYXNzZXJ0KCFkZWxl
dGVJdCh7IGosIGJhejogNSB9KSkKKyAgICB9CisKKyAgICBsZXQgZm9vID0ge30KKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnYmF6JywgeworICAgICAgdmFsdWU6IDQyLAorICAgICAg
Y29uZmlndXJhYmxlOiBmYWxzZQorICAgIH0pOworCisgICAgYXNzZXJ0KGRlbGV0ZUl0KGZvbykp
Cit9Citub0lubGluZSh0ZXN0RXhjZXB0aW9uVW53aW5kKQorCisvL2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisvLyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisvLyAgICB0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQorLy8gICAgdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRl
QnlJZCgpCisvLyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorLy8gICAgdGVzdERl
bGV0ZUluZGV4KCkKKy8vICAgIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpCisvLyAgICB0ZXN0
QmlnaW50RGVsZXRlQnlWYWwoKQorLy8gICAgdGVzdFN5bWJvbERlbGV0ZUJ5VmFsKCkKKy8vICAg
IHRlc3RTdHJpY3QoKQorLy8gICAgdGVzdE92ZXJyaWRlKCkKKy8vICAgIHRlc3ROb25PYmplY3Qo
KQorLy8gICAgdGVzdE5vbk9iamVjdFN0cmljdCgpCisvL30KKwordGVzdEV4Y2VwdGlvblVud2lu
ZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391350</attachid>
            <date>2020-02-20 15:54:12 -0800</date>
            <delta_ts>2020-02-20 17:33:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200220155411.patch</filename>
            <type>text/plain</type>
            <size>222265</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NDUzNDdkMTM3NWUxY2RmMzgwMWE4YjY4N2VlZDZhNzdjZGU3ZjY4Li4yOTZhY2UzMjY3N2MzNzY5
ZWRkZGY4NjUyZmMzZDhkYjhiODYzZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTE5ICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBDb21wdXRlZCBQ
cm9wZXJ0aWVzIHdpdGggaW5jcmVtZW50IHNvbWV0aW1lcyBwcm9kdWNlcyBpbmNvcnJlY3QgcmVz
dWx0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBhNWNiYTJlMDUwY2M2OWY1ZDdkYzhhZmM4YmZjNzUzYmUwZWEzYTI5Li5kYzI0
YWE2MjRmMWQ3Y2ZjNzEwYWI0YTZiY2U3YTFjOWQzNWE3N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4K
KworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3BlY3RydW0uaDoKKyAgICAg
ICAgKFdURjo6U3BlY3RydW06OmFkZCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpnZXQgY29u
c3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YnVpbGRMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdURjo6U3BlY3RydW06OmNsZWFyKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OnJlbW92ZUlm
KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6U3BlY3RydW06OmVuZCk6IERlbGV0ZWQuCisKIDIwMjAtMDItMjAgIEppZXdlbiBUYW4gIDxq
aWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIFJlcGxhY2UgRGV2aWNl
SWRlbnRpdHkuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM4OTliNjU1NWM0Yzc1NTg2ZDZhMzFm
MWNiYmI1ZTA0ODc5MzkzYi4uNDk2YzBhM2EzNjhmNTQ0YjBiNjkyMzk1NjU4ZTFjOWU2OTQ3NjQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1
ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVs
ZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZURlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9k
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9i
alByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAg
ICAoLVtXZWJTY3JpcHRPYmplY3QgcmVtb3ZlV2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6
ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDIwLTAyLTIwICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XSBGaXggcmFjZSBpbiBUZXh0Q29tYmluZXJHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDE1ODQwMGFk
NjNjMmYwNzJkZmNlNjkyYmQwZWIyYTM4NGEwYTlmYS4uZTNhYjhlNmQ1YjAwYzIxZDJiYzk1MTIw
ZjJhODk1N2ZlYzliMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0xNCAg
SnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5s
aW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KToKKwogMjAyMC0wMi0yMCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtDYWNoZSBz
aG91bGQgdXNlIDRLQiB0aHJlc2hvbGQgZm9yIG1tYXAtZWQgZmlsZXMgaW5zdGVhZCBvZiAxNktC
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmI2ZDY3YzQzYTUyZmY5OTcwNmViZTQ4
N2YxNmFjNmMyMDY5N2Q2ZS4uMjg2OTM1NDZiNTRkNjVhYWU4NTZlMDA3MGNlMWY2NzZhNzRlODFh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAy
LTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtMZWdhY3lXZWJLaXRdIE92ZXJyaWRlIEVk
aXRvckNsaWVudDo6c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMDM0
YjM1N2MwNzM4ZTM0OTEyNTg4NThkNzA2OTg5ZmVmY2I0ODMzZC4uOTJjYTkyNDc3OTYyYmMwNGM3
YThlYjg2YTFmNDE1ZDJiMTg3ZjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
IAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQpOwogCiAgICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCBjZDUxMWJm
ZDI4NGEwMTMyNTJhNjQwNWE2NzA3YWFkMTM3YTFiY2NiLi40YmVjMzNhNzJkYzI4NDc3YTYxMzU2
ZmRiOTIwYTQ3Njg2MmVkNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMzczLDcgKzM3Myw3IEBAIGJvb2wg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1ib29sIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDE4
LDcgKzQxOCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgpAQCAtNDI2LDcgKzQyNiw4IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKLSAg
ICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkp
OworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CmluZGV4IGY3ZjlkYWIzZjI4YWRjMGVhYmIyYmRlOGIyNTA2NzcyYWQyNWZmY2UuLjlkZjg3OGU1
ODhmYTJhZWYwNjIyYWM2OTU4NzgxYWJlNjdhMzdlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC00NzksNyArNDc5LDggQEAgYm9vbCBKU09iamVjdERl
bGV0ZVByb3BlcnR5Rm9yS2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwg
SlNWYWx1ZVIKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhj
ZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsK
ICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC01MzQsNyArNTM1LDggQEAgYm9vbCBKU09iamVjdERlbGV0
ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdS
ZWYgcHIKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKIAotICAgIGJv
b2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZ2bSkpOworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLT5pZGVudGlmaWVyKCZ2bSksIHNsb3QpOwogICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MWU0MjdjMzBjNTExNjNlZGQ5ZjEw
NmQ0MmY5NWUwOWQwMmJlOWM0Li43NTU2ZTk1NmZjNjMyZjdlMmI5ZDBlMWFkYmY3Y2E4MWY4ZThm
MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MTUsNiArODE1LDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50
aW1lL0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCiAgICAg
cnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAorICAgIHJ1bnRpbWUvRGVsZXRlUHJv
cGVydHlTbG90LmgKICAgICBydW50aW1lL0RpcmVjdEFyZ3VtZW50c09mZnNldC5oCiAgICAgcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9EaXNhbGxvd1Njb3BlLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWY0MmMyYWU4ZmU1OTJiZjZkNjgyODUz
ODk3NmQwY2Y2ZGE2ZGIxZi4uZmI3NDU2NTE3ZjhmNzRjNjlmMWM5ZDViZGMyMDJjNGY2ZTQ0MTg1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzgsNiArMTE3OCw3IEBACiAJ
CTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDEx
QUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVB
MjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8q
IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVs
ZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzNFMzc5
OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1
NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJF
OTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250
ZXh0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1
MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zOTcxLDYgKzM5NzIsNyBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0
NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MzRCNjU1NDIz
RjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5n
dGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5n
dGguaDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJl
bmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxv
b3BTdHJlbmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01v
ZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA4NCw2ICs3MDg2LDcgQEAK
IAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKIAkJCQkx
Njk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8s
CisJCQkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICov
LAogCQkJCTBGRTA1MDBGMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwICov
LAogCQkJCTBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuaCAqLywK
IAkJCQkwRkUwNTAwRDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNw
cCAqLywKQEAgLTkyMDksNiArOTIxMiw3IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3
IC8qIERlZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRD
NDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAv
KiBEZXN0cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0E0MjNFMTdBMEJCRkQw
MEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTAz
MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNjYyLDcgKzEwNjY2LDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0
ZXMgPSB7Ci0JCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOwogCQkJ
CURlZmF1bHRCdWlsZFN5c3RlbVR5cGVGb3JXb3Jrc3BhY2UgPSBPcmlnaW5hbDsKIAkJCQlMYXN0
U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDEwMDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMmFm
NDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjliYTk3NS4uOGVkZTI4NDhkMmM5YWY5ZWYz
OGI2NGE2NDM5OWZiMTIxYjllNjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2FzZSBJbk1p
c3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNz
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5n
TGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKQEAgLTEy
Myw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3ND
YXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAor
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKKyAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09IG5l
d1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAg
ICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVs
b3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdTdHJ1Y3R1
cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisgICAgICAg
IGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsg
fSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2
ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgp
IGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEg
YnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRpZmll
ci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFj
ZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5
IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBjb25zdAog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlv
bjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAg
ICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAg
ICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpu
ZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0
LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoK
ICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgor
ICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAg
ICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAt
NDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9y
PEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBDdXN0b21B
Y2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAg
Y2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoKICAgICBj
YXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBj
YXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5UHJv
dG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJh
bnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50
ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0dXJlKQog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAo
bV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6
OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogCiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobV9zdHJ1
Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgsNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAg
ICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChz
cGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkg
ewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAgICAgdmFsdWVSZWdz
LApAQCAtMTg5Niw2ICsxOTMzLDcxIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
bG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhc2UgRGVs
ZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1Yklu
Zm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VS
ZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgICAgICBhbGxv
Y2F0b3IubG9jayhiYXNlR1BSKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7
CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+aXNQcm9w
ZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gdmFs
dWVSZWdzLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gc2NyYXRjaEdQUik7Cisg
ICAgICAgIEFTU0VSVCh2YWx1ZVJlZ3MuZ3ByKCkgIT0gc2NyYXRjaEdQUik7CisKKyAgICAgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9
CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmco
aml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNw
YWNlKTsKKworICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIo
bWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2Fz
ZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAg
ICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5LgorICAgICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAg
IC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5jZSBv
dXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1Y3R1
cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdIZWFk
ZXI7CisKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CisKKyAg
ICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSkgeworICAgICAg
ICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdzLnBh
eWxvYWRHUFIoKSwgYmFzZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZzZXQo
bV9vZmZzZXQpKSB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAg
ICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAg
ICAgICAgICAgICAgICAgICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAgICBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAgICBvZmZzZXRJbklu
bGluZVN0b3JhZ2UobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5
KG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisKKyAgICAgICAgdWlu
dDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3RydWN0dXJl
KCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAg
ICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVn
cy5wYXlsb2FkR1BSKCkpOworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0
ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3Vy
YWJsZTogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGZh
bHNlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlzczogeworICAgICAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3Mu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCmluZGV4IDc5ZDMxMDE1NWU5M2E1NDUzZDI4NjFjNDMyMjdiYTNiYWMxOWYy
NzcuLjEwOGZlZjNiMzMwMTJjZjRlN2RiMjdlMjBhNjI2MDIwNzg1ZDIxNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUsNiArODUsOSBAQCBw
dWJsaWM6CiAgICAgZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExvYWQsCiAg
ICAgICAgIFRyYW5zaXRpb24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlLAorICAgICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBsYWNlLAogICAgICAg
ICBNaXNzLAogICAgICAgICBHZXRHZXR0ZXIsCkBAIC0xNDUsOSArMTQ4LDExIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2Vs
bCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCks
IHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gPSBudWxscHRyKTsKIAotICAg
IC8vIFRoaXMgY3JlYXRlIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBmb3IgdHJhbnNpdGlvbnMuCi0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAor
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0x
NTcsNyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25z
dAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQorICAgICAgICBpZiAo
bV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAgICAgICAgICAgIHJl
dHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpOwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1
cmUuZ2V0KCk7CiAgICAgfQpAQCAtMTY1LDcgKzE3MCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gVHJhbnNpdGlvbik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBt
X3R5cGUgPT0gRGVsZXRlKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHAKaW5kZXggMTMyNDA5YzBhNDUxMGJkZmE4ZWNlMzNiNzQzNDcxNjAyZDdiMGU3
OS4uYjE2NmMzMGMxOGE1MjNhNzYyNWYzOWFmNmI3ODk1MDY3YWE1ZjBjZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBA
IC03OTUsNiArNzk1LDE1IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBB
Y2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGUpCiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpUcmFuc2l0
aW9uOgogICAgICAgICBvdXQucHJpbnQoIlRyYW5zaXRpb24iKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZSIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1
cmFibGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlTm9uQ29uZmlndXJhYmxlIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3M6CisgICAgICAgIG91
dC5wcmludCgiRGVsZXRlTWlzcyIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBY2Nlc3ND
YXNlOjpSZXBsYWNlOgogICAgICAgICBvdXQucHJpbnQoIlJlcGxhY2UiKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKaW5kZXggNjE3ODczN2Y5ZjhhOWNkMGI2ZGRhZDU3ZjFjZjEyZWZlNGZjYTcw
NS4uOTZhMWJhZWNiZTRjYmJiNzZkYmRlZGE4MDU2NWEyYzU5ODY1NTIyYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBA
IC0yNzYsNiArMjc2LDEyIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrKQogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAgICAgICAg
cmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpEZWxldGVCeUlEOgorICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERl
bEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpE
ZWxldGVCeVZhbDoKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtp
bmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIGRlcmVm
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oCmluZGV4IGRkY2U4NWVjMDI1NTU3NmM5ZTM0NTFmNjQ3MzZkMTJjMzg5NDI4MDMuLmI1
NzViZGQyMTYxOWMyZGZlNGYxODJmYWVkOTBmMjY4ZTllMjYxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01NSw3ICs1
NSw5IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAgR2V0QnlWYWwsCiAg
ICAgUHV0LAogICAgIEluLAotICAgIEluc3RhbmNlT2YKKyAgICBJbnN0YW5jZU9mLAorICAgIERl
bGV0ZUJ5SUQsCisgICAgRGVsZXRlQnlWYWwKIH07CiAKIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDog
aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmNwcAppbmRleCAyNmUyODI5MzllOWFjYTg4NjVjMjIxNzczYzJhNDFlMDI4MDk0ZGRhLi40
OGI1Yjg2ZmE0YjllODY1ZWE0OGRjOTlhNDkzYmQ5NDhkMDc0ZjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC0xMjksMTQgKzEy
OSwxNCBAQCBib29sIERlYnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBEZWJ1Z2dlclNjb3Bl
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERlYnVnZ2VyU2NvcGUqPihjZWxsKTsKICAg
ICBBU1NFUlQoc2NvcGUtPmlzVmFsaWQoKSk7CiAgICAgaWYgKCFzY29wZS0+aXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1Njb3Bl
OjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBEZWJ1Z2dl
clNjb3BlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJTY29wZS5oCmluZGV4IGZmNGNlMWIxZGE0YjU3OTBkZThhZDk4OGE3MWY2MDJjZGYyNjE2
NzQuLjQzMjdjMWYwMmM2OTI3ODQ1MDhlMGE5YTFhMjE0OTc3NWVkZDgwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtNTEsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3ZmZhMzhlNjZkMmUwOGQ3NDU5ODliZDYxMjlkYmVh
YTBmYTBkMDdiLi5mYjFhYTUyMGQyNDUzODI2MDQ3MjEwYjM4MzI4OWZhYzNjNWY1NmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2MTgsNiAr
MTYxOCwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIERlbGV0ZUJ5VmFsOiB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkt
PnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBEZWxldGVCeUlkOiB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIEJ5dGVDb2RlUGFyc2Vy
IGJhc2VkIG9uIHJlYWRpbmcgdGhlCkBAIC0yNTE4LDggKzI1MzAsNiBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0
b3I6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6Ci0g
ICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoK
ICAgICAgICAgY2FzZSBJc0VtcHR5OgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlM2UyMDhkMmRh
MWNkNzM5YmZhY2M4YzM0YzU0OTdjYzU2MmRiOTM2Li4zODcxNTkxNzg5MDMxMjBhNjEyNjQ1ZTRh
MjM0MzUxM2JhNWRiZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcApAQCAtMjQ2LDYgKzI0Niw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRz
V2l0aFRoaXMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlW
YWxzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBs
aW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRzLCBsaW5rQnVm
ZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgbGlua0J1ZmZlcik7
CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBsaW5rQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVmZmVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ4ODA4NzRjMjg1YWI3
ZDQ0N2ViODkzYTZlOGI0YmJmMDEwNzMxZDQuLjJmYjZhZDhmNjJmOTVhMjZlNmNkYjgyNmFhNmQx
Y2Q2N2YxOTQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKQEAgLTE5MSw3ICsxOTEsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9wdXRCeUlk
cy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xv
d1BhdGgpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFkZERlbEJ5SWQoY29uc3QgSklURGVs
QnlJZEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCisgICAgewor
ICAgICAgICBtX2RlbEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlJZEdl
bmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKworICAgIHZvaWQgYWRkRGVsQnlWYWwo
Y29uc3QgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQ
YXRoKQorICAgIHsKKyAgICAgICAgbV9kZWxCeVZhbHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBl
cjxKSVREZWxCeVZhbEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwogICAgIHZv
aWQgYWRkSW5zdGFuY2VPZihjb25zdCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBnZW4sIFNsb3dQ
YXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIG1faW5zdGFuY2VPZnMuYXBw
ZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPihnZW4sIHNsb3dQ
YXRoKSk7CkBAIC0zNDgsNiArMzU4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlJZHNXaXRo
VGhpczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5VmFsR2VuZXJhdG9y
PiwgND4gbV9nZXRCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRQdXRC
eUlkR2VuZXJhdG9yPiwgND4gbV9wdXRCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFw
cGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5SWRzOworICAgIFZlY3RvcjxJbmxp
bmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5VmFsczsKICAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5C
eUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanND
YWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggNjQyYjE2MzU2ZjkwZTljMzg2MDJlYmM1N2ZkOWUwNGEwZjQ1YjUyOC4uNjdlNmRi
NjlmYjIzMzcyOTU4MjljZDIzZmZiZmNiYTgwY2E3MmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExNDcsMzkgKzExNDcsODQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkKIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHsKLSAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDEoKSk7CiAKLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIGF1dG8qIHByb3BlcnR5ID0gaWRlbnRp
ZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIHZh
bHVlLnVzZSgpOworICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVz
ZSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJl
Z3MpKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeUlkLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5v
cmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29y
ZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2Rl
T3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJz
ID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgSklURGVs
QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdEdQUiwg
c2NyYXRjaEdQUik7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIHByb3BlcnR5
KTsKKworICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAgdW5ibGVzc2VkQm9v
bGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIHsKLSAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAg
ICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDIoKSk7CiAKLSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1
ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlSZWdz
ID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGtleS5ncHIoKSk7CisgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAKLSAgICBiYXNlLnVzZSgpOwotICAgIGtleS51c2UoKTsKKyAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisgICAgaWYgKG5vZGUtPmNoaWxkMigp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CiAKLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWwsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBrZXlSZWdzKTsKLSAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7CiAKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICBKSVREZWxCeVZhbEdlbmVy
YXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIGtleVJlZ3MsIHJlc3VsdEdQUiwg
c2NyYXRjaEdQUik7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBrZXlSZWdz
KTsKKworICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0ZDM0MjdiYzgyZThjOWIyNDdhYzg3MWEw
MjAwMDFiYjIzODI5ZjI2Li5iODhmM2RhNWMwMGFlOTNiNzMxODRiMzcwYjM0OGE2ZGQ3MmQ0MTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC01MTQ0LDIwICs1MTQ0LDE2OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+
YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
RGVsQnlLaW5kIGtpbmQsIHR5cGVuYW1lIFN1YnNjcmlwdEtpbmQ+CisgICAgdm9pZCBjb21waWxl
RGVsQnkoTFZhbHVlIGJhc2UsIFN1YnNjcmlwdEtpbmQgc3Vic2NyaXB0VmFsdWUpCisgICAgewor
ICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQ7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgeworICAgICAgICAgICAgcGF0Y2hwb2ludCA9
IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50
KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGJhc2UsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShzdWJzY3JpcHRWYWx1ZSwgVmFsdWVSZXA6OlNv
bWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgfQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVy
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9p
bnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CisgICAgICAgICAgICBwcmVwYXJl
UGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0
YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OworCisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUlu
ZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CisgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKyAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgICAg
ICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworCisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkp
OworCisgICAgICAgICAgICAgICAgY29uc3RleHByIGF1dG8gb3B0aW1pemF0aW9uRnVuY3Rpb24g
PSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVs
QnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICAg
ICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9
IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtp
bmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUpOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHBhcmFtc1sy
XS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocGFyYW1zLmdwU2NyYXRj
aCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVn
cyhwYXJhbXNbMl0uZ3ByKCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0g
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2lu
ZDo6Tm9ybWFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5
SWRHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuR1BSLCBwYXJhbXMuZ3BTY3JhdGNo
KDApKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
c2NyaXB0LCByZXR1cm5HUFIsIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAgICAgICAgICAgICAgIHBhcmFtcy5h
ZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMu
bGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
c2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4s
IHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFz
aygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6
ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBz
ZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NChwYXRjaHBvaW50KSk7CisgICAgfQorCiAgICAgdm9p
ZCBjb21waWxlRGVsZXRlQnlJZCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpXTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxs
KEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBi
YXNlLCBtX291dC5jb25zdEludFB0cih1aWQpKSkpOworICAgICAgICBMVmFsdWUgYmFzZTsKKwor
ICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICAgICAgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVW50eXBl
ZFVzZTogeworICAgICAgICAgICAgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2lu
ZDo6Tm9ybWFsPihiYXNlLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVy
TnVtYmVyKCldKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeVZhbCgpCiAgICAg
ewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBzdWJzY3JpcHQg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0
Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBzdWJzY3JpcHQpKSk7CisgICAgICAgIExWYWx1ZSBiYXNl
OworICAgICAgICBMVmFsdWUgc3Vic2NyaXB0OworCisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAg
ICBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBiYXNl
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBo
LCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkpIHsKKyAgICAg
ICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBzdWJzY3JpcHQgPSBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVz
ZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29tcGls
ZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsQnlWYWw+KGJhc2UsIHN1YnNjcmlwdCk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNT
dGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRlNDQ0YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkw
NDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1h
Y3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRo
SnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRT
ZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBcCisgICAgbWFjcm8oRGVsQnlS
ZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKIAog
Y2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
MDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2OWNkMWI3ODc0NGU4Ni4uYzZlNjFiODliZjlhMWEx
OTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAg
ICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwog
ICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9k
ZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01
ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwp
CisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfdmFsKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVy
dHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3
NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXpl
SW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJ
bmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFu
Y2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3
NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1
ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDAsNyAr
NTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93
aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
YnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiop
OwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZl
Y3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklU
SW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2Vu
ZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+
IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9p
bnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9j
YWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYgKzkzOCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAg
ICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNp
Z25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxC
eVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRf
TUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9N
QVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEu
LmIwYWQ2M2JjNTExYzI3NTU0Mzc3MTIwYTQ4ZmZmMzYyYmQxNTVmMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBA
IC0xNjIsNiArMTYyLDY4IEBAIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVy
YXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25T
dHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sKKyAgICBt
X3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKKyAgICBBU1NFUlQoYmFz
ZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFz
ZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3Bl
cnR5LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsKKyNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRh
Z0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CisjZW5k
aWYKKyAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOworfQorCit2
b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVy
JiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1w
ID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwor
dm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCisgICAgTGlua0J1ZmZlciYgZmFz
dFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQoreworICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0
KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKK30KKwor
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJz
KQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CisgICAg
QVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdCk7CisgICAgbV9zdHViSW5mby0+YmFz
ZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlH
UFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0Owor
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwor
ICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlm
CisgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKK30KKwordm9p
ZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBq
aXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0g
aml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9p
ZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0
aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7
CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBh
dGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCiBKSVRJ
bkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogcHJv
cGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRl
eCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li4yNmU3MDBmYmI3YWQx
ODNiZTFhY2JhNzNmMzdmNmZiNDJmZWZjZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNDIsNiArMTQyLDU2IEBA
IHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitjbGFzcyBKSVREZWxCeVZh
bEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcg
QmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERlbEJ5VmFs
R2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKKyAgICAgICAgQ29k
ZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xv
d1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1w
Lm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVmZmVy
JiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CisK
KyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0ZToK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKK2NsYXNzIEpJVERlbEJ5SWRHZW5l
cmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJhc2Ug
PSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVREZWxCeUlkR2VuZXJh
dG9yKCkgeyB9CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sq
LCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNj
cmF0Y2gpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Cisg
ICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisgICAgdm9pZCBm
aW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVm
ZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1f
c3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7
Cit9OworCiBjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRv
ciB7CiBwdWJsaWM6CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBlMzYyNjczMjVjNzRhZTIyZjg2
MThlYTllMmFkMDAyZTQ4ZGM2MzM0Li43YmRmMWY3MzJiZjRlMDVkOWI4NTY5NmVmNDY4NDdmM2I1
NjEwNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
QEAgLTIxNDIsNyArMjE0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9i
YWxPYmplY3QsIGluZGV4LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3du
UHJvcGVydHkpKSk7CiB9CiAgICAgCi1zdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUg
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBA
IC0yMTUwLDMxICsyMTUwLDUxIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICghYmFzZU9iaikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVVpZCh2bSwgdWlkKSk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCB1aWQpLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4gY291bGRE
ZWxldGU7CiB9CiAKLQotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeUlkSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVC
eUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKSwgdWlkKSkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisK
KyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVs
ZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgdWlk
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKwor
ICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGlm
ICghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoc3R1Yklu
Zm8tPmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JO
dWxsKCkpKQorICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgKnN0dWJJ
bmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVs
ZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSksIHVpZCk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJu
IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpOwogfQogCi1zdGF0aWMgYm9vbCBkZWxldGVCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZt
LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5KQorc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5KQogewog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE5MCw3ICsy
MjEwLDcgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgIGVsc2UgewogICAgICAgICBJZGVu
dGlmaWVyIHByb3BlcnR5ID0ga2V5LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBjb3VsZERlbGV0
ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5LCBzbG90KTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkpCkBAIC0yMTk4LDIwICsyMjE4LDQyIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYK
ICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRL
ZXkpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3Jp
cHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEtleSkpKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsK
KworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpOworCisgICAgYm9vbCByZXN1bHQgPSBk
ZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwg
c3Vic2NyaXB0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlm
aWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgY29u
c3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKKworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkgfHwgIXBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmcodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAg
ICAgICAgICAgICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3Qs
IGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlL
aW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEtleSkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJl
dHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSk7CisgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjIxMGM1YTA3MzQx
OTY4M2Q2MGVhOGM0OGNkNDNlZWZmODJhMzAwYy4uNjAwZmNhMjlkYzIwMzg1ZGM1MDIyMjgwMjU0
MTEyY2FjMzFkNjg0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKQEAgLTI1MSwxMCArMjUxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlCiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFz
SW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7Ci1zaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3NpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3Bl
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3Bl
Q2VsbCwgSlNPYmplY3QqIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldFBOYW1lcyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lO
VEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAppbmRleCBhYmY1MmY3MTNlOGFhMGFmYjVlODA1YzdjZjNmMWQzODgzNzFjMmY2Li4yYmEw
ZmE2ODQ4YmNlODI5YWNkNjQxOTA1ZjA1ZjRiZDU0ZGNiZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzg3LDkgKzM4NywzOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cERlbEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIGludCBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJh
c2UpOworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZWdUMCwgcmVnVDIpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVs
QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhy
ZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdU
MCkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmltcGwoKTsKKworICAgIEpJVERlbEJ5
SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgrK107CisKKyAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpT
UmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
cmVnVDAsIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBy
ZWdUMCwgdWlkKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtMzk4LDkgKzQyOCw0MiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lz
dGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4o
CisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVnVDAsIHJlZ1QyKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2RlbEJ5VmFscy5hcHBlbmQo
Z2VuKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cit9CisKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7Cisg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9
IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7
CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZh
bEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeVZhbEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgcmVnVDAsIHJlZ1QxKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKworICAgIGJveEJvb2xlYW4o
cmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4
IDVjYzdkZjljNTQxODljN2NiM2Q0MDkxYjVjNGY0YzhiZGFlZWYxNGMuLmI2NjlkZDhiN2FkMjZk
M2Y3N2Q5Njg2ZGU2MDgzNDM0ZjM2ZGJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTIzLDcgKzEyMyw5IEBA
IHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQoYmFz
ZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRK
U1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9j
b2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBA
IC0xMzMsOSArMTM1LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5
LCByZWdUMywgcmVnVDIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxK
U1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qz
LCByZWdUMikpOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9Cit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpIHsgfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkxODIwNDE1NTRiZGM3NmMxOTFjYjEzODVkMTNh
OWM4MWZmZDQ1ZWIuLmJlNzUwMWVmMjJjMTgzM2U0ZmI3ZjA2YTlhYmUzYWFiMDc2ZWRjNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZt
LCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBj
b25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAgICAgICAg
ICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29kZUJsb2Nr
LCBpZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVT
ZXR0ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewpA
QCAtNzM0LDYgKzczNCw3MiBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwog
fQogCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBE
ZWxCeUtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCk7CisKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5p
c0NlbGwoKSB8fCAhb2xkU3RydWN0dXJlIHx8ICFvbGRTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkgfHwg
IW9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxl
RGVsZXRlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKworICAgICAgICBpZiAoc2xvdC5p
c0RlbGV0ZUhpdCgpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQ7Cisg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQpOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1
Y3R1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKyAgICAgICAg
ICAgIGlmICghbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgfHwg
bmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdPZmZzZXQgPT0gc2xvdC5jYWNoZWRP
ZmZzZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkg
PT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzUHJv
cGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0
dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG5ld09m
ZnNldCkpOworICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSh2
bSwgY29kZUJsb2NrLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIG5ld09mZnNl
dCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICB9IGVsc2UgaWYgKCFjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xvdC5pc05vbmNvbmZp
Z3VyYWJsZSgpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUo
dm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlLCBDYWNoZWFi
bGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwg
eyB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1p
c3MsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNldCwgb2xk
U3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0g
c3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBX
VEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2Rl
KCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJl
LT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaXJl
V2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywg
cmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBP
bkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1
YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50
OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9i
YWxPYmplY3QtPnZtKCkpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVs
QnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJ
ZEdlbmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUluQnlJRCgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LAogICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5MSw2ICsxNDU3LDE1IEBAIHZvaWQgcmVzZXRQdXRC
eUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7Cisg
ICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIGVsc2UKKyAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwog
c3RhdGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxl
SnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaAppbmRleCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBlOGE5OTQ0YmI0Zjlm
ZTM5Li5jMWQ5OTU5YWRhZmQzNjU3NjJlODkxNzlhYjNjMGVlZDY2ZTU4N2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51bSBjbGFzcyBHZXRC
eUtpbmQgewogICAgIERpcmVjdAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtpbmQgeworICAgIE5v
cm1hbCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IFB1dEtpbmQpOwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXBhdGNoSW5CeUlE
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVy
JiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBK
U1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29s
IHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYs
IENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5saW5rRm9yKFZNJiwgQ2FsbExp
bmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnkoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5
SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXREZWxCeShDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeUlE
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJs
b2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyMjU0ZmNjNDI5NjE3Y2U4Mzk3ZDI0
ZTU1MGUxYWNlYzY3YjYxNDQzLi5mYWNhN2JmNGUxNzhkNDI1ZmZiZWZmZTk1NGU4ZjMxZWIwMDIw
NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKQEAgLTkyNSw3ICs5MjUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVs
X2J5X2lkKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWxCeUlkPigpOwogICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
LSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSksIHNsb3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OwogICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9E
ZWxldGVQcm9wZXJ0eUVycm9yKSk7CkBAIC0xMTA4LDcgKzExMDksOCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZp
ZXJJbmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVjZjZmZDA4ZmZkMmJiODhiOWQ1ODdiYWVkMGZm
Ni4uMTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2IwYzE1ZjI2NTg5NzkzOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpD
YWNoZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGlu
ZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKEpTQ2VsbCogaWRlbnRp
ZmllcikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChpZGVudGlmaWVy
KSk7CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggZmU2YzZiN2Q4NGM0N2VkZWUxMWFhYzExZjY0
ODRhNzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNjYmJkMjhkODAzMWRhOGExN2VlMDUzNzIxOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTU5LDcgKzU5
LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBQdXRCeUluZGV4RnVuY3Rpb25Q
dHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9u
UHRyIE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUluZGV4KTsKIAotICAgIHVzaW5nIERlbGV0ZVBy
b3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wg
KCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRS
WShkZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5j
dGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAK
aW5kZXggOTZhMzYzNWU2ODI3MzkzZWU4MzZkODA0Nzc3MjRhMjVkNTQ2YzI2MS4uZjY5OTllNzM0
ODRlMmFiZDg4MTQ1NGYxMTQ4MzEwYzAyZDRmMmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAg
Ym9vbCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmEKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBDbG9uZWRBcmd1
bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQ2xvbmVk
QXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50cyo+KGNlbGwpOwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBib29s
IENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFs
c0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKIH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVu
dCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApp
bmRleCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQwYmEwY2FkMTU3NjA1ZmY1Li4wMGM1MzQ3NTYw
NWE3M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJhOTM1M2U3ZDc1MjFhODc5YmQx
MmQ3NDAwNjkuLjFkZTgyMzk1MDllMGM4ZDdhNTZhMzI0MTRmZmU4YTc0YTliNzhkZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtOTg1LDcgKzk4NSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQog
ICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VP
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIENIRUNLX0VYQ0VQVElPTigpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJv
cGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0
eVNsb3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYWQ2ZjZiNDgwMGVmNTc4NTYxY2FlZGM5ZGRiYmM4MmYyNTMy
ZTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVs
ZXRlUHJvcGVydHlTbG90LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb3Bl
cnR5T2Zmc2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworICAgIAorY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5
cGUgOiB1aW50OF90IHsgVW5jYWNoZWFibGUsIERlbGV0ZUhpdCwgQ29uZmlndXJhYmxlRGVsZXRl
TWlzcywgTm9uY29uZmlndXJhYmxlIH07CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3QoKQorICAg
ICAgICA6IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCisgICAgICAgICwgbV9jYWNoZWFiaWxpdHko
Q2FjaGluZ0FsbG93ZWQpCisgICAgICAgICwgbV90eXBlKFVuY2FjaGVhYmxlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZU1pc3MoKQorICAgIHsKKyAgICAgICAgbV90
eXBlID0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsKKyAgICB9CisKKyAgICB2b2lkIHNldE5vbmNv
bmZpZ3VyYWJsZSgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBOb25jb25maWd1cmFibGU7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRIaXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV90eXBlID0gRGVsZXRlSGl0OworICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKKyAg
ICB9CisKKyAgICBib29sIGlzQ2FjaGVhYmxlRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gaXNDYWNo
ZWFibGUoKSAmJiBtX3R5cGUgIT0gVW5jYWNoZWFibGU7IH0KKyAgICBib29sIGlzRGVsZXRlSGl0
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERlbGV0ZUhpdDsgfQorICAgIGJvb2wgaXNDb25m
aWd1cmFibGVEZWxldGVNaXNzKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENvbmZpZ3VyYWJs
ZURlbGV0ZU1pc3M7IH0KKyAgICBib29sIGlzTm9uY29uZmlndXJhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IE5vbmNvbmZpZ3VyYWJsZTsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICB9
CisKKyAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkKKyAgICB7CisgICAgICAgIG1fY2FjaGVhYmls
aXR5ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgaXND
YWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nQWxsb3dl
ZDsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmlsaXR5VHlw
ZSBtX2NhY2hlYWJpbGl0eTsKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAppbmRleCBmMTgyMWQ1NTZhM2Q0MDQ0OTM2NzVlYWUyNWZhMmU0NjY3M2VjNDNhLi42
ODVjN2FjYmMxMWM2MmQyMzM3N2QzMmM0ZGU5YTIwYjY1ODc4YThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtODcsNyAr
ODcsNyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAot
Ym9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9yQ29uc3RydWN0b3Iq
PihjZWxsKTsKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBp
ZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCkKICAg
ICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6
Om51bGxvcHQpOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yQ29uc3RydWN0b3IuaAppbmRleCA5M2Q1MjcxNDg2ZjY2ZmRlNzUzZTQ5YTQwMTZmMTY4
MzhlOTc1NzIxLi45YTVhNDYzMjFiM2RiYjc2NGMyYTFiNTIxZDkyNjhmOGQxNDM1MzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCkBA
IC00OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
RXJyb3JQcm90b3R5cGUqKTsKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0
ZToKICAgICBFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGZkNDhiYmYzNGMz
MDQzMGQyZTcwZGU1NzQ5OGU5YjUxZTZhYzI0NGQuLjFkNTBjZDE3NGZjNDdkOTIyMTcxODhlMzI1
ZmY1N2FlOGQxNWI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBib29sIEVycm9ySW5zdGFuY2U6
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZQogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBFcnJvckluc3RhbmNlKiB0aGlzT2JqZWN0ID0ganND
YXN0PEVycm9ySW5zdGFuY2UqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6ZUVy
cm9ySW5mb0lmTmVlZGVkKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggZjFmYWM1OTY4MmQ5ZTAy
NjUwOGNiNGZmOGM5YjI2N2I0ZWU3NmU4Ny4uNDAwNjA4ZDA4YTgzNGNkMzFlNjEyZTczYWI1MzFj
YjBhM2NhMTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuaApAQCAtOTksNyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0
U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgIHZvaWQgY29tcHV0ZUVycm9ySW5mbyhWTSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5kZXggY2Ux
MGY3ZmU0ODczZTRhNDdiZTE0MWUyNTU2OWFkNjQ4YWZmOWQyOC4uNDcxMjE2NzMwMzY0ODI4ZmUy
NzcwZTIzNDg2OWFjZTcwOTA4ZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJ
bmxpbmVzLmgKaW5kZXggYjgzN2VjMWJiNDMwZjZkNThiMWQ1YjExNWRhNTEzYzViY2MwYmY1My4u
YTVhOWVjYjMyMmEyMGRhOGZlMjQzM2ZmZDU0N2E3OGFmYzYwMmNmNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
CkBAIC0xMzksOCArMTM5LDEwIEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvCiAgICAgICAgIHRo
aXNPYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNs
b3QpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMTU4LDcgKzE2MCw3IEBAIGJvb2wgR2VuZXJpY0Fy
Z3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1ib29sIEdlbmVyaWNBcmd1
bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBHZW5lcmljQXJndW1lbnRz
PFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSw3ICsxNzcsNyBAQCBib29sIEdlbmVyaWNB
cmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbAogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KGlkZW50KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBHZW5lcmljQXJndW1l
bnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCAqaW5kZXgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpZGVudCwgc2xvdCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAwMzQ4N2Y2
MWUwZjJmYzc1MWJhNzAzYjcwY2EzNmQwMjIyMTYzNGRlLi42MDFmMWU0OWYxNWNkNTAxYTBlMGE3
NWVlMjg1MDZmMzJiMGRiM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUs
IGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxz
ZTsgfQogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wp
IHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpT
T2JqZWN0PiBtX2dldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKaW5kZXggNmQwNzU5MTcxMWVlZGJjMjhlMGU0ZGE3ODQ5ODIyYWI4ZDY2ZjVkMS4uYmNlMzY1
NWEzMTkyZWEyOTBmZTdmMDQwODI0YTM4ODZmNmIwNDgzNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBib29sIEpTQXJyYXk6
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0K
IAotYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJy
YXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0FycmF5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBib29s
IEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogc3RhdGljIGludCBjb21wYXJlS2V5
c0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggMzExNjViNWZmNDkyNTRjYzFhNmM0NzkwMmI3OTEw
YWM0YTdkOWJmZi4uY2RjMzliNTEyZDdlZTNhMTVjZjFhZWMyZTBhMmQ5M2Q5YWFhZDBmMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTgyLDcgKzE4Miw3IEBA
IHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CmluZGV4IGZlMDE4MGRkNjBjM2QxYmI2MGY4YjUzM2IxODYwNThlZWFkODFiNzUuLjU4NmFmM2Zh
YjM3OTUyZTNmZGUxY2U0NzBjOTlhYjFlZGM0YTc0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Q7CiBj
bGFzcyBKU0JpZ0ludDsKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2VsbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI3MTM1MmIyMTc0NzAzNTZkZjQw
M2ZkZDljZGU2MGRlZjg4ODE2MDcuLjBlNjdmODY2NzZkNTg2NWFhODhmMDRmMzVhZGE3NDMyMWUw
MmNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTI2
LDEwICsxMjYsMTAgQEAgYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGUKICAgICByZXR1cm4gdGhpc09i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0NlbGw6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllciwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09i
amVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKIH0KIAogYm9vbCBKU0NlbGw6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCmluZGV4IDY2NWQwODg5Y2Y0NDYxYzNhYjBhMmFmNGIwN2M2YTU4YzkwNDIxYzQu
LjA2MmU4M2RiMzlhYjM0YTZlZjRmZGEzNmZmYTUwZTRjMTExZDk3MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0
SW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgc3Rh
dGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCAxNDZh
OTEzMmQ0NzM1MjQyYzEwNmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJiMDllMzdm
OGE0NzQzMTliZjc2YzMyZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVm
aW5lT3duUHJvcGVydHkoCiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCi0g
ICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0RhdGFWaWV3
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lk
IEpTRGF0YVZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4MmE2N2U5
N2VmYmI0ZjMyZjFiYzEyZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVlNmNjN2I5
ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC03
Miw3ICs3Miw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZv
aWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZWU4NWVlMDY0NmM5ZGRhZjll
NmU5N2FmMTdiOWY5YzAzNzdkMThlMC4uOGI4ZDUwNjUzNmU1M2Y5MjhiYzM2OWQyZWJmZDVhNjMw
YjA4NmI4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBi
b29sIHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCmluZGV4IGFkZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZhY2QuLjE4
YWI0NzU0M2ZkNzgyOTc4YWZlYTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXgg
ZjA4Zjg1MjQ2OWJlZmQ2YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2NWNlMWMz
NTY1NTBlY2Q1OGI3N2ZlZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUsNyArMzA1
LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAw
Y2FmYmQyNzZjZjc0ZDBjODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi41OGZiYjU3NTYyYjcxMDA3
OWU2NTE0MGY3ZTA5ZTcwODA0OGZhMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtNDM4LDcgKzQzOCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlZmluZU93blByb3BlcnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KQEAgLTQ4NCw3ICs0ODQsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2
bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0
dXJuIGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1NjZjNWQ0
YTE4YTkyODcxZjdlLi4wZjg5MDMwMGJlYjc4NGM3MTc5YTg3M2ZhY2ZjYjJhODRkMGM5ZTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0xMzE0LDcgKzEzMTQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgbWV0aG9k
VGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNw
cAppbmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45NzRiOTJi
NTRlMWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcs
MTMgKzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXgg
ZDAxM2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMyZGQ0OTNm
ZjdhNGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAwYjcyOWY3
YzczZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52aXJvbm1l
bnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVu
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpTTW9kdWxl
RW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBp
ZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpU
eXBlOjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5kZXgg
ZGFlYWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2ZiOThiYjJh
ODJkYWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0
dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggMmJk
YjEzMDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNhNjVhZDEx
OTAyZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5LDEyICsx
OTksMTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhv
dGljLW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAgIGlmIChw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9y
dHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4IDhl
ZWY2MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdhMTNlN2Vm
YmZjZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNmOWNiMDFl
MmJmMzIxYjA2ZWQ0MTk2YzkuLmVkYTJkNjIzNTA5OWVkMzAxYmIwYWUxMTQ1MTRmMzJlMTU0Y2I2
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBA
IC03NTksOSArNzU5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1Zh
bHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0KTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZl
cihvYmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFsdWUpOwogICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxP
YmplY3QsIHByb3ApOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAo
ZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgc2xv
dCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5wdXQob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgZmlsdGVy
ZWRWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGFjZDI5ZGVkODEzNTFmYjI4
NGIyMTU5YWQ0N2E2MzFjMzQ5NGYxZGYuLjM0NzMyZTFjMmJmMzZmZTVkNzk3N2MxYmRlMjVjZGFl
ZDYzYWM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
QEAgLTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAKIC8vIEVD
TUEgOC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xOTk5LDgg
KzE5OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJvcGVydHlJ
c1ByZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAgICAgaWYg
KGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQ
cm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJs
ZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZp
cmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
CiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10gKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVkV2F0
Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5ICYm
ICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhp
bmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNldCk7
CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUt
Pmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5u
dWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgp
LCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRPZmZz
ZXQpOwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAg
ICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9IGVsc2UK
KyAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTIwMzAsOCArMjAzNSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIAotICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVY
KQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkpKTsK
KyAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZt
LCBpKSwgc2xvdCk7CisgICAgfQogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhp
bmdNb2RlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAgLTM2MjUs
NyArMzYzMiw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVyaWMgZGVz
Y3JpcHRvciBpcyBzaW1wbHkgY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3Rpbmcg
cHJvcGVydHkKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAg
ICAgICAgaWYgKCFjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3Qp
IHsKLSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShv
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAg
ICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3Vy
cmVudCksIGN1cnJlbnQpOwogICAgICAgICB9CkBAIC0zNjQxLDcgKzM2NDksOCBAQCBib29sIHZh
bGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBwdXRE
ZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Is
IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50
KTsKICAgICB9CkBAIC0zNjY1LDcgKzM2NzQsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9w
ZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVy
biBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBj
dXJyZW50KTsKICAgICB9CkBAIC0zNzE4LDcgKzM3MjgsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBw
bHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqCiAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsKIAotICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
IHVuc2lnbmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQo
Y3VycmVudCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nl
c3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBlYzYz
MDBlYTliOTcyY2U5YmEwZmFkODE4MjU3YWZiMjBkODJhMmVkLi42OTNiZGJiOTk3ZDY0NDIwODA2
NTFjMjdlZGRlN2IwODhhMTQxNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNs
dWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXIuaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJIZWFw
LmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0
LmgiCkBAIC02MjMsNyArNjI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJvcGVydHko
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzT3duUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0
VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRleCA5
YzQ3OTM0ZTRhM2Q5MTk5ZmE5ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEyZDIyMTkx
MjdjZDk5YjMwMjA5MzA4ODcyMTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVj
dC0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29s
IEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94eTo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0
dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCks
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Byb3h5Ojpp
c0V4dGVuc2libGUoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFlNjY4ZDI1
OTBkOWI5N2M4ZjRiYmEyYmZmYjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5NGMwYjI1
ODk1Nzk4ZmM1ZjllZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5o
CkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4
IDYzMGUxYjc4YmIyMDZlN2FmNjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMxNTBlOTZh
ZWNkNTM3NDczMWZkYThkOWE3YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyArNDQsMTMg
QEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9z
eW1ib2xUYWJsZSk7CiB9CiAKLWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N5bWJv
bFRhYmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihj
ZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMocHJvcGVy
dHlOYW1lLnVpZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNkZWQ5OGIz
MzVkZjczNmIyMS4uYjU2OGU4ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9s
VGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAgCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNTeW1ib2xUYWJsZU9iamVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4MTU5OGZm
ZWYyYTVlMTRhODBmZDRlNTRkYzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTll
NWY5MGM2NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwCkBAIC02ODUsMTIgKzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVs
ZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHRE
ZWxldGUgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlz
T2JqZWN0LT50YXJnZXQoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9i
amVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1EZWxl
dGUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDE3Y2Ey
OWZiMGEzZmRkYmE3MWViNjgyNDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgxOGE0Njc0
YTUyMmJmNjBhMmNhMDllYWMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJveHlPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5
cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNhMDljMDA0
ODFhNTE1MzgyNy4uMWNlMWI0YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmViYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03
MSwxMiArNzEsMTIgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQmFzZTo6
Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRleCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxs
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9p
ZCBSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2MzcxOTFhODlm
MGI3Yzk2YzVmYmI3MTQuLjg1N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNlMGIxODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0x
NDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJbmRleElz
Tm90V3JpdGFibGVGbGFnID0gKG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcg
fCBsYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApp
bmRleCA1MTU3NTI3NjVlY2IwMmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRiYzY3YzU3
ZjgxNTYxZmE3OGQxOTRlZmFmMDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00MCw3ICs0
MCw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFj
dGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2IxMDk2YjI2
ZDE4NzA3NGNiZjE3ZWI4M2MyOS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBmZGJiN2Ex
MDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZh
bEFjdGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RF
dmFsQWN0aXZhdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHNjb3BlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApp
bmRleCA0NzdiOWNhZmIzZmEwMDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZkZDkyNzNi
NzUwNThhNDdmNzY5YTNmY2Y4Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFN0
cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVm
aW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PFN0cmluZ09iamVjdCo+KGNlbGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkt
PmNhbkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgU3Ry
aW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2IzYTNlNGRh
MzUyZjIyNzg2NTIzLi42OWYyNmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4ZDRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAppbmRleCBlZGE0NDZiZmJlMjY3YWIwMWI4NTJlMTVmZGU5YzljMzBlNmY1OGU2Li42MzY5NGYw
YzRhZGQxYmE0ZWI3NGRiYWQyNjFkNzAwM2U4MjczZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTU0MCw4ICs1NDAsNyBAQCBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAg
ICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlz
dGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAo
bmV3U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01NDksMTYg
KzU0OCwxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKikKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9t
RXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0
KQogewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+aXNPYmplY3QoKSk7CiAKLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0cnVjdHVy
ZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3RleHByIGJv
b2wgaXNBZGRpdGlvbiA9IGZhbHNlOworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAg
aWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRp
b25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkg
ewogICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25P
ZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAg
b2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01Njgs
MTEgKzU2NCwzMCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBudWxscHRy
OwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXNDb21w
aWxhdGlvblRocmVhZCgpKTsKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAo
c3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVz
KSA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNv
bmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0g
MDsKKyAgICBpZiAoc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgp
LCBhdHRyaWJ1dGVzKSA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICBy
ZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChz
dHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKwogU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNl
dCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVm
ZXJyZWQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5
KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0s
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJU
KCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSkgIT0gaW52YWxpZE9mZnNldCk7
CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1
Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9IHNfbWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9
IHMtPnByZXZpb3VzSUQoKSkKQEAgLTEyMDMsNyArMTIxOCw3IEBAIFJlZjxTdHJ1Y3R1cmVTaGFw
ZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUsIGJvb2wmIHNhd1Bv
bHlQcm90CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
Ci0gICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIGNsYXNzSW5mbygpLT5jbGFz
c05hbWUsICIsIHsiKTsKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgUmF3
UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihpZCgpKSksICIsICIsIGNsYXNzSW5mbygp
LT5jbGFzc05hbWUsICIsIHsiKTsKICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDUyY2QzYzcx
ZDkyMGYyZjhhOTdiNDYwYjkwZTBlYzcwZDVkNzExYWYuLmFlMjBhZTk2YmE0MDMyZjZhYTFmOTRi
ZTNjMTc0Yjc2M2M3M2ZhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNs
dWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlUHJvcGVydHlTbG90Lmgi
CiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpTQ2FzdC5oIgpAQCAtMTkxLDcgKzE5Miw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0
aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVOZXdQcm9w
ZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zm
c2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0
cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwg
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYs
IFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1
cnJlbnRseShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVy
ZSosIEpTVmFsdWUgcHJvdG90eXBlLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJp
YnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJl
ZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKQEAgLTQ3Nyw2
ICs0NzksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFk
ZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7CisgICAgYm9vbCBtYXlIYXZlSW5kZXhpbmdIZWFkZXIo
Ym9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBtYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIApAQCAtNzE2
LDYgKzcxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0g
bnVsbHB0cik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0
aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJ
bXBsKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVy
dHlPZmZzZXQmKTsKIAogICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0
IGhhcyBhIHVzYWJsZSBwcm9wZXJ0eSB0YWJsZSwgdGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAgICAv
LyBhbmQgdGhlIGxpc3Qgb2Ygc3RydWN0dXJlcyB0aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdv
dCB0byBpdC4gSWYgaXQgcmV0dXJucyBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggMGNkOThkNTJhY2M3ZjcxNGMwNWIxNTNlMDgx
MzllNDkxY2Q4Y2Y4Yy4uZmUyODU4NzQwOTRkYWMzMDcwNzVkMmM3NjFlMjMyMmE0NjAxNzVmNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMu
aApAQCAtMjI0LDEwICsyMjQsMjMgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjpoYXNJbmRleGlu
Z0hlYWRlcihjb25zdCBKU0NlbGwqIGNlbGwpIGNvbnN0CiAgICAgCiAgICAgaWYgKCFpc1R5cGVk
Vmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJW
aWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7CiB9CiAKK2lubGluZSBi
b29sIFN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwp
IGNvbnN0Cit7CisgICAgbXVzdENoZWNrQ2VsbCA9IGZhbHNlOworICAgIGlmIChoYXNJbmRleGVk
UHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtdXN0Q2hlY2tDZWxsID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSAmJiBnbG9iYWxPYmplY3QoKSA9
PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCmluZGV4IDlhN2Y0OWExNDA1M2EwODI3ZGJhZTM1MmQyOGY1MDM2MDdmZjZjZDcu
LjRlZjI5ZWQ3NzY4OGRjMTc5Mzg4YjcxMGYxNGU0MzYxOGVjZjllOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAg
c3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0yODUwLDYgKzI4NTAsMTUgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHko
SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzT3du
TGVuZ3RoUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNP
YmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4o
dm0sIHRhcmdldCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rp
b24tPmFyZU5hbWVBbmRMZW5ndGhPcmlnaW5hbCh2bSkpKTsKK30KKwogdm9pZCBKU0RvbGxhclZN
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKQEAgLTI5ODMsNiArMjk5Miw4IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0U3RydWN0dXJlVHJhbnNpdGlv
bkxpc3QiLCBKU0RvbGxhclZNSGVscGVyOjpmdW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRpb25M
aXN0LCAxKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImdldENvbmN1cnJlbnRseSIsIGZ1bmN0aW9u
R2V0Q29uY3VycmVudGx5LCAyKTsKIAorICAgIGFkZEZ1bmN0aW9uKHZtLCAiaGFzT3duTGVuZ3Ro
UHJvcGVydHkiLCBmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5LCAxKTsKKwogICAgIG1fb2Jq
ZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3Rh
dHVzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3RmL1Nw
ZWN0cnVtLmgKaW5kZXggY2I4ZDNiYjAzMDUyODkxMDhhOGQ4ODFmMDAyMzE0Njg0MzJmYWNmMC4u
NDU4NWIxMDBhYzdkYTk0ODIxNGFkOGM4ZmZiYjIxOTRhYWM3MGVkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvU3BlY3RydW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCkBA
IC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGFkZChjb25zdCBUJiBrZXks
IENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICAgICAgaWYgKCFjb3VudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
dHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21h
cC5hZGQoa2V5LCBjb3VudCk7CkBAIC01OCw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBD
b3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwogICAgICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmlu
ZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwpAQCAtNjYsOCArNjgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICAKLSAgICBpdGVyYXRvciBiZWdp
bigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVy
biBtX21hcC5lbmQoKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAv
LyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291
bnQuCiAgICAgVmVjdG9yPEtleUFuZENvdW50PiBidWlsZExpc3QoKSBjb25zdAogICAgIHsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+
IGxpc3Q7CiAgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIg
IT0gZW5kKCk7ICsraXRlcikKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50KGl0
ZXItPmtleSwgaXRlci0+dmFsdWUpKTsKQEAgLTEwNiwxNyArMTA3LDIzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQogICAgIAotICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFw
LmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAgICAgbV9tYXAuY2xlYXIoKTsKKyAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAg
IG1fbWFwLnJlbW92ZUlmKFsmZnVuY3Rvcl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5
cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBwYWlyKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0b3IoS2V5QW5kQ291bnQocGFpci5rZXksIHBhaXIudmFsdWUpKTsKICAgICAgICAgICAgIH0p
OwogICAgIH0KICAgICAKIHByaXZhdGU6CisgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBI
YXNoTWFwPFQsIENvdW50ZXJUeXBlPiBtX21hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyMDUwNmY4ZWNmYWM2NTNl
NTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi5mN2E4OTU1N2VkNTZhY2VmOTEzYTRhMWY2ZDcyNDY3
NTJlMTRjZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCkBAIC0zMTQsMTMgKzMxNCwxMyBAQCBib29sIEpTRE9NV2luZG93OjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
CiAgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTRE9NV2luZG93Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cq
PihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVz
IGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFw
cGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9v
bCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXgg
MWVmMDZjMjZlZTI1MmRlNjY4YzFkZWRlOTFjNWRkZjZhMGRkZmRlNS4uODRiOWExM2UxOWVhMTg5
ZGYzMDc0NzYwNjVkZDM3M2U1MWU0ZjY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE2MywxMyArMTYzLDEzIEBAIGJvb2wgSlNM
b2NhdGlvbjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB1CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGxl
eGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29s
IEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpT
TG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
TG9jYXRpb24qPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBp
biB0aGUgc2FtZSBvcmlnaW4uCiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLndpbmRvdygpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2lu
ZG93Q3VzdG9tLmNwcAppbmRleCBlMmVlZGZkNWIwYzVhYTcxODcwZGE3NjU0Mzk3ZTM1Yjk5YTgy
Y2FjLi4wY2I2N2VmMjljNjJiZjhjYzQ0NmEwZWNlMzFjOWZlNTM1MTU3YTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgSlNSZW1vdGVET01XaW5kb3c6OnB1dEJ5SW5kZXgo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUpCiti
b29sIEpTUmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwM2RkOWMxNjFhODM5
OTEyZDQzOTM0MmQyNjViYzVmZDE1YjZhNDE2Li5iN2NkMWZjYTQzOTljZTg5OTZhYWE2ZWNhNzk1
MDczNmMwNTMyMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTMwMSw3ICsxMzAxLDcgQEAgc3ViIEdlbmVyYXRlRGVs
ZXRlUHJvcGVydHkKICAgICAjIFRoaXMgaW1wbGVtZW50cyBodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlbGV0ZSBmb3IgdGhlCiAgICAgIyBm
b3IgdGhlIGRlbGV0ZVByb3BlcnR5IG92ZXJyaWRlIGhvb2suCiAKLSAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKIAogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDwke2NsYXNzTmFtZX0q
PihjZWxsKTtcbiIpOwpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJv
cGVydHkKIAogICAgICMgRklYTUU6IEluc3RlYWQgb2YgY2FsbGluZyBkb3duIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSwgcGVyaGFwcyB3ZSBzaG91bGQgaW1wbGVtZW50CiAgICAgIyB0aGUgcmVt
YWluZWQgb2YgdGhlIGFsZ29yaXRobSBvdXJzZWx2ZXMuCi0gICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9
XG5cbiIpOwogfQogCkBAIC0yNjk2LDcgKzI2OTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICB9CiAKICAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNEZWxldGVQcm9wZXJ0eSgkaW50ZXJmYWNl
KSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTtcbiIpOwog
ICAgIH0KIApAQCAtNDMyNCw3ICs0MzI0LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1l
XCIpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2Vu
ZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTc1MTIsNyArNzUx
Myw4IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
Z30pIHtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtc
biIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCBiNWVhNTQ4ZTFkMTI3MmUx
ODZkYjk0NGNlNjE5ODUwZjRmZDJlODA4Li5lNjMzMjM5ZGFlZmNlZjA0MDljOGI0NjNiODcwZjY2
YjgxMDVkNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0xMzcs
NyArMTM3LDggQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ09wZXJh
dGlvbiIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCkBAIC0xNDUsNyArMTQ2LDggQEAgdm9pZCBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRp
bmdBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA4MGZhZjM1MTA1NDdhMmFkZTc3Y2I3ZWM5NWIyOTE5MmQ5
MDFhYTQ5Li5lZjY2MDMzNGUzMTgxYjY3ZGU1MjRiM2QzNWRmMTY1NjRmNjU2YWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xMDgsNyArMTA4LDggQEAg
dm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiYVNlY3JldEF0dHJpYnV0ZSIpLCBzdHJsZW4oImFT
ZWNyZXRBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBz
dHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2Jq
ZWN0KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5j
cHAKaW5kZXggYmZmNGMzYjA5ZGE1OTQxYmZmNzFkY2RiYjM4NTI1NDhhMDBjM2YxZC4uODc4M2Ux
NWMyODEzNzY2MzRmZGM3NWRlZmZjODVkZGE5NjU0ODlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIHZv
aWQgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAot
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAg
ICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXIuaAppbmRleCAwZWE0YmIxMWI4NjA1MzAxMTY1N2ZkNmVhNjNm
MjQ2ZDRkODJlNTBhLi4xMzhkNGMxOGY4ZjQ2YmMzNDMzMTA5YmQwMzIzOTU2MzdkMGFjMzlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9k
ZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmlu
ZGV4IDc5NGQ1OTc2ZjEzZjA3MThiNGNlZTUxNjMzODMwY2NkMzBmMWMzMzMuLjU3OWYyYTBlNmE4
YzdhOTI1NTYxOWQ4NDQ1MjZiYThkZGIyZGFhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBA
IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
Ci1ib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAg
ICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCA3OTFiZTE4MmViMWIzNjk2OTIxZGU5NzY5NTI3Mjlm
MGI0ZjBiMzRhLi4wNTVkM2RmOTIzODE4YzAwNzY3ZjE4OTVkZjY3MjVmNWJjMGVkZmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJh
dGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApp
bmRleCBiMzM3NmUzYTlmZTUyYjhhMGE2ZDNkNDA1YTZhYWZlYzQxYmNmMDg3Li4yNTAyM2EzMWEx
NDY0MjI4N2EwYjFiNTBkZGY0ZGY0NjE5ZGRmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lk
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEpTRwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJv
b2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamUKICAgICAg
ICAgaW1wbC5uYW1lZERlbGV0ZXIocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IDU0ZTAyNTQ3OGUxZGMz
OTkwNzA3MzNlNDk5YjAxNjMxNDkwMTI0OWUuLmE4NThhMjcxNTRiZDNjNjM2NGZjNDVhNjQ3ZmY0
MmI2YjQ3MjUwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBK
U0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6
SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IGU4ZDk3NDE5YWZhNWQ5YWU2OGRhMDRlYTU0MWVhYmY1MGQ0
Nzg3MzYuLmY2ZjM2NmUyMjJlNDE0NGE3NGI2Mzc1NGZiZDA3ODk4Zjk4YjY2YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApA
QCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwKICAgICBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3Qg
PSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKj4oY2VsbCk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjE4LDcgKzIxOCw3IEBA
IGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAgICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8
T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHko
cHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgfQotICAgIHJldHVybiBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRl
eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
LmgKaW5kZXggYTk5NDViYWZjNjExNDNlNTc2ZmZkNjBmZWM4ZWVlNjk2NGI5ZjAzMC4uMmZlYThk
OTBmNGY0YTE4NDJjOGUxOTJhZjM1ZDg1YzdkMTg2ODllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJy
YXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4
IDExMDBhYTNjZWMwYjFlMTBmNzkwNzMwYWY1MTMwOTcwMDYwMGI5NWUuLjFmYjNmMWJlYThkYWYy
ZjBkMDllMjk2YzU4N2ZmZTA0NzA4NjNmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTE1Nyw0NSArMTU3
LDUyIEBAIHZvaWQgSlNUZXN0Tm9kZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNhbGN1
bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgp
KSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdldFNl
Y3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRl
c3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0
Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW50
cmllcyIpLCBzdHJsZW4oImVudHJpZXMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJrZXlzIiksIHN0cmxlbigia2V5cyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oInZhbHVlcyIpLCBzdHJsZW4oInZhbHVlcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImZvckVhY2giKSwgc3RybGVuKCJmb3JFYWNoIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAg
ICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDRjMTA3MTAx
MzEwOWI1ZmVlY2I0MzI1NzE0ODQwNjkyZDg5MDZmMjEuLmY1Njg0MzI0YTY2N2JhOTZkZTc1MzYw
ODE4NzNkMjUyMGFhOGU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xOTg0LDE0ICsxOTg0LDE2IEBAIHRl
bXBsYXRlPD4gdm9pZCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiksIHN0cmxlbigi
ZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJl
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvblN0YXRpYyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMjM0Nyw5MCArMjM0OSwxMDQgQEAgdm9pZCBK
U1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCEod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNv
bWVXb3JsZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVz
dEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQiKSwgc3RybGVuKCJlbmFibGVkSW5TcGVj
aWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghd29ybGRGb3JET01P
YmplY3QoKnRoaXMpLnNvbWVXb3JsZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigid29ybGRTcGVj
aWZpY01ldGhvZCIpLCBzdHJsZW4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNhbGN1bGF0
ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICgh
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZ2V0
U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxl
ZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIp
LCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9u
YWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dpbmRvd0Z1bmN0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxT
Y29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwog
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtl
ckZ1bmN0aW9uIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9u
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmFsbG93c01lZGlhRGV2aWNlcygpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm1lZGlhRGV2aWNl
cyIpLCBzdHJsZW4oIm1lZGlhRGV2aWNlcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3Vy
ZUNvbnRleHQoKXx8IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5oYXNTZXJ2aWNlV29ya2VyU2NoZW1lKCkpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigic2VydmljZVdvcmtlcnMiKSwgc3RybGVuKCJzZXJ2aWNlV29ya2Vy
cyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAg
fQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlMUVuYWJsZWQoKSkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIiksIHN0cmxlbigi
ZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigicnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiKSwg
c3RybGVuKCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICgh
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhw
b3NlZFRvV2luZG93QXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9i
YWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dv
cmtlckF0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRy
aWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICAvLyBBZGRpbmcgYmFjayBhdHRyaWJ1dGUsIGJ1dCBhcyByZWFkb25seSwgYWZ0
ZXIgcmVtb3ZpbmcgdGhlIHJlYWQtd3JpdGUgdmFyaWFudCBhYm92ZS4gCiAgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggZmVlYmRlZjdiYzQ1ZTk4
YzkzMDhmZGZiZGUxMTBiOTlmZGRkY2EyYy4uMzJjMTNiOWViNDA3MDgzNWViMjU4MzcxOTZkNzgz
MjU4YWM1OTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0zOTEs
OCArMzkxLDkgQEAgYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5KE5QUCwgTlBPYmplY3QqIG8sIE5Q
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgaWYgKGktPmlzU3RyaW5nKCkp
Ci0gICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShv
YmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIo
bGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG9iai0+aW1w
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
LT5zdHJpbmcoKSksIHNsb3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgob2JqLT5pbXAsIGxleGljYWxH
bG9iYWxPYmplY3QsIGktPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDIyZjBiOGQ5ZDhmYWU0YTc5YzZiNjMxZTkzNWNi
NmFkYzdkOTRmZmYuLmRiYzZkM2IxZTE5ZjljMjFkOWI2MGMxN2VkZmY5NzE2MDA2N2MwNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTQ1
Nyw4ICs0NTcsOSBAQCAtICh2b2lkKXJlbW92ZVdlYlNjcmlwdEtleTooTlNTdHJpbmcgKilrZXkK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSBnbG9iYWxPYmplY3Q7CisgICAgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKIAot
ICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9p
bXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJp
bmcoa2V5KSkpOworICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCBTdHJpbmcoa2V5KSksIHNsb3QpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4
IDVlZDIxZjEzNGVmNGFhYjVkYzBjNTVhNDVkZTZhNjNkMjdjNmJlMmUuLjYyMjk2MzY4ZWJiOTBj
NTBiOWRlN2ZhMDc4MmM5YzZmYTI4NTkxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICBib29sIHRvQm9vbGVhbihKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OyAvLyBGSVhNRTogQ3VycmVudGx5IHRoaXMgaXMgYnJva2VuIGJlY2F1
c2Ugbm9uZSBvZiB0aGUgc3VwZXJjbGFzc2VzIGFyZSBtYXJrZWQgdmlydHVhbC4gV2UgbmVlZCB0
byBzb2x2ZSB0aGlzIGluIHRoZSBsb25nZXIgdGVybS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbQppbmRleCAxOWVkMTljYmM3YWUzZWU0Njc3OTZiMTAzY2JmZTc2
MTYwOWFkNzMwLi42ZTg3N2QyZWI3ZjQ0ZDAzYTI4ZTE3MTA4M2JkM2QwZjBiYjk4ODlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yOTAsNyArMjkw
LDcgQEAgQ2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0NlbGwq
IGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9
CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggNGQyOTdjNzBkNmIxYjZjMWFmODhmOTE0
YmU4NWY2MGRmMDNjYzliMS4uZWMzNTg4ZmM1NjU5NTUzZjUyNzI4M2M1OGE3MzU4MDIxMzI5YWM1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtMTQ5LDcgKzE0
OSw3IEBAIGJvb2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdl
dENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwg
dmFsdWUpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmgKaW5kZXggZmNmNWUzM2ZiMTE0MDE4NTEwNzk5MzBmYmQxMTc2MTM1NDUy
YzdlNi4uMjk4MTJhNjZkNmYwMTI0ZTM4MzYyNWY5NTYwMTljYTMzYmMzYmQ5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAg
ICAKICAgICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5nZXRM
ZW5ndGgoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXgg
YTAzNmI2NjYyZDQ4NzJmNjhkYzUyNjQ1YmExYWYyYmExNTMzMDMyZC4uOWQ1ZDYwZGVmMzU3NTRi
ZTFlMGUwNjIwZTQxZWRiOThlZmUzOWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGUK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBSdW50aW1l
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEg
cHJvcGVydHkgb2YgYSBSdW50aW1lT2JqZWN0LgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggNmNiZjdiZjc5NmIwYTg5NDA0Yjk0MjI3
NWQ2NTFlNjBlNzMyNDU4Mi4uM2MxMGQ4YmQ1MGYzYjdkYWE0ODQyMjE0YjllMDRmMDQzYWZkZjJm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29u
c3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwog
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAg
IHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCAyZWZiMjI1MjNmOTIxZTkyYWJkMDIxNmViMGNk
MWZmZDEwMDM2MmJlLi4wNWQxMjkyOTM5NTgyZjA0YzQzMmQzMGMxNDJkYmE1ZGFhMGJmMTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgSlNOUE9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
cmV0dXJuIGpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCktPmRlbGV0ZVByb3BlcnR5KGxleGljYWxH
bG9iYWxPYmplY3QsIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
SlNOUE9iamVjdC5oCmluZGV4IDg1NTg4OTQ5YTMwNjA0YzY5Zjc3Y2NjM2Y2MGU1NDY5NzdmZmFj
NmQuLjQ4MDNjMGJjNTcxZjk3N2RkYzI3MjJiYmFiOTZiNmQyN2MyYTljNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCosIE5QSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAzNmYyOGVlNmZiMDEwMmQ4YzE3NzEzYzYw
OGI2MTRlYWY4NWRkYjc2Li44YjlmY2RmMzA4NTJkMWQyMjJhNWIzYmQ1OTA2ZGE0YmFmZTQzYTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMjI5LDggKzIyOSw5IEBAIGJvb2wgTlBKU09iamVjdDo6
cmVtb3ZlUHJvcGVydHkoTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmll
cik7CisKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIG1fanNPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgc2xvdCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgaWYgKCFtX2pzT2JqZWN0LT5oYXNQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVu
dGlmaWVyUmVwLT5udW1iZXIoKSkpIHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAzMmFm
YTI4MGZhOTI3ZDg3NzMyMGViODFjYmQ5MDcxMDI1NTk3ZS4uMTJjZTQwOWM1NDNjMjI4ODIyNzcx
OWIyZDQxMDhiZjJhODc5ZDQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbQpAQCAtMTE0MSw4ICsxMTQxLDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OnJlbW92ZVByb3BlcnR5KHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGkKICAg
ICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworCisgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxNDZhNzU1YWQ5
ZjkzMmIxYjUxNzI5Y2E0MDZmYzRmMThlOTdlMjc1Li5hMDY2ODYyNjAxNjBjNmQ1ODg4OWFlYmVj
MjM0MzBkZTA3ZDRiOWEyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1
ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVs
ZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNo
YWluLmpzOgorICAgICAgICAoZGVsZXRlLkMucHJvdG90eXBlLnopOgorICAgICAgICAqIG1pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAo
YXNzZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2Vx
Lm5vSW5saW5lLmFzc2VydF9uZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwubWFrZUZvbzYpOgor
ICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3Nl
cnRfbmVxLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQ
b2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXBy
b3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0X3Ro
cm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5s
aW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRf
ZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
LnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURl
bGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0
ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3Mu
bWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanM6CisgICAgICAgICogc3RyZXNz
L2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0
KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAg
KGFzc2VydF90aHJvd3MpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2Vy
dF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9Jbmxp
bmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFrZUZvbzIpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFs
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVh
YmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0
eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgubWFrZUZvbzUp
OgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxl
dGVJbmRleCk6CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwubWFrZUZvbzYpOgorICAgICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUluZGV4
LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9y
cGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxldGVCeVZhbC5tYWtlRm9vNyk6CisgICAgICAgIChu
b0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC50ZXN0QmlnaW50RGVsZXRlQnlWYWwpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxldGVC
eVZhbC5tYWtlRm9vOCk6CisgICAgICAgIChub0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwu
dGVzdFN5bWJvbERlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xEZWxl
dGVCeVZhbC50ZXN0T2JqRGVsZXRlQnlWYWwubWFrZUZvbzkpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdFN5bWJvbERlbGV0ZUJ5VmFsLnRlc3RPYmpEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdC5tYWtlRm9vMTApOgorICAgICAgICAo
bm9JbmxpbmUudGVzdE9iakRlbGV0ZUJ5VmFsLnRlc3RTdHJpY3QpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdFN0cmljdC50ZXN0T3ZlcnJpZGUuYXJyLmopOgorICAgICAgICAobm9JbmxpbmUudGVz
dFN0cmljdC50ZXN0T3ZlcnJpZGUpOgorICAgICAgICAobm9JbmxpbmUudGVzdE92ZXJyaWRlKToK
KwogMjAyMC0wMi0xOSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAK
ICAgICAgICAgQ29tcHV0ZWQgUHJvcGVydGllcyB3aXRoIGluY3JlbWVudCBzb21ldGltZXMgcHJv
ZHVjZXMgaW5jb3JyZWN0IHJlc3VsdHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwppbmRl
eCA0OWEzMWI3ZjI0N2MxYmQwYWNhODJjYjIyZGYyMGU4ZjFiZjYxYmRkLi41NGJiYTgyZTY5OWM2
MmNjY2E4OTQ1MTZlNjJiN2U2Y2ExZjUxMjAyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKKysrIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWlu
LmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBT
ZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJlc3MtdGVzdC5weQorLy9AIHNraXAgaWYg
JG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICgh
YikKICAgICAgICAgdGhyb3cgbmV3IEVycm9yOwpAQCAtMjgsNyArMjgsNyBAQCBmdW5jdGlvbiBk
b1Rlc3QoelZhbCkgewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEw
MDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewogICAgIGNvbnN0
IFggPSB7IGkgfQogICAgIEMucHJvdG90eXBlLnogPSBYCiAgICAgZG9UZXN0KFgpCkBAIC0zNiw3
ICszNiw3IEBAIGZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7CiAKIGRlbGV0ZSBDLnByb3Rv
dHlwZS56CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMjAwMDAwMDsgKytpKSB7CiAgICAgZ2V0Wih7ejogaX0pCiAgICAgZG9UZXN0KHVuZGVm
aW5lZCkKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9w
ZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZiYWZmYWM5OGU1NjNkNWYzN2Y2ZWUyMDkwODVkNjQ4M2M5NjgxZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hl
LXBvbHltb3JwaGljLmpzCkBAIC0wLDAgKzEsNTMgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRp
b24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3Nl
cnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYg
KGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiAr
IGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAg
IGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6
ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNz
ZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGlj
RGVsQnlWYWwoaSkgeworICAgIGZ1bmN0aW9uIG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9v
ID0ge30KKyAgICAgICAgZm9vWyJiYXoiK2ldID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAg
ICAgICBkZWxldGUgZm9vWyJiYXoiK2ldCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUobWFrZUZvbzYpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqPTA7IGo8NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAg
fQorCisgICAgZm9yIChsZXQgaj0wOyBqPDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0g
YXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9l
cShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBp
biBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAx
KQorICAgICAgICBmb29bImJ1ZyIral0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIral0g
PT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQorbm9J
bmxpbmUodGVzdFBvbHltb3JwaGljRGVsQnlWYWwpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMzAw
MDA7ICsraSkgeworICAgIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpCit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40OTkxMmRhNGJiYmFhZDA1MjFlNTUxMjVjOTA3ZTVmYjJjZGMxNGU0Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDE3NCBAQAorLy9AIHNraXAgaWYgJG1vZGVsID1+
IC9eQXBwbGUgV2F0Y2gvCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAo
IWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsg
Yik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0g
IiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJl
dyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAg
ICAgIHRocmV3ID0gdHJ1ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShh
c3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9Jbmxp
bmUoYXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7
CisgICAgZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAg
IGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBhcnJbal0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAg
ZnVuY3Rpb24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28u
YmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQor
ICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAg
YXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJs
ZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkg
eworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1
cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFy
cmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyAr
K2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9i
amVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28p
KQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAg
ICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9
IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3Nl
cnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9v
LmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFy
JywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNl
CisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNl
KQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBh
c3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQor
ICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25z
dCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAg
YXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJh
ZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1si
YnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQor
fQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmb3IgKGxldCBpID0g
MDsgaSA8IDIwMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAg
dGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVC
eUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2Vl
cHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwppbmRleCA3Nzk1ZGM1ODE1NzhlNGMzOTgxYzIyYWM4
NzZjNDU1NDEzZTY0ZDNjLi5hOTM5YWFlM2FjOGFjY2MyMjE0ZGQ3ZTdkODAyNDQyMWE4MTY0NWQ5
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2Vl
cHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwpAQCAtMjQsNSArMjQs
NSBAQCBmdW5jdGlvbiBkb1Rlc3QoKSB7CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxl
dCBpPTA7IGk8MTAwMDAwMDA7ICsraSkgZG9UZXN0KCkKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAw
MDAwMDsgKytpKSBkb1Rlc3QoKQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUt
cHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5zaXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9k
ZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5zaXRpb24uanMKaW5kZXggNDAzYzdj
MDljYzEyM2YzYjE4NTQ2ODBiNmMxN2RkNDU2YTVkZWYzMS4uYTRiYTFlNDRkYWM4YTlhMzMxZGUw
M2IwNTM1ZTM5MjQ5M2U2NWMxMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXBy
b3BlcnR5LWNoZWNrLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcwpAQCAtMTIsNiAr
MTIsOSBAQCBmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKICAgICBpZiAoYSA9PT0gYikKICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIg
KyBiKTsKIH0KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5l
KGFzc2VydF9uZXEpCiAKIGZ1bmN0aW9uIHNkKG9iaikgewogICAgIGxldCBkYXRhID0gJHZtLmdl
dFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0KG9iaikKQEAgLTMxLDYgKzM0LDggQEAgZnVuY3Rpb24g
c2lkKG9iaikgewogICAgIGxldCBkYXRhID0gc2Qob2JqKQogICAgIHJldHVybiBkYXRhW2RhdGEu
bGVuZ3RoLTFdLmlkCiB9Citub0lubGluZShzZCkKK25vSW5saW5lKHNpZCkKIAogZnVuY3Rpb24g
dGVzdERlbGV0ZUlzTm90VW5jYWNoZWFibGUoaSkgewogICAgIGxldCBmb28gPSB7fQpAQCAtNjIs
NiArNjcsNyBAQCBmdW5jdGlvbiB0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZShpKSB7CiAgICAg
YXNzZXJ0X2VxKCR2bS5nZXRDb25jdXJyZW50bHkoZm9vLCAiYmFyIitpKSwgMSkKICAgICBhc3Nl
cnQoZm9vWyJiYXIiICsgaV0gPT09IDEpCiB9Citub0lubGluZSh0ZXN0RGVsZXRlSXNOb3RVbmNh
Y2hlYWJsZSkKIAogZnVuY3Rpb24gdGVzdENhbk1hdGVyaWFsaXplRGVsZXRlcyhpKSB7CiAgICAg
bGV0IGZvbyA9IHt9CkBAIC0xMDAsNiArMTA2LDggQEAgZnVuY3Rpb24gdGVzdENhbk1hdGVyaWFs
aXplRGVsZXRlcyhpKSB7CiAgICAgYXNzZXJ0X2VxKGRhdGFbZGF0YS5sZW5ndGgtMl0ucHJvcGVy
dHksICJiYXIiICsgaSkKIH0KIAorbm9JbmxpbmUodGVzdENhbk1hdGVyaWFsaXplRGVsZXRlcykK
KwogZnVuY3Rpb24gdGVzdENhbkZsYXR0ZW4oaSkgewogICAgIGxldCBmb28gPSB7fQogICAgIGZv
ciAobGV0IGo9MDsgajw1MDA7ICsraikgewpAQCAtMTMxLDYgKzEzOSw3IEBAIGZ1bmN0aW9uIHRl
c3RDYW5GbGF0dGVuKGkpIHsKICAgICAgICAgICAgIGFzc2VydF9lcSh2YWwsIHVuZGVmaW5lZCkK
ICAgICB9CiB9Citub0lubGluZSh0ZXN0Q2FuRmxhdHRlbikKIAogZnVuY3Rpb24gdGVzdERlbGV0
ZVdpdGhJbmxpbmVDYWNoZSgpIHsKICAgICBPYmplY3QucHJvdG90eXBlLmdsb2JhbFByb3BlcnR5
ID0gNDIKQEAgLTE3NSw2ICsxODQsNyBAQCBmdW5jdGlvbiB0ZXN0RGVsZXRlV2l0aElubGluZUNh
Y2hlKCkgewogCiAgICAgZG9UZXN0KHVuZGVmaW5lZCkKIH0KK25vSW5saW5lKHRlc3REZWxldGVX
aXRoSW5saW5lQ2FjaGUpCiAKIHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUoKQogCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OTk3MjgxMDdjYWRiNDFiOTk3YWUyN2JlYTliY2RiNTg2YjYwMTNhCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpAQCAtMCww
ICsxLDUzOSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlQmlnSW50PXRydWUiKQorCitmdW5jdGlv
biBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEo
YSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2Vy
dGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRf
bmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJh
c3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICB0cnkgeworICAg
ICAgICBmdW4oKQorICAgIH0gY2F0Y2ggeworICAgICAgICB0aHJldyA9IHRydWUKKyAgICB9Cisg
ICAgYXNzZXJ0KHRocmV3KQorfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2Vx
KQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25vSW5saW5lKGFzc2VydF90aHJvd3MpCisKK2Z1bmN0
aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28oKSB7
CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28u
YmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAg
fQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZv
bygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAg
ICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2Vy
dCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChm
b28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQo
Zm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAg
ICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVz
dENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28yKCkgeworICAg
ICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9
IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0K
KyAgICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9v
MigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAg
ICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2Vy
dCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChm
b28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQo
Zm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKwor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCkKKworZnVuY3Rpb24g
dGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMygp
IHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZv
by5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAg
ICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGlu
ZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMygpCisgICAgfQor
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9
IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkK
KyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIg
aW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0g
MSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIg
KyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3Nl
cnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVFbXB0
eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpIHsK
KyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAg
IGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxl
dGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVl
KQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisKKyAgICAgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAgICAgICB2YWx1ZTogNDIs
CisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9KTsKKyAgICAgICAgYXNz
ZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0
ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQor
ICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb280KQorCisgICAg
YXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkTWlzcykKKworZnVuY3Rpb24gdGVzdERlbGV0ZUluZGV4KCkgeworICAgIGZ1bmN0
aW9uIG1ha2VGb281KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9
IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZm9vWzBdID0gMjMKKyAgICAgICAgZm9v
WzFdID0gMjUKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAg
ICBhc3NlcnRfZXEoZGVsZXRlIGZvb1sxXSwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoK
KyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNSkKKworICAg
IGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNSgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9
IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJi
dWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28p
KQorICAgICAgICBhc3NlcnRfZXEoZm9vWzBdLCAyMykKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1sx
XSwgdW5kZWZpbmVkKQorICAgICAgICBmb29bMV0gPSAxCisgICAgICAgIGFzc2VydF9lcShmb29b
MV0sIDEpCisgICAgfQorfQorbm9JbmxpbmUodGVzdERlbGV0ZUluZGV4KQorCitmdW5jdGlvbiB0
ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzYoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0gPSAxCisgICAgICAgIGZv
by5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAgICAgICAgcmV0dXJuIGZv
bworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFyciA9IG5ldyBBcnJheSg1
MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0g
PSBtYWtlRm9vNigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09
PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAg
ICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAg
ICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6Iitp
IGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCkK
KworZnVuY3Rpb24gdGVzdEJpZ2ludERlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VG
b283KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vWzEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAg
ICAgICAgZGVsZXRlIGZvb1sxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
bl0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNykKKwor
ICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsr
aikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNygpCisgICAgfQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAg
ICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTBuIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAg
IGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAg
ICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4g
Zm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RCaWdpbnREZWxldGVCeVZhbCkKKworZnVu
Y3Rpb24gdGVzdFN5bWJvbERlbGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0IHN5bWJvbCA9IFN5bWJv
bCgnZm9vJyk7CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vOCgpIHsKKyAgICAgICAgbGV0IGZvbyA9
IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0gMQorICAgICAgICBhc3NlcnQoIShTeW1ib2woJ2Zv
bycpIGluIGZvbykpCisgICAgICAgIGFzc2VydChzeW1ib2wgaW4gZm9vKQorICAgICAgICBmb28u
YmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5bWJvbF0KKyAgICAgICAgcmV0dXJuIGZvbwor
ICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkK
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBt
YWtlRm9vOCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAy
KQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAg
IGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBh
c3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAg
YXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZv
bykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U3ltYm9sRGVsZXRlQnlWYWwpCisKK2Z1bmN0
aW9uIHRlc3RPYmpEZWxldGVCeVZhbCgpIHsKKyAgICBjb25zdCBzeW1ib2wgPSB7IGk6ICJmb28i
IH07CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vOSgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9Cisg
ICAgICAgIGZvb1tzeW1ib2xdID0gMQorICAgICAgICBhc3NlcnQoc3ltYm9sIGluIGZvbykKKyAg
ICAgICAgYXNzZXJ0KCEoeyBpOiAiZm9vIiB9IGluIGZvbykpCisgICAgICAgIGZvby5iYXIgPSAy
CisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb285KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb285
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAg
ICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0
KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChm
b28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQo
Zm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKwor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RPYmpEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdFN0
cmljdCgpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vMTAoKSB7
CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28u
YmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAg
ICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfdGhyb3dz
KCgpID0+IGRlbGV0ZSBmb28uZm9vYmFyKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2Jhciwg
NDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzEwKQor
CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28xMCgpCisgICAgfQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisg
ICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0Lmtl
eXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAg
ICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZv
b1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U3Ry
aWN0KQorCitmdW5jdGlvbiB0ZXN0T3ZlcnJpZGUoKSB7CisgICAgYXJyID0gbmV3IEFycmF5KDUw
KQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9
IGZ1bmN0aW9uKCkgeyB9CisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJvcGVy
dHkoYXJyW2pdKSwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGFycltqXS5sZW5ndGgKKyAgICAgICAg
YXNzZXJ0X2VxKCR2bS5oYXNPd25MZW5ndGhQcm9wZXJ0eShhcnJbal0pLCBmYWxzZSkKKyAgICB9
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9v
ID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAw
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdE92ZXJyaWRlKQorCitmdW5jdGlv
biB0ZXN0Tm9uT2JqZWN0KCkgeworICAgIGZ1bmN0aW9uIGRlbGV0ZUl0KGZvbykgeworICAgICAg
ICBhc3NlcnQoZGVsZXRlIGZvby5iYXopCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAg
bm9JbmxpbmUoZGVsZXRlSXQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0geyBiYXo6IGogfQor
ICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25z
dCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoImJheiIgaW4gZm9vKQorICAgICAgICBk
ZWxldGVJdChmb28pCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorCisg
ICAgYXNzZXJ0KGRlbGV0ZUl0KCJiYXoiKSA9PSAiYmF6IikKKyAgICBkZWxldGVJdChTeW1ib2wo
ImhpIikpCit9Citub0lubGluZSh0ZXN0Tm9uT2JqZWN0KQorCitmdW5jdGlvbiB0ZXN0Tm9uT2Jq
ZWN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIGRlbGV0ZUl0
KGZvbykgeworICAgICAgICBhc3NlcnQoZGVsZXRlIGZvb1siYmF6Il0pCisgICAgICAgIHJldHVy
biBmb28KKyAgICB9CisgICAgbm9JbmxpbmUoZGVsZXRlSXQpCisKKyAgICBhcnIgPSBuZXcgQXJy
YXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJy
W2pdID0geyBiYXo6IGogfQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsr
aikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoImJheiIg
aW4gZm9vKQorICAgICAgICBkZWxldGVJdChmb28pCisgICAgICAgIGRlbGV0ZUl0KDUpCisgICAg
ICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorCisgICAgYXNzZXJ0KGRlbGV0ZUl0
KCJiYXoiKSA9PSAiYmF6IikKKyAgICBkZWxldGVJdChTeW1ib2woImhpIikpCisKKyAgICBsZXQg
Zm9vID0ge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnYmF6JywgeworICAgICAg
dmFsdWU6IDQyLAorICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgIH0pOworICAgIGFzc2Vy
dF90aHJvd3MoKCkgPT4gZGVsZXRlSXQoZm9vKSkKK30KK25vSW5saW5lKHRlc3ROb25PYmplY3RT
dHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RFeGNlcHRpb25VbndpbmQoKSB7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgZnVuY3Rpb24gbXV0YXRlVGhlbShhLGIsYyxkLGUsZixnLGgsaSkgeworICAg
ICAgICBnLmkgPSA0MgorICAgIH0KKyAgICBub0lubGluZShtdXRhdGVUaGVtKQorCisgICAgZnVu
Y3Rpb24gZGVsZXRlSXQoZm9vKSB7CisgICAgICAgIGxldCBjYXVnaHQgPSBmYWxzZQorCisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgYSA9IHsgaTogMSB9CisgICAgICAgICAgICB2YXIg
diA9IHsgaTogMTAgfQorICAgICAgICAgICAgdmFyIGIgPSB7IGk6IDEwMCB9CisgICAgICAgICAg
ICB2YXIgYyA9IHsgaTogMTAwMCB9CisgICAgICAgICAgICB2YXIgZCA9IHsgaTogMTAwMDAgfQor
ICAgICAgICAgICAgdmFyIGUgPSB7IGk6IDEwMDAwMCB9CisgICAgICAgICAgICB2YXIgZiA9IHsg
aTogMTAwMDAwMCB9CisgICAgICAgICAgICB2YXIgZyA9IHsgaTogMTAwMDAwMDAgfQorICAgICAg
ICAgICAgdmFyIGggPSB7IGk6IDEwMDAwMDAwMCB9CisgICAgICAgICAgICB2YXIgaSA9IHsgaTog
MTAwMDAwMDAwMCB9CisKKyAgICAgICAgICAgIG11dGF0ZVRoZW0oYSxiLGMsZCxlLGYsZyxoLGkp
CisKKyAgICAgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisKKyAgICAgICAgICAgIGEgPSBiID0g
YyA9IGQgPSBlID0gZiA9IGcgPSBoID0gaQorICAgICAgICB9IGNhdGNoIHsKKyAgICAgICAgICAg
IGFzc2VydF9lcShhLmksIDEpCisgICAgICAgICAgICBhc3NlcnRfZXEoaS5pLCAxMDAwMDAwMDAw
KQorICAgICAgICAgICAgYXNzZXJ0X2VxKGcuaSwgNDIpCisgICAgICAgICAgICBjYXVnaHQgPSB0
cnVlCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNhdWdodAorICAgIH0KKyAgICBub0lubGlu
ZShkZWxldGVJdCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgMTAwMDAwOyArK2opIHsKKyAg
ICAgICAgYXNzZXJ0KCFkZWxldGVJdCh7IGosIGJhejogNSB9KSkKKyAgICB9CisKKyAgICBsZXQg
Zm9vID0ge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnYmF6JywgeworICAgICAg
dmFsdWU6IDQyLAorICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgIH0pOworCisgICAgYXNz
ZXJ0KGRlbGV0ZUl0KGZvbykpCit9Citub0lubGluZSh0ZXN0RXhjZXB0aW9uVW53aW5kKQorCisv
L2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisvLyAgICB0ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZCgpCisvLyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQorLy8gICAgdGVzdENh
Y2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisvLyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MoKQorLy8gICAgdGVzdERlbGV0ZUluZGV4KCkKKy8vICAgIHRlc3RQb2x5bW9ycGhpY0RlbEJ5
VmFsKGkpCisvLyAgICB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKQorLy8gICAgdGVzdFN5bWJvbERl
bGV0ZUJ5VmFsKCkKKy8vICAgIHRlc3RTdHJpY3QoKQorLy8gICAgdGVzdE92ZXJyaWRlKCkKKy8v
ICAgIHRlc3ROb25PYmplY3QoKQorLy8gICAgdGVzdE5vbk9iamVjdFN0cmljdCgpCisvL30KKwor
dGVzdEV4Y2VwdGlvblVud2luZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391360</attachid>
            <date>2020-02-20 17:33:31 -0800</date>
            <delta_ts>2020-02-21 14:35:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200220173330.patch</filename>
            <type>text/plain</type>
            <size>222117</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NDUzNDdkMTM3NWUxY2RmMzgwMWE4YjY4N2VlZDZhNzdjZGU3ZjY4Li4yOTZhY2UzMjY3N2MzNzY5
ZWRkZGY4NjUyZmMzZDhkYjhiODYzZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMS4yOHggZmFzdGVy
CisgICAgICAgIGRlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMgIChuZXV0
cmFsKQorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4gICAgICAo
bmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBBUEkv
SlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUZvcktleSk6
CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2sgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpk
dW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6bmV3U3RydWN0dXJl
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclNjb3BlOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToK
KyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGppdC9JQ1N0
YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRv
cjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVy
YXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQp
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcik6Cisg
ICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFibGVNaXNzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1cmFibGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxl
dGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZzZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNoaW5nKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVy
cm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5z
dGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8
VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRh
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OnZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1By
b3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
eW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpt
YXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0u
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTAyLTE5ICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBDb21wdXRlZCBQ
cm9wZXJ0aWVzIHdpdGggaW5jcmVtZW50IHNvbWV0aW1lcyBwcm9kdWNlcyBpbmNvcnJlY3QgcmVz
dWx0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBhNWNiYTJlMDUwY2M2OWY1ZDdkYzhhZmM4YmZjNzUzYmUwZWEzYTI5Li5kYzI0
YWE2MjRmMWQ3Y2ZjNzEwYWI0YTZiY2U3YTFjOWQzNWE3N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4K
KworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3BlY3RydW0uaDoKKyAgICAg
ICAgKFdURjo6U3BlY3RydW06OmFkZCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpnZXQgY29u
c3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YnVpbGRMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdURjo6U3BlY3RydW06OmNsZWFyKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OnJlbW92ZUlm
KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6U3BlY3RydW06OmVuZCk6IERlbGV0ZWQuCisKIDIwMjAtMDItMjAgIEppZXdlbiBUYW4gIDxq
aWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIFJlcGxhY2UgRGV2aWNl
SWRlbnRpdHkuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM4OTliNjU1NWM0Yzc1NTg2ZDZhMzFm
MWNiYmI1ZTA0ODc5MzkzYi4uNDk2YzBhM2EzNjhmNTQ0YjBiNjkyMzk1NjU4ZTFjOWU2OTQ3NjQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAyLTE0ICBKdXN0aW4gTWljaGF1
ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVs
ZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6ZGVs
ZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZW5lcmF0ZURlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9k
ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9i
alByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAg
ICAoLVtXZWJTY3JpcHRPYmplY3QgcmVtb3ZlV2ViU2NyaXB0S2V5Ol0pOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6
ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDIwLTAyLTIwICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XSBGaXggcmFjZSBpbiBUZXh0Q29tYmluZXJHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDE1ODQwMGFk
NjNjMmYwNzJkZmNlNjkyYmQwZWIyYTM4NGEwYTlmYS4uZTNhYjhlNmQ1YjAwYzIxZDJiYzk1MTIw
ZjJhODk1N2ZlYzliMzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0xNCAg
SnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5s
aW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KToKKwogMjAyMC0wMi0yMCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtDYWNoZSBz
aG91bGQgdXNlIDRLQiB0aHJlc2hvbGQgZm9yIG1tYXAtZWQgZmlsZXMgaW5zdGVhZCBvZiAxNktC
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmI2ZDY3YzQzYTUyZmY5OTcwNmViZTQ4
N2YxNmFjNmMyMDY5N2Q2ZS4uMjg2OTM1NDZiNTRkNjVhYWU4NTZlMDA3MGNlMWY2NzZhNzRlODFh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAy
LTE0ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtMZWdhY3lXZWJLaXRdIE92ZXJyaWRlIEVk
aXRvckNsaWVudDo6c2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMDM0
YjM1N2MwNzM4ZTM0OTEyNTg4NThkNzA2OTg5ZmVmY2I0ODMzZC4uOTJjYTkyNDc3OTYyYmMwNGM3
YThlYjg2YTFmNDE1ZDJiMTg3ZjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
IAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQpOwogCiAgICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCBjZDUxMWJm
ZDI4NGEwMTMyNTJhNjQwNWE2NzA3YWFkMTM3YTFiY2NiLi40YmVjMzNhNzJkYzI4NDc3YTYxMzU2
ZmRiOTIwYTQ3Njg2MmVkNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMzczLDcgKzM3Myw3IEBAIGJvb2wg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1ib29sIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDE4
LDcgKzQxOCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgpAQCAtNDI2LDcgKzQyNiw4IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBKU0NhbGxiYWNr
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKLSAg
ICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkp
OworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CmluZGV4IGY3ZjlkYWIzZjI4YWRjMGVhYmIyYmRlOGIyNTA2NzcyYWQyNWZmY2UuLjlkZjg3OGU1
ODhmYTJhZWYwNjIyYWM2OTU4NzgxYWJlNjdhMzdlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC00NzksNyArNDc5LDggQEAgYm9vbCBKU09iamVjdERl
bGV0ZVByb3BlcnR5Rm9yS2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwg
SlNWYWx1ZVIKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhj
ZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsK
ICAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC01MzQsNyArNTM1LDggQEAgYm9vbCBKU09iamVjdERlbGV0
ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdS
ZWYgcHIKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKIAotICAgIGJv
b2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLT5pZGVudGlmaWVyKCZ2bSkpOworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLT5pZGVudGlmaWVyKCZ2bSksIHNsb3QpOwogICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5MWU0MjdjMzBjNTExNjNlZGQ5ZjEw
NmQ0MmY5NWUwOWQwMmJlOWM0Li43NTU2ZTk1NmZjNjMyZjdlMmI5ZDBlMWFkYmY3Y2E4MWY4ZThm
MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MTUsNiArODE1LDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50
aW1lL0RhdGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCiAgICAg
cnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAorICAgIHJ1bnRpbWUvRGVsZXRlUHJv
cGVydHlTbG90LmgKICAgICBydW50aW1lL0RpcmVjdEFyZ3VtZW50c09mZnNldC5oCiAgICAgcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9EaXNhbGxvd1Njb3BlLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWY0MmMyYWU4ZmU1OTJiZjZkNjgyODUz
ODk3NmQwY2Y2ZGE2ZGIxZi4uZmI3NDU2NTE3ZjhmNzRjNjlmMWM5ZDViZGMyMDJjNGY2ZTQ0MTg1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzgsNiArMTE3OCw3IEBACiAJ
CTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDEx
QUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVB
MjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8q
IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVs
ZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzNFMzc5
OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1
NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJF
OTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250
ZXh0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1
MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zOTcxLDYgKzM5NzIsNyBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0
NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MzRCNjU1NDIz
RjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5n
dGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5n
dGguaDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJl
bmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxv
b3BTdHJlbmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01v
ZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA4NCw2ICs3MDg2LDcgQEAK
IAkJCQlCQ0QyMDM0NzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQkNEMjAzNDgwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKIAkJCQkx
Njk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8s
CisJCQkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICov
LAogCQkJCTBGRTA1MDBGMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwICov
LAogCQkJCTBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuaCAqLywK
IAkJCQkwRkUwNTAwRDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNw
cCAqLywKQEAgLTkyMDksNiArOTIxMiw3IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3
IC8qIERlZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRD
NDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAv
KiBEZXN0cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0E0MjNFMTdBMEJCRkQw
MEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTAz
MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNjYyLDcgKzEwNjY2LDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0
ZXMgPSB7Ci0JCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOwogCQkJ
CURlZmF1bHRCdWlsZFN5c3RlbVR5cGVGb3JXb3Jrc3BhY2UgPSBPcmlnaW5hbDsKIAkJCQlMYXN0
U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDEwMDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMmFm
NDgwYTljZTdkODAyNWNlNTg4M2Q4YWRmOWM5ODQyNjliYTk3NS4uOGVkZTI4NDhkMmM5YWY5ZWYz
OGI2NGE2NDM5OWZiMTIxYjllNjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNzMsNiArNzMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2FzZSBJbk1p
c3M6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNz
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5n
TGVuZ3RoOgpAQCAtMTA2LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKQEAgLTEy
Myw2ICsxMjUsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3ND
YXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAor
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKKyAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09IG5l
d1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAg
ICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVs
b3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdTdHJ1Y3R1
cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisgICAgICAg
IGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsg
fSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2
ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgp
IGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEg
YnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRpZmll
ci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFj
ZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5
IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBjb25zdAog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlv
bjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAg
ICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAg
ICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpu
ZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0
LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoK
ICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgor
ICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAg
ICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAt
NDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9y
PEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBDdXN0b21B
Y2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAg
Y2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoKICAgICBj
YXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBj
YXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5UHJv
dG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJh
bnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50
ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0dXJlKQog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAo
bV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6
OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogCiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobV9zdHJ1
Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgsNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAg
ICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChz
cGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkg
ewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAgICAgdmFsdWVSZWdz
LApAQCAtMTg5Niw2ICsxOTMzLDcxIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
bG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhc2UgRGVs
ZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1Yklu
Zm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VS
ZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgICAgICBhbGxv
Y2F0b3IubG9jayhiYXNlR1BSKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7
CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+aXNQcm9w
ZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gdmFs
dWVSZWdzLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gc2NyYXRjaEdQUik7Cisg
ICAgICAgIEFTU0VSVCh2YWx1ZVJlZ3MuZ3ByKCkgIT0gc2NyYXRjaEdQUik7CisKKyAgICAgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9
CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmco
aml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNw
YWNlKTsKKworICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgYm9vbCBo
YXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIo
bWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2Fz
ZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgorICAgICAg
ICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5LgorICAgICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2VsbCk7CisgICAgICAg
IC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5jZSBv
dXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1Y3R1
cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdIZWFk
ZXI7CisKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CisKKyAg
ICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSkgeworICAgICAg
ICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdzLnBh
eWxvYWRHUFIoKSwgYmFzZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZzZXQo
bV9vZmZzZXQpKSB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAg
ICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAg
ICAgICAgICAgICAgICAgICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAgICBKU09iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAgICBvZmZzZXRJbklu
bGluZVN0b3JhZ2UobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5
KG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisKKyAgICAgICAgdWlu
dDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3RydWN0dXJl
KCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAg
ICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVn
cy5wYXlsb2FkR1BSKCkpOworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0
ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3Vy
YWJsZTogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGZh
bHNlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlzczogeworICAgICAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3Mu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCmluZGV4IDc5ZDMxMDE1NWU5M2E1NDUzZDI4NjFjNDMyMjdiYTNiYWMxOWYy
NzcuLjEwOGZlZjNiMzMwMTJjZjRlN2RiMjdlMjBhNjI2MDIwNzg1ZDIxNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUsNiArODUsOSBAQCBw
dWJsaWM6CiAgICAgZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExvYWQsCiAg
ICAgICAgIFRyYW5zaXRpb24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAgRGVsZXRlTm9uQ29u
ZmlndXJhYmxlLAorICAgICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBsYWNlLAogICAgICAg
ICBNaXNzLAogICAgICAgICBHZXRHZXR0ZXIsCkBAIC0xNDUsOSArMTQ4LDExIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2Vs
bCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCks
IHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gPSBudWxscHRyKTsKIAotICAg
IC8vIFRoaXMgY3JlYXRlIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBmb3IgdHJhbnNpdGlvbnMuCi0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAor
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0x
NTcsNyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25z
dAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQorICAgICAgICBpZiAo
bV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAgICAgICAgICAgIHJl
dHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpOwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1
cmUuZ2V0KCk7CiAgICAgfQpAQCAtMTY1LDcgKzE3MCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gVHJhbnNpdGlvbik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBt
X3R5cGUgPT0gRGVsZXRlKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHAKaW5kZXggMTMyNDA5YzBhNDUxMGJkZmE4ZWNlMzNiNzQzNDcxNjAyZDdiMGU3
OS4uYjE2NmMzMGMxOGE1MjNhNzYyNWYzOWFmNmI3ODk1MDY3YWE1ZjBjZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBA
IC03OTUsNiArNzk1LDE1IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBB
Y2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGUpCiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpUcmFuc2l0
aW9uOgogICAgICAgICBvdXQucHJpbnQoIlRyYW5zaXRpb24iKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZSIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1
cmFibGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlTm9uQ29uZmlndXJhYmxlIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3M6CisgICAgICAgIG91
dC5wcmludCgiRGVsZXRlTWlzcyIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBY2Nlc3ND
YXNlOjpSZXBsYWNlOgogICAgICAgICBvdXQucHJpbnQoIlJlcGxhY2UiKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKaW5kZXggNjE3ODczN2Y5ZjhhOWNkMGI2ZGRhZDU3ZjFjZjEyZWZlNGZjYTcw
NS4uOTZhMWJhZWNiZTRjYmJiNzZkYmRlZGE4MDU2NWEyYzU5ODY1NTIyYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBA
IC0yNzYsNiArMjc2LDEyIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrKQogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAgICAgICAg
cmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpEZWxldGVCeUlEOgorICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERl
bEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpE
ZWxldGVCeVZhbDoKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtp
bmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIGRlcmVm
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oCmluZGV4IGRkY2U4NWVjMDI1NTU3NmM5ZTM0NTFmNjQ3MzZkMTJjMzg5NDI4MDMuLmI1
NzViZGQyMTYxOWMyZGZlNGYxODJmYWVkOTBmMjY4ZTllMjYxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01NSw3ICs1
NSw5IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAgR2V0QnlWYWwsCiAg
ICAgUHV0LAogICAgIEluLAotICAgIEluc3RhbmNlT2YKKyAgICBJbnN0YW5jZU9mLAorICAgIERl
bGV0ZUJ5SUQsCisgICAgRGVsZXRlQnlWYWwKIH07CiAKIGVudW0gY2xhc3MgQ2FjaGVUeXBlIDog
aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmNwcAppbmRleCAyNmUyODI5MzllOWFjYTg4NjVjMjIxNzczYzJhNDFlMDI4MDk0ZGRhLi40
OGI1Yjg2ZmE0YjllODY1ZWE0OGRjOTlhNDkzYmQ5NDhkMDc0ZjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC0xMjksMTQgKzEy
OSwxNCBAQCBib29sIERlYnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBEZWJ1Z2dlclNjb3Bl
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERlYnVnZ2VyU2NvcGUqPihjZWxsKTsKICAg
ICBBU1NFUlQoc2NvcGUtPmlzVmFsaWQoKSk7CiAgICAgaWYgKCFzY29wZS0+aXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBKU1Njb3Bl
OjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBEZWJ1Z2dl
clNjb3BlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJTY29wZS5oCmluZGV4IGZmNGNlMWIxZGE0YjU3OTBkZThhZDk4OGE3MWY2MDJjZGYyNjE2
NzQuLjQzMjdjMWYwMmM2OTI3ODQ1MDhlMGE5YTFhMjE0OTc3NWVkZDgwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtNTEsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3ZmZhMzhlNjZkMmUwOGQ3NDU5ODliZDYxMjlkYmVh
YTBmYTBkMDdiLi5mYjFhYTUyMGQyNDUzODI2MDQ3MjEwYjM4MzI4OWZhYzNjNWY1NmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2MTgsNiAr
MTYxOCwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIERlbGV0ZUJ5VmFsOiB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkt
PnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBEZWxldGVCeUlkOiB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIEJ5dGVDb2RlUGFyc2Vy
IGJhc2VkIG9uIHJlYWRpbmcgdGhlCkBAIC0yNTE4LDggKzI1MzAsNiBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0
b3I6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6Ci0g
ICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoK
ICAgICAgICAgY2FzZSBJc0VtcHR5OgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlM2UyMDhkMmRh
MWNkNzM5YmZhY2M4YzM0YzU0OTdjYzU2MmRiOTM2Li4zODcxNTkxNzg5MDMxMjBhNjEyNjQ1ZTRh
MjM0MzUxM2JhNWRiZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcApAQCAtMjQ2LDYgKzI0Niw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRz
V2l0aFRoaXMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlW
YWxzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBs
aW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRzLCBsaW5rQnVm
ZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgbGlua0J1ZmZlcik7
CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBsaW5rQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVmZmVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ4ODA4NzRjMjg1YWI3
ZDQ0N2ViODkzYTZlOGI0YmJmMDEwNzMxZDQuLjJmYjZhZDhmNjJmOTVhMjZlNmNkYjgyNmFhNmQx
Y2Q2N2YxOTQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKQEAgLTE5MSw3ICsxOTEsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9wdXRCeUlk
cy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xv
d1BhdGgpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFkZERlbEJ5SWQoY29uc3QgSklURGVs
QnlJZEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCisgICAgewor
ICAgICAgICBtX2RlbEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlJZEdl
bmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKworICAgIHZvaWQgYWRkRGVsQnlWYWwo
Y29uc3QgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQ
YXRoKQorICAgIHsKKyAgICAgICAgbV9kZWxCeVZhbHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBl
cjxKSVREZWxCeVZhbEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwogICAgIHZv
aWQgYWRkSW5zdGFuY2VPZihjb25zdCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBnZW4sIFNsb3dQ
YXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIG1faW5zdGFuY2VPZnMuYXBw
ZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPihnZW4sIHNsb3dQ
YXRoKSk7CkBAIC0zNDgsNiArMzU4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlJZHNXaXRo
VGhpczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5VmFsR2VuZXJhdG9y
PiwgND4gbV9nZXRCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRQdXRC
eUlkR2VuZXJhdG9yPiwgND4gbV9wdXRCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFw
cGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5SWRzOworICAgIFZlY3RvcjxJbmxp
bmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5VmFsczsKICAg
ICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5C
eUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanND
YWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggNjQyYjE2MzU2ZjkwZTljMzg2MDJlYmM1N2ZkOWUwNGEwZjQ1YjUyOC4uNTUyZWVj
YmNiNTlhYjZjZWVkYTUyZTdkMDJiNTc5ZTRiMjVmNmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExNDcsMzkgKzExNDcsODQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkKIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHsKLSAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDEoKSk7CiAKLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIGF1dG8qIHByb3BlcnR5ID0gaWRlbnRp
ZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1
ZVJlZ3MoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIHZhbHVlLnVzZSgpOworICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKIAotICAgIGZsdXNo
UmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJV
SUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOwogCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVz
ZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4o
CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CisKKyAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIHByb3BlcnR5KTsKKworICAgIG1faml0LmFk
ZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
V1RGTW92ZShzbG93UGF0aCkpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwo
Tm9kZSogbm9kZSkKIHsKLSAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBzcGVjdWxhdGUobm9kZSwg
bm9kZS0+Y2hpbGQxKCkpOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisK
KyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5v
ZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFz
ZS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXkuanNWYWx1ZVJl
Z3MoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIGJhc2UudXNlKCk7Ci0gICAga2V5LnVz
ZSgpOworICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsK
KyAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIAotICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZh
bCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGtleVJl
Z3MpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUg
PSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0
SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAotICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVn
cywga2V5UmVncywgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKworICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUsCisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgYmFzZVJlZ3MsIGtleVJlZ3MpOworCisgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRk
MzQyN2JjODJlOGM5YjI0N2FjODcxYTAyMDAwMWJiMjM4MjlmMjYuLmI4OGYzZGE1YzAwYWU5M2I3
MzE4NGIzNzBiMzQ4YTZkZDcyZDQxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTUxNDQsMjAgKzUxNDQsMTY4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBzdWJzY3JpcHQsIG1f
b3V0LmNvbnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsK
ICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxEZWxCeUtpbmQga2luZCwgdHlwZW5hbWUgU3Vic2NyaXB0
S2luZD4KKyAgICB2b2lkIGNvbXBpbGVEZWxCeShMVmFsdWUgYmFzZSwgU3Vic2NyaXB0S2luZCBz
dWJzY3JpcHRWYWx1ZSkKKyAgICB7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dDsKKyAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7Cisg
ICAgICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisgICAgICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShiYXNlLCBWYWx1ZVJlcDo6
U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGF0Y2hw
b2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIp
KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKHN1YnNj
cmlwdFZhbHVlLCBWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICB9CisgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKwor
ICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxl
ID0KKyAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKKworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgTm9kZSog
bm9kZSA9IG1fbm9kZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAg
ICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXggPQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29t
bW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAg
ICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KKyAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihw
YXJhbXMpLT5qdW1wcyhqaXQpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3Qgc2xvd0Nhc2VzOworCisgICAgICAgICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9IHBhcmFt
c1swXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSByZXR1cm5H
UFIpOworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHBhcmFtcy5ncFNjcmF0
Y2goMCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2Ny
YXRjaCgwKSk7CisKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0
LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CisKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIgYXV0
byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IFsmXSAoKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemU7CisgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAg
IGNvbnN0IGF1dG8gc3Vic2NyaXB0ID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29u
c3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGJhc2UuZ3ByKCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAg
Y29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25z
dGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm5HUFIsIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRv
cj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIHJldHVybkdQUiwgcGFyYW1zLmdwU2NyYXRj
aCgwKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOworICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisg
ICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKAorICAgICAgICAgICAgICAgICAgICBb
PV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5j
dGlvbiwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25l
LCAmaml0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93
UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmFkZExpbmtUYXNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZmZXIsIGxpbmtCdWZmZXIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHBhdGNocG9p
bnQpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeUlkKCkKICAgICB7Ci0gICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgYXV0byB1aWQgPSBtX2dyYXBoLmlkZW50
aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwotICAgICAgICBzZXRCb29sZWFu
KG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5SWQsIHdlYWtQ
b2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKHVpZCkpKSk7Cisg
ICAgICAgIExWYWx1ZSBiYXNlOworCisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBiYXNlID0g
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUs
ICJCYWQgdXNlIGtpbmQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBjb21waWxlRGVsQnk8RGVsQnlLaW5kOjpOb3JtYWw+KGJhc2UsIG1fZ3JhcGguaWRlbnRpZmll
cnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV0pOwogICAgIH0KIAogICAgIHZvaWQgY29t
cGlsZURlbGV0ZUJ5VmFsKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0g
ICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
RGVsZXRlQnlWYWwsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHN1YnNjcmlwdCkp
KTsKKyAgICAgICAgTFZhbHVlIGJhc2U7CisgICAgICAgIExWYWx1ZSBzdWJzY3JpcHQ7CisKKyAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgICAgIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFVudHlwZWRV
c2U6IHsKKyAgICAgICAgICAgIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxk
MigpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgICAgIHN1
YnNjcmlwdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgc3Vi
c2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBjb21waWxlRGVsQnk8RGVsQnlLaW5kOjpOb3JtYWxCeVZhbD4oYmFz
ZSwgc3Vic2NyaXB0KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlQdXNoKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1YjRhZGU0NDRj
NDNmNWFkZGYyMzE3ZjQyNjViNy4uOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2
YzE0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTcwLDcgKzcwLDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBt
YWNybyhQdXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRj
aCkgXAotICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkKKyAgICBtYWNybyhJbkJ5SWRTZWxmUGF0
Y2gpIFwKKyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoSnVtcCkgXAorICAgIG1hY3JvKERlbEJ5
UmVwbGFjZVdpdGhHZW5lcmljKQogCiBjbGFzcyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCAwOTFjNGY3ODJhMDc4NGZjNDUyNWVkMjA3OTY5Y2QxYjc4
NzQ0ZTg2Li5jNmU2MWI4OWJmOWExYTE5NWMzZTgzODY0YzFjYTE3ODQwOGE1YjBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01MDAsNiArNTAwLDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID0gMDsKICAg
ICBtX3B1dEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbkJ5SWRJbmRleCA9IDA7CisgICAgbV9kZWxC
eVZhbEluZGV4ID0gMDsKKyAgICBtX2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9m
SW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxM
aW5rSW5mb0luZGV4ID0gMDsKQEAgLTU4MCw2ICs1ODIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lk
KQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2Rl
bF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlfaWQpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2dldF9mcm9tX3Njb3BlKQpAQCAtODc1LDYgKzg3OSw4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeVZhbHMsIHBhdGNoQnVm
ZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5SWRzV2l0aFRoaXMsIHBhdGNo
QnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1dEJ5SWRzLCBwYXRjaEJ1ZmZl
cik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxCeUlkcywgcGF0Y2hCdWZmZXIpOwor
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAg
ZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAppbmRleCA3YjQ0MDc0OTYzMzM2ZmNiODk0MWViZDA1YjU5NzMxMjlhOWU4NjU1
Li42NzE2NjYxZGY0ZmFjZWE1ZWZlZDVmNTEwODFmMDU5YjZkMjUzZDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKQEAgLTUwMCw3ICs1MDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Vu
dGVyKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC05MTMsNiArOTE1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJ
ZHNXaXRoVGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJ
ZHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlkczsKKyAgICAg
ICAgVmVjdG9yPEpJVERlbEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CisgICAgICAgIFZlY3Rv
cjxKSVREZWxCeVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJ
bnN0YW5jZU9mR2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOwogICAgICAgICBWZWN0b3I8QnlWYWxD
b21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZlY3RvcjxD
YWxsQ29tcGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CkBAIC05MzQsNiArOTM4
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlz
SW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJ
TlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5CeUlkSW5kZXggeyBVSU5UX01BWCB9Owor
ICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1
bnNpZ25lZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1f
aW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9ieVZhbElu
c3RydWN0aW9uSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5r
SW5mb0luZGV4IHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOTIwYjcyMDNlM2NmNGJmMDZl
ZWQ0NTczYTM5Y2I1NmJjY2E2NWQ1YS4uYjBhZDYzYmM1MTFjMjc1NTQzNzcxMjBhNDhmZmYzNjJi
ZDE1NWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTE2Miw2ICsxNjIsNjggQEAgVl9KSVRPcGVyYXRpb25f
R1NzaUpKSSBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOwogfQogCitKSVREZWxCeVZhbEdl
bmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1
c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9
IGZhbHNlOworICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1f
c3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5y
ZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8t
PnZhbHVlR1BSID0gcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdH
UFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBw
cm9wZXJ0eS50YWdHUFIoKTsKKyNlbmRpZgorICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMu
Y2xlYXIoc2NyYXRjaCk7Cit9CisKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVs
KCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9u
ZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6
ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7Cisg
ICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAg
IGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0
clRhZz4obV9zdGFydCkpOworfQorCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEpTVmFsdWVSZWdzIGJhc2UsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorICAgIDog
QmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRl
bGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJ
ZGVudGlmaWVyID0gdHJ1ZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0
KTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9z
dHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5m
by0+dmFsdWVHUFIgPSByZXN1bHQ7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJ
bmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRh
Z0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9
IEludmFsaWRHUFJSZWc7CisjZW5kaWYKKyAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNs
ZWFyKHNjcmF0Y2gpOworfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7
CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9
IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAor
ICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBB
U1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFz
dFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihtX3N0YXJ0KSk7Cit9CisKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGJmYjkwMjE2YjI5YzI3ZmZkMGVkOGQ3ZjBmNTg3ZTA4
ZmU2ZTczMTYuLjI2ZTcwMGZiYjdhZDE4M2JlMWFjYmE3M2YzN2Y2ZmI0MmZlZmNkMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKQEAgLTE0Miw2ICsxNDIsNTYgQEAgcHJpdmF0ZToKICAgICBQdXRLaW5kIG1fcHV0S2luZDsK
IH07CiAKK2NsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7Citw
dWJsaWM6CisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5VmFs
R2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNo
KTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAg
ICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxp
emUoCisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYg
c2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0
OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsK
KworY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGlj
OgorICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhK
dW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVt
cDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVmZmVyJiBmYXN0
UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CisKKyAgICB2
b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0ZToKKyAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5lcmF0
b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IGUzNjI2NzMyNWM3NGFlMjJmODYxOGVhOWUyYWQwMDJlNDhkYzYzMzQuLjdiZGYxZjczMmJm
NGUwNWQ5Yjg1Njk2ZWY0Njg0N2YzYjU2MTA3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjE0Miw3ICsyMTQyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVjdC0+
aGFzUHJvcGVydHlHZW5lcmljKGdsb2JhbE9iamVjdCwgaW5kZXgsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KICAgICAKLXN0YXRpYyBib29s
IGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc3Rh
dGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUg
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxNTAsMzEgKzIxNTAsNTEgQEAgc3RhdGljIGJvb2wg
ZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgVk0mIHYKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAg
aWYgKCFiYXNlT2JqKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpKTsKKyAgICBib29sIGNvdWxk
RGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2Jq
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCksIHNsb3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVsZXRl
ICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJy
b3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotCi1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpKSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpOwor
CisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2
bSwgc2xvdCwgYmFzZVZhbHVlLCB1aWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7Cisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgdWlkKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisKKyAgICAgICAgaWYgKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAg
ICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
KyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ss
IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERl
bEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwotICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2
bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CiB9CiAKLXN0
YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkpCitzdGF0
aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUg
YmFzZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCkBAIC0yMTkwLDcgKzIyMTAsNyBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAg
ICAgZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkgPSBrZXkudG9Qcm9wZXJ0eUtl
eShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgY291
bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKQEAgLTIxOTgsMjAgKzIyMTgsNDIgQEAg
c3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCAg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtleSkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeVZh
bChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSkpKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRTdWJzY3JpcHQpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7
CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vi
c2NyaXB0KSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGlmIChzdWJzY3JpcHQu
aXNTeW1ib2woKSB8fCAhcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAg
ICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUu
c3RydWN0dXJlT3JOdWxsKCkpKQorICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxCeShnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRLZXkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4g
ZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkpOwog
fQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRK
U1ZhbHVlIG9iamVjdFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCA2MjEwYzVhMDczNDE5NjgzZDYwZWE4YzQ4Y2Q0M2VlZmY4MmEzMDBjLi42MDBm
Y2EyOWRjMjAzODVkYzUwMjIyODAyNTQxMTJjYWMzMWQ2ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1zaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQp
IFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFy
Z2V0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVC
eUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CitzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVu
Y29kZWRKU1ZhbHVlIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUyZjcxM2U4YWEwYWZiNWU4MDVj
N2NmM2YxZDM4ODM3MWMyZjYuLjJiYTBmYTY4NDhiY2U4MjlhY2Q2NDE5MDVmMDVmNGJkNTRkY2Jl
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCkBAIC0zODcsOSArMzg3LDM5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4o
CisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QwLCByZWdUMik7Cisg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJvb2xl
YW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9k
ZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxC
eUlkPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSku
aW1wbCgpOworCisgICAgSklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1ttX2Rl
bEJ5SWRJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJv
cGVydHkpLmltcGwoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCB1aWQpOworICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVl
UmVncyhyZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zOTgsOSArNDI4LDQyIEBAIHZvaWQg
SklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MSwgYmFzZSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOwor
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOworICAgIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJl
Z1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMCwgcmVnVDIpOworICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1
ZVJlZ3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDAp
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRjOGJk
YWVlZjE0Yy4uYjY2OWRkOGI3YWQyNmQzZjc3ZDk2ODZkZTYwODM0MzRmMzZkYmM1MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC0xMjMsNyArMTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9w
ZXJ0eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZp
ZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eUlkR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1w
bCgpKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsK
KyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEzMyw5ICsxMzUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJhc2Us
IHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJl
Z1QyKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKSB7IH0KK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9CisKIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdl
dEJ5VmFsPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTE4MjA0
MTU1NGJkYzc2YzE5MWNiMTM4NWQxM2E5YzgxZmZkNDVlYi4uYmU3NTAxZWYyMmMxODMzZTRmYjdm
MDZhOWFiZTNhYWIwNzZlZGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nhc2Ug
PSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3Ry
dWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpOworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3
U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9t
KCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZUN1c3RvbSgpKSB7CkBAIC03MzQsNiArNzM0LDcyIEBAIHZvaWQgcmVwYXRjaFB1
dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5j
dGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZURlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisKKyAgICB7
CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2ssIGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKworICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1
cmUoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisg
ICAgICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpIHx8ICFvbGRTdHJ1Y3R1cmUgfHwgIW9sZFN0
cnVjdHVyZS0+aXNPYmplY3QoKSB8fCAhb2xkU3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAg
ICBpZiAoIXNsb3QuaXNDYWNoZWFibGVEZWxldGUoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNl
OworCisgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKKyAgICAgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG5ld09mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCk7Cisg
ICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmV0
cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5QWNj
ZXNzZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNTRVJUKG5l
d09mZnNldCA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgQVNT
RVJUKGlzVmFsaWRPZmZzZXQobmV3T2Zmc2V0KSk7CisgICAgICAgICAgICBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKHZtLCBjb2RlQmxvY2ssIENhY2hlYWJsZUlkZW50aWZpZXIo
cHJvcGVydHlOYW1lKSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzbG90LmlzTm9uY29uZmlndXJhYmxlKCkpCisgICAgICAgICAgICAgICAgbmV3Q2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVO
b25Db25maWd1cmFibGUsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxp
ZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9j
aywgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzcywgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5h
bWUpLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAg
IH0KKworICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgY29k
ZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChy
ZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFj
ZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWUpKTsKKyAg
ICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKHZt
LCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdC5zaG91
bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7Cit9CisKK3Zv
aWQgcmVwYXRjaERlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNo
ZURlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgewor
ICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFs
dWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIHByb3BlcnR5TmFtZSkpOwor
ICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgIH0KK30KKwog
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkBAIC0xMzkxLDYgKzE0
NTcsMTUgQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAo
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKK3ZvaWQgcmVz
ZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkK
KyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgZWxz
ZQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOworfQorCiBzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDZmMGYyNjQxMWVjZGVh
MTkyYjcwNjIxMGU4YTk5NDRiYjRmOWZlMzkuLmMxZDk5NTlhZGFmZDM2NTc2MmU4OTE3OWFiM2Mw
ZWVkNjZlNTg3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC00MSw5ICs0
MSwxNSBAQCBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CiAgICAgRGlyZWN0CiB9OwogCitlbnVtIGNs
YXNzIERlbEJ5S2luZCB7CisgICAgTm9ybWFsLAorICAgIE5vcm1hbEJ5VmFsCit9OworCiB2b2lk
IHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNo
R2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2lu
ZCk7CiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNW
YWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xv
dCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7Cit2b2lkIHJlcGF0Y2hEZWxCeShKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2lu
ZCk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09i
amVjdCosIGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNs
b3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBT
dHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2Fs
bEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTUzLDYgKzU5LDcgQEAgdm9p
ZCB1bmxpbmtGb3IoVk0mLCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2Fs
bChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50
KTsKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5
S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owordm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlL
aW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
IHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQ
dHJUYWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4
IDIyNTRmY2M0Mjk2MTdjZTgzOTdkMjRlNTUwZTFhY2VjNjdiNjE0NDMuLmZhY2E3YmY0ZTE3OGQ0
MjVmZmJlZmZlOTU0ZThmMzFlYjAwMjA2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtOTI1LDcgKzkyNSw4IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcERlbEJ5SWQ+KCk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBnZXRPcGVyYW5kKGNh
bGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSwgc2xvdCk7CiAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKQEAgLTExMDgsNyAr
MTEwOSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1
YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAppbmRleCBmZmIzZWI5ZDAwNWNmNmZk
MDhmZmQyYmI4OGI5ZDU4N2JhZWQwZmY2Li4xMDdiNWQ2MDcyMDM3MDUxZjZhN2MxZTljYjBjMTVm
MjY1ODk3OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWFibGVJZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTQyLDYgKzQyLDcgQEAgaW5saW5l
IENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKIAogaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlk
ZW50aWZpZXIoSlNDZWxsKiBpZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc0NhY2hlYWJsZUlk
ZW50aWZpZXJDZWxsKGlkZW50aWZpZXIpKTsKICAgICBzZXRDZWxsQml0cyhpZGVudGlmaWVyKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBmZTZj
NmI3ZDg0YzQ3ZWRlZTExYWFjMTFmNjQ4NGE3MmQ0MTdiYzQ2Li43YTU5YjhmZGIwYzIyY2NiYmQy
OGQ4MDMxZGE4YTE3ZWUwNTM3MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaApAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVz
aW5nIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
ICAgICBQdXRCeUluZGV4RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHB1dEJ5SW5kZXgp
OwogCi0gICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICB1c2luZyBEZWxldGVQcm9w
ZXJ0eUZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIERlbGV0ZVByb3BlcnR5RnVuY3Rp
b25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRlbGV0ZVByb3BlcnR5KTsKIAogICAgIHVzaW5nIERl
bGV0ZVByb3BlcnR5QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmNwcAppbmRleCA5NmEzNjM1ZTY4MjczOTNlZTgzNmQ4MDQ3Nzcy
NGEyNWQ1NDZjMjYxLi5mNjk5OWU3MzQ4NGUyYWJkODgxNDU0ZjExNDgzMTBjMDJkNGYyYTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogICAgIHJldHVy
biBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3Qp
OwogfQogCi1ib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCitib29s
IENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q2xv
bmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpA
QCAtMjI5LDcgKzIyOSw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHx8IGlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2Jq
ZWN0LT5tYXRlcmlhbGl6ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZ2xvYmFsT2JqZWN0KTsKICAgICAK
LSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpZGVudCk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Nsb25lZEFyZ3VtZW50cy5oCmluZGV4IGZkM2EyN2JmNzM1NTRkNWVlNGE2ZTMxZDBiYTBj
YWQxNTc2MDVmZjUuLjAwYzUzNDc1NjA1YTczYjJiM2ViMzhkM2NmODEzMjg4MzRmZjFiYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBA
IC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCiAgICAgYm9vbCBzcGVjaWFsc01h
dGVyaWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMGUyYmMzYTI3
MTljMmE5MzUzZTdkNzUyMWE4NzliZDEyZDc0MDA2OS4uMWRlODIzOTUwOWUwYzhkN2E1NmEzMjQx
NGZmZThhNzRhOWI3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC05ODUsNyArOTg1LDggQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpCiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAg
ICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZmNmI0ODAwZWY1
Nzg1NjFjYWVkYzlkZGJiYzgyZjI1MzJlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApAQCAtMCwwICsxLDgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNs
b3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Qg
eworcHVibGljOgorICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hlYWJsZSwgRGVsZXRl
SGl0LCBDb25maWd1cmFibGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUgfTsKKworICAgIERl
bGV0ZVByb3BlcnR5U2xvdCgpCisgICAgICAgIDogbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKKyAg
ICAgICAgLCBtX2NhY2hlYWJpbGl0eShDYWNoaW5nQWxsb3dlZCkKKyAgICAgICAgLCBtX3R5cGUo
VW5jYWNoZWFibGUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlTWlz
cygpCisgICAgeworICAgICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxldGVNaXNzOworICAg
IH0KKworICAgIHZvaWQgc2V0Tm9uY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAgICAgIG1fdHlw
ZSA9IE5vbmNvbmZpZ3VyYWJsZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhpdChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCisgICAgeworICAgICAgICBtX3R5cGUgPSBEZWxldGVIaXQ7CisgICAgICAg
IG1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKworICAgIGJvb2wgaXNDYWNoZWFibGVEZWxldGUo
KSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBVbmNhY2hlYWJsZTsg
fQorICAgIGJvb2wgaXNEZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRGVsZXRl
SGl0OyB9CisgICAgYm9vbCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsgfQorICAgIGJvb2wgaXNOb25jb25m
aWd1cmFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmlndXJhYmxlOyB9CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fb2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQorICAg
IHsKKyAgICAgICAgbV9jYWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dlZDsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVh
YmlsaXR5ID09IENhY2hpbmdBbGxvd2VkOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKKyAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OworICAgIFR5cGUgbV90eXBl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGYxODIxZDU1NmEzZDQwNDQ5MzY3
NWVhZTI1ZmEyZTQ2NjczZWM0M2EuLjY4NWM3YWNiYzExYzYyZDIzMzc3ZDMyYzRkZTlhMjBiNjU4
NzhhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8RXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpAQCAtOTUsNyArOTUsNyBAQCBib29sIEVy
cm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+c3RhY2tUcmFjZUxpbWl0KQogICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDkzZDUyNzE0
ODZmNjZmZGU3NTNlNDlhNDAxNmYxNjgzOGU5NzU3MjEuLjlhNWE0NjMyMWIzZGJiNzY0YzJhMWI1
MjFkOTI2OGY4ZDE0MzUzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAKaW5kZXggZmQ0OGJiZjM0YzMwNDMwZDJlNzBkZTU3NDk4ZTliNTFlNmFjMjQ0ZC4uMWQ1
MGNkMTc0ZmM0N2Q5MjIxNzE4OGUzMjVmZjU3YWU4ZDE1YjgxYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5NywxMiArMjk3LDEy
IEBAIGJvb2wgRXJyb3JJbnN0YW5jZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29s
IEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JJ
bnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9ySW5z
dGFuY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNlbGwpOwogICAgIHRo
aXNPYmplY3QtPm1hdGVyaWFsaXplRXJyb3JJbmZvSWZOZWVkZWQodm0sIHByb3BlcnR5TmFtZSk7
Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aAppbmRleCBmMWZhYzU5NjgyZDllMDI2NTA4Y2I0ZmY4YzliMjY3YjRlZTc2ZTg3Li40MDA2MDhk
MDhhODM0Y2QzMWU2MTJlNzNhYjUzMWNiMGEzY2ExMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCBjb21wdXRlRXJy
b3JJbmZvKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHMuaAppbmRleCBjZTEwZjdmZTQ4NzNlNGE0N2JlMTQxZTI1NTY5YWQ2NDhhZmY5
ZDI4Li40NzEyMTY3MzAzNjQ4MjhmZTI3NzBlMjM0ODY5YWNlNzA5MDhkMWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC01MCw3
ICs1MCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMxYmI0MzBmNmQ1OGIx
ZDViMTE1ZGE1MTNjNWJjYzBiZjUzLi5hNWE5ZWNiMzIyYTIwZGE4ZmUyNDMzZmZkNTQ3YTc4YWZj
NjAyY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAgYm9vbCBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm8KICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpw
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CkBAIC0xNTgsNyAr
MTYwLDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4KLWJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQp
Citib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxU
eXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDcg
KzE3Nyw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbmRleCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5oCmluZGV4IDAzNDg3ZjYxZTBmMmZjNzUxYmE3MDNiNzBjYTM2ZDAyMjIxNjM0ZGUu
LjYwMWYxZTQ5ZjE1Y2Q1MDFhMGUwYTc1ZWUyODUwNmYzMmIwZGIzYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xMjcsNyArMTI3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jikg
eyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0
ZToKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA2ZDA3NTkxNzExZWVkYmMyOGUwZTRkYTc4
NDk4MjJhYjhkNjZmNWQxLi5iY2UzNjU1YTMxOTJlYTI5MGZlN2YwNDA4MjRhMzg4NmY2YjA0ODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzA2LDcg
KzMwNiw3IEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwpA
QCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzRm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9p
ZCogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAzMTE2NWI1
ZmY0OTI1NGNjMWE2YzQ3OTAyYjc5MTBhYzRhN2Q5YmZmLi5jZGMzOWI1MTJkN2VlM2ExNWNmMWFl
YzJlMGEyZDkzZDlhYWFkMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMzZDFiYjYwZjhiNTMzYjE4
NjA1OGVlYWQ4MWI3NS4uNTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFiMWVkYzRhNzQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDAsNiAr
NDAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKK2NsYXNz
IERlbGV0ZVByb3BlcnR5U2xvdDsKIGNsYXNzIEpTQmlnSW50OwogY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgSlNDZWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5k
ZXggMjcxMzUyYjIxNzQ3MDM1NmRmNDAzZmRkOWNkZTYwZGVmODg4MTYwNy4uMGU2N2Y4NjY3NmQ1
ODY1YWE4OGYwNGYzNWFkYTc0MzIxZTAyY2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBib29sIEpTQ2VsbDo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGlkZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwogfQogCi1ib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKK2Jvb2wgSlND
ZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZt
KCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNs
b3QpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNjY1ZDA4ODljZjQ0NjFjM2Fi
MGEyYWY0YjA3YzZhNThjOTA0MjFjNC4uMDYyZTgzZGIzOWFiMzRhNmVmNGZkYTM2ZmZhNTBlNGMx
MTFkOTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE4MCw3
ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgYm9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSk7CiAKICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBFQ01BTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwCmluZGV4IDE0NmE5MTMyZDQ3MzUyNDJjMTA2ZTY1NTY0Nzc4ZTE3ZWQ3YmFi
OGMuLjFiMjU1MjNjOThmYmIwOWUzN2Y4YTQ3NDMxOWJmNzZjMzJkOGE4YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xNTIsNyArMTUyLDcg
QEAgYm9vbCBKU0RhdGFWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSgKIH0KIAogYm9vbCBKU0RhdGFW
aWV3OjpkZWxldGVQcm9wZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEpTRGF0YVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNEYXRhVmlldyo+
KGNlbGwpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVy
dHkoCiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlT2Zm
c2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNEYXRhVmlldzo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4
IDg2NDEwZTYxYWQ3ZTkxZDgyYTY3ZTk3ZWZiYjRmMzJmMWJjMTJlNzguLjk4YThjYzhiMzk4ZmZk
ZDdhMWM5NGJlNjU3ZjY1NWU2Y2M3YjlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApp
bmRleCBlZTg1ZWUwNjQ2YzlkZGFmOWU2ZTk3YWYxN2I5ZjljMDM3N2QxOGUwLi44YjhkNTA2NTM2
ZTUzZjkyOGJjMzY5ZDJlYmZkNWE2MzBiMDg2Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wgSlNGdW5j
dGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAK
LWJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Z1
bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgSlNG
dW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKICAgICB9CiAgICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogYm9vbCBKU0Z1bmN0
aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggYWRkZGUyYWMwM2E0MTBjNzA4YTc5
MzRiNWE1ZDA2ODljYTFmZmFjZC4uMThhYjQ3NTQzZmQ3ODI5NzhhZmVhOTcyYzhjOWFjNmQ4NzAy
Y2JmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAt
MTc5LDcgKzE3OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
OwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcuaAppbmRleCBmMDhmODUyNDY5YmVmZDZjNWFkNDNhZjJhNTAwOTJiZWVm
ZTJiMzlhLi4zYjdiYmRlNzY1Y2UxYzM1NjU1MGVjZDU4Yjc3ZmVkOWQ2MTA2ZjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKQEAgLTMwNSw3ICszMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsK
IAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCmluZGV4IDBjYWZiZDI3NmNmNzRkMGM4NWVmOGJlN2RiZTQwM2QzYzc2
NGIzNDIuLjU4ZmJiNTc1NjJiNzEwMDc5ZTY1MTQwZjdlMDllNzA4MDQ4ZmEzNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00MzgsNyArNDM4LDcgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVmaW5lT3duUHJvcGVydHkoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpk
ZWxldGVQcm9wZXJ0eSgKLSAgICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCisgICAgSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1MCw3ICs0
NTAsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9w
ZXJ0eSgKICAgICBpZiAocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtNDg0LDcgKzQ4NCw4IEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCgKICAg
ICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0
dXJuIGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5
TmFtZSksIHNsb3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGIzYzk4
MGE0NjYyYWVlZWExMjQwYTU2NmM1ZDRhMThhOTI4NzFmN2UuLjBmODkwMzAwYmViNzg0YzcxNzlh
ODczZmFjZmNiMmE4NGQwYzllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzMTQsNyArMTMxNCw4IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmFkZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IElkZW50aWZpZXImCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICBtZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBhZGRHbG9iYWxWYXIocHJvcGVy
dHlOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCmluZGV4IGYzNDVjNTAyN2FiYTk0MDg0NDcxZTMxYjdi
OGQ3ZWUyYTJmODg3MTMuLjk3NGI5MmI1NGUxYTMzODMxNjlkZWZhYjJhOWE3ZGRlNjQ2ZGEwNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmly
b25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAKQEAgLTEyNywxMyArMTI3LDEzIEBAIGJvb2wgSlNMZXhpY2FsRW52aXJv
bm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShnbG9iYWxPYmpl
Y3QtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEpTTGV4aWNh
bEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTGV4aWNh
bEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5
KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaAppbmRleCBkMDEzYjUxZWZhMjk3ZWJmMDNjYTQyNDAwMTdhNjdhY2Mx
M2I5Mzk3Li4wNWU0ZTY1YzJkZDQ5M2ZmN2E0ZTMxYTQ4MjZiNzBjMjUwYzU3OWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAppbmRleCBmZWI1NTEwODc0ODAz
OTBkMzQwOWU2Y2FhOTQ4MDBiNzI5ZjdjNzNkLi44NThhOTQyZmU3MzU1Y2Y4YzExODA1YThkMDVl
MDY1M2Y4YTIxODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgSlNNb2R1
bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVyCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAK
LWJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTM4LDcg
KzEzOCw3IEBAIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuaAppbmRleCBkYWVhYjY2MmZjMDRkYWJkZDI2ZDE0MTQ1ZjM2ZWIxN2Uy
NzkyYTc5Li4wMTMwZjg3ZmI5OGJiMmE4MmRhYTI5YTU5NjM1MmU3MTliYjdlZmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcAppbmRleCAyYmRiMTMwNWViMGM0YmU5NjA4MDY1YmQzNDg1OWM3YWYxNDhi
MmExLi4xZmM2YTI2NWI4Y2E2NWFkMTE5MDJmNWQwMTNlZDY1ZDg2NTYxODgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwCkBAIC0xOTksMTIgKzE5OSwxMiBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAogICAgIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQotICAgICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICByZXR1
cm4gIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgKaW5kZXggOGVlZjYyMWUzYjg0ZmE2NjI4Y2ZhMmY4MTRkYTYyOGYwNjc4
N2QxZC4uODExMzY0ZGQxN2ExM2U3ZWZiZmNmMWM5ZTI4NjMwZTI0MmE3MTI0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXgg
ZDBkMTcyMWNmMWRlYjgzM2Y5Y2IwMWUyYmYzMjFiMDZlZDQxOTZjOS4uZWRhMmQ2MjM1MDk5ZWQz
MDFiYjBhZTExNDUxNGYzMmUxNTRjYjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTc1OSw5ICs3NTksMTAgQEAgTkVWRVJfSU5MSU5FIEpT
VmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgZmls
dGVyZWRWYWx1ZSA9IGNhbGxSZXZpdmVyKG9iamVjdCwganNTdHJpbmcodm0sIHByb3Auc3RyaW5n
KCkpLCBvdXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKLSAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgp
KQotICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICAg
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIG1f
Z2xvYmFsT2JqZWN0LCBwcm9wLCBzbG90KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChvYmplY3QsIG1fZ2xv
YmFsT2JqZWN0LCBwcm9wLCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIGluZGV4U3Rh
Y2subGFzdCgpKys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggYWNkMjlkZWQ4MTM1MWZiMjg0YjIxNTlhZDQ3YTYzMWMzNDk0ZjFkZi4uMzQ3MzJlMWMy
YmYzNmZlNWQ3OTc3YzFiZGUyNWNkYWVkNjNhYzliMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTk3Miw3ICsxOTcyLDcgQEAgYm9vbCBKU09iamVj
dDo6aGFzUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIHByb3BlcnQKIH0KIAogLy8gRUNNQSA4LjYuMi41Ci1ib29sIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKQEAgLTE5OTksOCArMTk5OSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cgogCiAgICAgYm9vbCBwcm9wZXJ0eUlzUHJlc2VudCA9IGlzVmFsaWRPZmZzZXQoc3RydWN0dXJl
LT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogICAgIGlmIChwcm9wZXJ0eUlz
UHJlc2VudCkgewotICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlICYmIHZtLmRlbGV0ZVByb3BlcnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSkKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpIHsKKyAgICAgICAgICAg
IHNsb3Quc2V0Tm9uY29uZmlndXJhYmxlKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KICAgICAgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKIAogICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtMjAwOCw3ICsyMDEwLDkgQEAg
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+
cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBbXSAoY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQsIFByb3BlcnR5T2Zm
c2V0KSB7IH0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7Ci0gICAgICAgICAgICBpZiAodGhp
c09iamVjdC0+bV9idXR0ZXJmbHkgJiYgIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAm
JiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgeworICAgICAgICAg
ICAgc2xvdC5zZXRIaXQob2Zmc2V0KTsKKyAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNh
cGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJmbHkpOwogICAgICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkodm0sIHRo
aXNPYmplY3QtPnN0cnVjdHVyZUlEKCksIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIG9mZnNl
dCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bWF4
T2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldCk7CkBAIC0yMDIwLDcgKzIwMjQsOCBAQCBib29sIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcgogCiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkK
ICAgICAgICAgICAgIHRoaXNPYmplY3QtPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmNsZWFy
KCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBzbG90LnNldENvbmZpZ3VyYWJsZU1pc3Mo
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjAzMCw4ICsyMDM1LDEwIEBAIGJvb2wgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgCi0gICAg
aWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCi0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaSkpOworICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKSB7Cisg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkpLCBzbG90KTsKKyAgICB9CiAgICAgCiAgICAgc3dp
dGNoICh0aGlzT2JqZWN0LT5pbmRleGluZ01vZGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOgpAQCAtMzYyNSw3ICszNjMyLDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KgogICAgIC8vIEEgZ2VuZXJpYyBkZXNjcmlwdG9yIGlzIHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0
cmlidXRlcyBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQogICAgIGlmIChkZXNjcmlwdG9yLmlzR2Vu
ZXJpY0Rlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuYXR0cmlidXRlc0VxdWFs
KGRlc2NyaXB0b3IpICYmIG9iamVjdCkgewotICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxPYmpl
Y3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0
ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgICAgIH0KQEAgLTM2
NDEsNyArMzY0OSw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgaWYgKCFvYmpl
Y3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1
cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM2NjUsNyArMzY3NCw4IEBAIGJv
b2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBp
ZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJp
ZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM3MTgsNyArMzcyOCw4
IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKIAogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0
ZXIpOwogCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgdW5zaWduZWQgYXR0cnMgPSBkZXNjcmlwdG9yLmF0dHJp
YnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KTsKICAgICBvYmplY3QtPnB1dERpcmVjdEFj
Y2Vzc29yKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCmluZGV4IGVjNjMwMGVhOWI5NzJjZTliYTBmYWQ4MTgyNTdhZmIyMGQ4MmEy
ZWQuLjY5M2JkYmI5OTdkNjQ0MjA4MDY1MWMyN2VkZGU3YjA4OGExNDE1NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkRlbGV0ZVByb3BlcnR5
U2xvdC5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKQEAgLTYyMyw3ICs2MjQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29u
c3Q7CiAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKSBj
b25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJveHkuY3BwCmluZGV4IDljNDc5MzRlNGEzZDkxOTlmYTk4NDJkZDA1MmNlODhkMjQx
NTJhYzEuLmQwYmJjMmM1YTJkMjIxOTEyN2NkOTliMzAyMDkzMDg4NzIxMjNiNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAg
Ym9vbCBKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09i
amVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
UHJveHkqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRh
YmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiBib29sIEpTUHJveHk6OmlzRXh0ZW5zaWJsZShKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5oCmluZGV4IDM1MWU2NjhkMjU5MGQ5Yjk3YzhmNGJiYTJiZmZiNDAwZGIzZjIxMDkuLjVi
ZTdiZjBkMmU1YThiMzJjNzk0YzBiMjU4OTU3OThmYzVmOWVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAKaW5kZXggNjMwZTFiNzhiYjIwNmU3YWY2MTdjM2M2ODJjMzRmNWUx
NzU1ZjVkNS4uMTI1ZjZjMzE1MGU5NmFlY2Q1Mzc0NzMxZmRhOGQ5YTdiYWZiYTI0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKIH0KIAotYm9vbCBKU1N5bWJvbFRh
YmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTU3ltYm9sVGFi
bGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEpTU3ltYm9sVGFibGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNTeW1ib2xUYWJsZU9iamVjdCo+KGNlbGwpOwogICAgIGlmICh0aGlzT2JqZWN0LT5zeW1ib2xU
YWJsZSgpLT5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQg
SlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBjN2MxZTIw
YTY1NDc2YmM3MDY4ZWU2M2RlZDk4YjMzNWRmNzM2YjIxLi5iNTY4ZThmOTJhOTgzZmI0Y2MyMDNh
N2EwNjIxODBhZTRmZTU5MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFi
bGUuZ2V0KCk7IH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTeW1ib2xUYWJsZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N5bWJvbFRhYmxlT2JqZWN0LCBtX3N5bWJvbFRh
YmxlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3Bw
CmluZGV4IGI2NTIwMjIxYTgxNTk4ZmZlZjJhNWUxNGE4MGZkNGU1NGRjNjljNmUuLmIwN2UwYTAy
OTMzMjgyNjEwMzZmNDExMDZlZWVlOWU1ZjkwYzY2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTY4NSwxMiArNjg1LDEyIEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJveHlPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUHJveHlPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7CiAg
ICAgYXV0byBwZXJmb3JtRGVmYXVsdERlbGV0ZSA9IFsmXSAoKSAtPiBib29sIHsKICAgICAgICAg
SlNPYmplY3QqIHRhcmdldCA9IHRoaXNPYmplY3QtPnRhcmdldCgpOwotICAgICAgICByZXR1cm4g
dGFyZ2V0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0
YXJnZXQsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRhcmdl
dC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKICAgICByZXR1cm4g
dGhpc09iamVjdC0+cGVyZm9ybURlbGV0ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgcGVy
Zm9ybURlZmF1bHREZWxldGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJveHlPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmgKaW5kZXggMTdjYTI5ZmIwYTNmZGRiYTcxZWI2ODI0OWMwOTljYTI4YTNkNjJl
ZC4uZWU1YmQ5MDU4Y2ZhODE4YTQ2NzRhNTIyYmY2MGEyY2EwOWVhYzFiYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCkBAIC04NSw3ICs4NSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
ICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wg
cHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRp
YyBib29sIGlzRXh0ZW5zaWJsZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA0NmRjYjc1
MDZkYTU3MGU0Yzk3ZWI5M2EwOWMwMDQ4MWE1MTUzODI3Li4xY2UxYjRjMzNhYWYxYTQ1ZGYwNzI0
MWY0ZGQzMGM2N2Q2N2EyZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAKQEAgLTcxLDEyICs3MSwxMiBAQCBib29sIFJlZ0V4cE9iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYgogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLWJvb2wgUmVnRXhwT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+bGFzdEluZGV4KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXggNWU5
OWViMzhiNzEzYTk0MjYzNzE5MWE4OWYwYjdjOTZjNWZiYjcxNC4uODU3Y2EyZTcyYWYzNDBlYWUz
NjU3MDFkNTVjYTA3ZWQ4M2UwYjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgPSAobV9yZWdFeHBBbmRMYXN0
SW5kZXhJc05vdFdyaXRhYmxlRmxhZyB8IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFnKTsKICAg
ICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwCmluZGV4IDUxNTc1Mjc2NWVjYjAyZDE5YzA0MGU5ZjIxYjk2
NDlmNzUxN2I5NDcuLjUxZGJjNjdjNTdmODE1NjFmYTc4ZDE5NGVmYWYwNDljMDdhOGFkNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgU3RyaWN0RXZhbEFjdGl2YXRpb246OlN0cmlj
dEV2YWxBY3RpdmF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUKIHsK
IH0KIAotYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFN0cmljdEV2YWxBY3RpdmF0aW9u
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAppbmRl
eCBjZGNjMjFiN2U1ZmE3YjEwOTZiMjZkMTg3MDc0Y2JmMTdlYjgzYzI5Li4yNDE1NDVlODE2OTM2
MmJmNjkyMGE5MTliOGZlMGZkYmI3YTEwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc2NvcGU7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ3N2I5Y2FmYjNmYTAwOGYwZjcwNTY4YjZkYjZm
NGExNTE4NmQwNmUuLjQ4NmRkOTI3M2I3NTA1OGE0N2Y3NjlhM2ZjZjg3NzVlNjkwY2QzOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAt
MTI1LDcgKzEyNSw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwogfQogCi1ib29s
IFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJpbmdP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBTdHJpbmdPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CkBAIC0xMzQsNyAr
MTM0LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHIKICAgICBPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNP
YmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgoaW5kZXgudmFsdWUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGEzNDA1
ODE3ODkzNGQ4NTI1MGFjYjNhM2U0ZGEzNTJmMjI3ODY1MjMuLjY5ZjI2YjdkNzI0YmJlZjczMjMz
MTk0N2U4MGI3YzdmYWZjZjhkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGVkYTQ0NmJmYmUyNjdhYjAxYjg1MmUxNWZk
ZTljOWMzMGU2ZjU4ZTYuLjYzNjk0ZjBjNGFkZDFiYTRlYjc0ZGJhZDI2MWQ3MDAzZTgyNzNlNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtNTQw
LDggKzU0MCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRp
b24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSogU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVm
ZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewotICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCwgZGVmZXJyZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gcmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lLCBvZmZzZXQpOwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJldHVybiBuZXdT
dHJ1Y3R1cmU7CiAKQEAgLTU0OSwxNiArNTQ4LDEzIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
CiAgICAgICAgIHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7
CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9t
RXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92
ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkpOwogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
KTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAotICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7Ci0gICAgc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cyk7Ci0KICAgICBjb25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7CisgICAgb2Zmc2V0
ID0gaW52YWxpZE9mZnNldDsKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24g
PSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0
dHJpYnV0ZXMsIGlzQWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5n
VHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGlu
ZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5z
aXRpb25PZmZzZXQoKTsKQEAgLTU2OCwxMSArNTY0LDMwIEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBT
dHJ1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQp
Cit7CisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOworICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXMgPSAwOworICAgIGlmIChzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0
eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMpID09IGludmFsaWRPZmZzZXQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3Rp
bmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZz
ZXQpOworfQorCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOworICAgIGlmIChzdHJ1Y3R1cmUtPmdldENvbmN1cnJl
bnRseShwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMpID09IGludmFsaWRPZmZzZXQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3Ry
dWN0dXJlLT5tX2xvY2spOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9t
RXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBvZmZzZXQpOworfQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlU
cmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmpl
Y3QoKSk7Ci0gICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZy
b21FeGlzdGluZ1N0cnVjdHVyZSh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwg
ZGVmZXJyZWQpKTsKKyAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQp
KTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVp
ZCgpKSAhPSBpbnZhbGlkT2Zmc2V0KTsKIAogICAgIGludCB0cmFuc2l0aW9uQ291bnQgPSAwOwog
ICAgIGZvciAoYXV0byogcyA9IHN0cnVjdHVyZTsgcyAmJiB0cmFuc2l0aW9uQ291bnQgPD0gc19t
YXhUcmFuc2l0aW9uTGVuZ3RoOyBzID0gcy0+cHJldmlvdXNJRCgpKQpAQCAtMTIwMyw3ICsxMjE4
LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNW
YWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9seVByb3QKIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwg
IjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOworICAgIG91dC5wcmludChSYXdQ
b2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlk
KCkpKSwgIiwgIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwogICAgIAogICAgIENv
bW1hUHJpbnRlciBjb21tYTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKaW5kZXggNTJjZDNjNzFkOTIwZjJmOGE5N2I0NjBiOTBlMGVjNzBkNWQ3MTFhZi4u
YWUyMGFlOTZiYTQwMzJmNmFhMWY5NGJlM2MxNzRiNzYzYzczZmFmMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRl
ICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xOTEsNyArMTkyLDgg
QEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFBy
b3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVs
bHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51
bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZy
b21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zm
c2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihW
TSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KiA9IG51bGxwdHIpOwpAQCAtNDc3LDYgKzQ3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29s
IG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAK
ICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QpOwogCkBAIC03MTYsNiArNzE5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1
cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0
eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJl
dHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0
IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQg
d2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAwY2Q5
OGQ1MmFjYzdmNzE0YzA1YjE1M2UwODEzOWU0OTFjZDhjZjhjLi5mZTI4NTg3NDA5NGRhYzMwNzA3
NWQyYzc2MWUyMzIyYTQ2MDE3NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yMjQsMTAgKzIyNCwyMyBAQCBpbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QK
ICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2Iu
dHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nh
c3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlw
ZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFk
ZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFs
c2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9y
VHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG11c3RD
aGVja0NlbGwgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1
Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOWE3ZjQ5YTE0MDUzYTA4Mjdk
YmFlMzUyZDI4ZjUwMzYwN2ZmNmNkNy4uNGVmMjllZDc3Njg4ZGMxNzkzODhiNzEwZjE0ZTQzNjE4
ZWNmOWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApA
QCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQor
ICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
CiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAg
LTI4NTAsNiArMjg1MCwxNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkdldENvbmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25IYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihmdW5jdGlvbi0+YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFsKHZtKSkp
OworfQorCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBE
b2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMjk4Myw2ICsyOTkyLDggQEAgdm9p
ZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0s
ICJnZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCIsIEpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9u
R2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0
Q29uY3VycmVudGx5IiwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHksIDIpOwogCisgICAgYWRkRnVu
Y3Rpb24odm0sICJoYXNPd25MZW5ndGhQcm9wZXJ0eSIsIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJv
cGVydHksIDEpOworCiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVj
dFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQ
dXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBqc051bGwoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1
bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4
ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFh
YzcwZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5LDcg
QEAgcHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0
CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFw
LmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1YmxpYzoK
ICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQog
ICAgIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAg
IGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAgLTk4LDYg
Kzk4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dl
c3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxk
TGlzdCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
ICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9pdGVyYXRv
ciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAgICAgbGlz
dC5hcHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3
ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIoKQorICAg
IHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5jbGVhcigp
OworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQg
cmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExvY2tlciBs
b2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5h
bWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52
YWx1ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICBtdXRh
YmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IDIwNTA2ZjhlY2ZhYzY1M2U1NWFkMDQ4MWRkYTU2MGY1ZmQ3MmE1NGQuLmY3YTg5NTU3
ZWQ1NmFjZWY5MTNhNGExZjZkNzI0Njc1MmUxNGNkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxNCwxMyArMzE0LDEzIEBA
IGJvb2wgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleCh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsK
IH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRp
bmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xv
Y2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxZWYwNmMyNmVlMjUyZGU2NjhjMWRlZGU5MWM1ZGRmNmEw
ZGRmZGU1Li44NGI5YTEzZTE5ZWExODlkZjMwNzQ3NjA2NWRkMzczZTUxZTRmNjUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTYz
LDEzICsxNjMsMTMgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHUKICAgICByZXR1cm4gSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBz
aG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTG9jYXRpb24q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxs
b3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGUyZWVkZmQ1YjBjNWFh
NzE4NzBkYTc2NTQzOTdlMzViOTlhODJjYWMuLjBjYjY3ZWYyOWM2MmJmOGNjNDQ2YTBlY2UzMWM5
ZmU1MzUxNTdhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVt
b3RlRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1JlbW90
ZURPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
LCBKU1ZhbHVlLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU1JlbW90ZURPTVdpbmRv
dzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSkKK2Jvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDAzZGQ5YzE2MWE4Mzk5MTJkNDM5MzQyZDI2NWJjNWZkMTViNmE0MTYuLmI3Y2Qx
ZmNhNDM5OWNlODk5NmFhYTZlY2E3OTUwNzM2YzA1MzIzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzAxLDcgKzEz
MDEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogICAgICMgVGhpcyBpbXBsZW1lbnRz
IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3Qt
ZGVsZXRlIGZvciB0aGUKICAgICAjIGZvciB0aGUgZGVsZXRlUHJvcGVydHkgb3ZlcnJpZGUgaG9v
ay4KIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiYm9vbCAke2NsYXNzTmFtZX06OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IntcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIHRoaXNPYmplY3Qg
PSAqanNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CkBAIC0xMzIxLDcgKzEzMjEsNyBA
QCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogCiAgICAgIyBGSVhNRTogSW5zdGVhZCBvZiBj
YWxsaW5nIGRvd24gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5LCBwZXJoYXBzIHdlIHNob3VsZCBp
bXBsZW1lbnQKICAgICAjIHRoZSByZW1haW5lZCBvZiB0aGUgYWxnb3JpdGhtIG91cnNlbHZlcy4K
LSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
Y2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9CiAKQEAgLTI2OTYsNyArMjY5Niw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0Rl
bGV0ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVy
dHlTbG90Jik7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQpO1xuIik7CiAgICAgfQogCkBAIC00MzI0LDcgKzQzMjQsOCBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIk
bmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAg
ICAgICAgfQpAQCAtNzUxMiw3ICs3NTEzLDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxw
ZXJNZXRob2RzCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwi
JG5hbWVcIikpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICB9XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3Bw
CmluZGV4IGI1ZWE1NDhlMWQxMjcyZTE4NmRiOTQ0Y2U2MTk4NTBmNGZkMmU4MDguLmU2MzMyMzlk
YWVmY2VmMDQwOWM4YjQ2M2I4NzBmNjZiODEwNWQ3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5jcHAKQEAgLTEzNyw3ICsxMzcsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ09w
ZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTE0NSw3ICsxNDYs
OCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiks
IHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDgwZmFmMzUxMDU0
N2EyYWRlNzdjYjdlYzk1YjI5MTkyZDkwMWFhNDkuLmVmNjYwMzM0ZTMxODFiNjdkZTUyNGIzZDM1
ZGYxNjU2NGY2NTZhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5j
cHAKQEAgLTEwOCw3ICsxMDgsOCBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1l
UHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJhU2VjcmV0
QXR0cmlidXRlIiksIHN0cmxlbigiYVNlY3JldEF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmIChoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAg
ICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBiZmY0YzNiMDlkYTU5NDFiZmY3MWRjZGJi
Mzg1MjU0OGEwMGMzZjFkLi44NzgzZTE1YzI4MTM3NjYzNGZkYzc1ZGVmZmM4NWRkYTk2NTQ4OWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcApA
QCAtMTkwLDE0ICsxOTAsMTQgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG8KICAgICBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
cjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nh
c3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5
PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lKSkgewogICAgICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIH0KLSAgICByZXR1cm4g
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCmluZGV4IDBlYTRi
YjExYjg2MDUzMDExNjU3ZmQ2ZWE2M2YyNDZkNGQ4MmU1MGEuLjEzOGQ0YzE4ZjhmNDZiYzM0MzMx
MDliZDAzMjM5NTYzN2QwYWMzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9k
ZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNzk0ZDU5NzZmMTNmMDcxOGI0Y2VlNTE2MzM4MzBj
Y2QzMGYxYzMzMy4uNTc5ZjJhMGU2YThjN2E5MjU1NjE5ZDg0NDUyNmJhOGRkYjJkYWE4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAgIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09i
amVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxs
KTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KIAogICAgICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDc5MWJlMTgy
ZWIxYjM2OTY5MjFkZTk3Njk1MjcyOWYwYjRmMGIzNGEuLjA1NWQzZGY5MjM4MThjMDA3NjdmMTg5
NWRmNjcyNWY1YmMwZWRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGIzMzc2ZTNhOWZlNTJiOGEwYTZkM2Q0MDVhNmFh
ZmVjNDFiY2YwODcuLjI1MDIzYTMxYTE0NjQyMjg3YTBiMWI1MGRkZjRkZjQ2MTlkZGYyNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApA
QCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6
OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHCiAgICAgSlNPYmplY3Q6
OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
cjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpz
Q2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZQogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVU
b1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAg
IHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNl
bGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25l
ZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmgKaW5kZXggNTRlMDI1NDc4ZTFkYzM5OTA3MDczM2U0OTliMDE2MzE0OTAxMjQ5ZS4uYTg1OGEy
NzE1NGJkM2M2MzY0ZmM0NWE2NDdmZjQyYjZiNDcyNTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBK
U0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6
OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggZThkOTc0MTlhZmE1
ZDlhZTY4ZGEwNGVhNTQxZWFiZjUwZDQ3ODczNi4uZjZmMzY2ZTIyMmU0MTQ0YTc0YjYzNzU0ZmJk
MDc4OThmOThiNjZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KICAgICBpZiAo
aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGlt
cGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAppbmRleCBhOTk0NWJhZmM2MTE0M2U1NzZmZmQ2MGZl
YzhlZWU2OTY0YjlmMDMwLi4yZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4OWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpF
bnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpK
U0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2Vs
bCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggMTEwMGFhM2NlYzBiMWUxMGY3OTA3MzBhZjUxMzA5NzAw
NjAwYjk1ZS4uMWZiM2YxYmVhOGRhZjJmMGQwOWUyOTZjNTg3ZmZlMDQ3MDg2M2ZlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b2RlLmNwcApAQCAtMTU3LDQ1ICsxNTcsNTIgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0
UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRC
b29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxl
bigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJlbnRyaWVzIiksIHN0cmxlbigiZW50cmllcyIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJs
ZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImtleXMiKSwgc3RybGVuKCJrZXlzIikpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5h
YmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwog
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidmFsdWVzIiksIHN0cmxlbigidmFsdWVzIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJh
dG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZm9yRWFjaCIpLCBzdHJsZW4oImZv
ckVhY2giKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUo
KS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggNGMxMDcxMDEzMTA5YjVmZWVjYjQzMjU3MTQ4NDA2OTJkODkwNmYyMS4u
ZjU2ODQzMjRhNjY3YmE5NmRlNzUzNjA4MTg3M2QyNTIwYWE4ZTUzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTE5ODQsMTQgKzE5ODQsMTYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2IKICAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSwg
c3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0yMzQ3
LDkwICsyMzQ5LDEwNCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSwg
c3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoISh3b3Js
ZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIp
LCBzdHJsZW4oImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVk
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCF3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkpIHsKICAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJ3b3JsZFNwZWNpZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRTcGVjaWZp
Y01ldGhvZCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRl
U2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0
Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZl
YXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29s
ZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAjZW5kaWYKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKICAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSwgc3Ry
bGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25k
aXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25hbGx5
RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVD
b250ZXh0KCl8fCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWxsb3dzTWVkaWFEZXZpY2VzKCkpKSB7CiAgICAgICAg
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigibWVkaWFEZXZpY2VzIiksIHN0cmxlbigibWVkaWFEZXZpY2VzIikpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYg
KCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhhc1NlcnZp
Y2VXb3JrZXJTY2hlbWUoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzZXJ2aWNlV29ya2VycyIp
LCBzdHJsZW4oInNlcnZpY2VXb3JrZXJzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBp
ZiAoIShSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJl
RW5hYmxlZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVz
dEZlYXR1cmUxRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIikpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYK
ICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0aW9uYWxs
eVJlYWRXcml0ZUF0dHJpYnV0ZSIpLCBzdHJsZW4oInJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdy
aXRlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIpLCBz
dHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJj
b25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0aW9u
YWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIC8vIEFkZGluZyBiYWNrIGF0dHJpYnV0
ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2YXJpYW50
IGFib3ZlLiAKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNw
cAppbmRleCBmZWViZGVmN2JjNDVlOThjOTMwOGZkZmJkZTExMGI5OWZkZGRjYTJjLi4zMmMxM2I5
ZWI0MDcwODM1ZWIyNTgzNzE5NmQ3ODMyNThhYzU5NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9O
UF9qc29iamVjdC5jcHAKQEAgLTM5MSw4ICszOTEsOSBAQCBib29sIF9OUE5fUmVtb3ZlUHJvcGVy
dHkoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAg
ICAgICBpZiAoaS0+aXNTdHJpbmcoKSkKLSAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVu
dGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSkp
OworICAgICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
b2JqLT5pbXAsIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVy
KGxleGljYWxHbG9iYWxPYmplY3QsIGktPnN0cmluZygpKSwgc2xvdCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+bnVtYmVyKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggMjJmMGI4
ZDlkOGZhZTRhNzljNmI2MzFlOTM1Y2I2YWRjN2Q5NGZmZi4uZGJjNmQzYjFlMTlmOWMyMWQ5YjYw
YzE3ZWRmZjk3MTYwMDY3YzA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbQpAQCAtNDU3LDggKzQ1Nyw5IEBAIC0gKHZvaWQpcmVtb3ZlV2ViU2Ny
aXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKKyAgICBKU0M6OkRlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OwogCi0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIFN0cmluZyhrZXkpKSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFN0cmluZyhrZXkpKSwgc2xvdCk7CiAKICAg
ICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlv
blRvQ29uc29sZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmgKaW5kZXggNWVkMjFmMTM0ZWY0YWFiNWRjMGM1NWE0NWRlNmE2M2Qy
N2M2YmUyZS4uNjIyOTYzNjhlYmI5MGM1MGI5ZGU3ZmEwNzgyYzljNmZhMjg1OTE5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAg
IGJvb2wgdG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50
bHkgdGhpcyBpcyBicm9rZW4gYmVjYXVzZSBub25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1h
cmtlZCB2aXJ0dWFsLiBXZSBuZWVkIHRvIHNvbHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IDE5ZWQxOWNi
YzdhZTNlZTQ2Nzc5NmIxMDNjYmZlNzYxNjA5YWQ3MzAuLjZlODc3ZDJlYjdmNDRkMDNhMjhlMTcx
MDgzYmQzZDBmMGJiOTg4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0KQEAgLTI5MCw3ICsyOTAsNyBAQCBDYWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJ
bXA6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJl
dHVybiBDYWxsVHlwZTo6SG9zdDsKIH0KIAotYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9v
bCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVy
biBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCA0
ZDI5N2M3MGQ2YjFiNmMxYWY4OGY5MTRiZTg1ZjYwZGYwM2NjOWIxLi5lYzM1ODhmYzU2NTk1NTNm
NTI3MjgzYzU4YTczNTgwMjEzMjlhYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4gdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGxleGlj
YWxHbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSk7CiB9CiAKLWJvb2wgUnVudGltZUFycmF5Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jv
b2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAppbmRleCBmY2Y1ZTMzZmIxMTQw
MTg1MTA3OTkzMGZiZDExNzYxMzU0NTJjN2U2Li4yOTgxMmE2NmQ2ZjAxMjRlMzgzNjI1Zjk1NjAx
OWNhMzNiYzNiZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgCi0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIAogICAgIHVuc2lnbmVkIGdldExlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJyYXktPmdldExlbmd0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmNwcAppbmRleCBhMDM2YjY2NjJkNDg3MmY2OGRjNTI2NDViYTFhZjJiYTE1
MzMwMzJkLi45ZDVkNjBkZWYzNTc1NGJlMWUwZTA2MjBlNDFlZGI5OGVmZTM5ZWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBi
b29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgUnVu
dGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpCitib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAg
IC8vIENhbiBuZXZlciByZW1vdmUgYSBwcm9wZXJ0eSBvZiBhIFJ1bnRpbWVPYmplY3QuCiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
b2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAppbmRleCA2
Y2JmN2JmNzk2YjBhODk0MDRiOTQyMjc1ZDY1MWU2MGU3MzI0NTgyLi4zYzEwZDhiZDUwZjNiN2Rh
YTQ4NDIyMTRiOWUwNGYwNDNhZmRmMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBK
U1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCmluZGV4IDJlZmIy
MjUyM2Y5MjFlOTJhYmQwMjE2ZWIwY2QxZmZkMTAwMzYyYmUuLjA1ZDEyOTI5Mzk1ODJmMDRjNDMy
ZDMwYzE0MmRiYTVkYWEwYmYxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCkBAIC0zNjEsNyArMzYxLDcg
QEAgYm9vbCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29s
IEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpT
TlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4ganNDYXN0PEpTTlBPYmplY3QqPihjZWxsKS0+
ZGVsZXRlUHJvcGVydHkobGV4aWNhbEdsb2JhbE9iamVjdCwgbnBJZGVudGlmaWVyRnJvbUlkZW50
aWZpZXIocHJvcGVydHlOYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKaW5kZXggODU1ODg5NDlhMzA2MDRj
NjlmNzdjY2MzZjYwZTU0Njk3N2ZmYWM2ZC4uNDgwM2MwYmM1NzFmOTc3ZGRjMjcyMmJiYWI5NmI2
ZDI3YzJhOWM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaApAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCi0g
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpOwogCiAgICAgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmluZGV4IDM2
ZjI4ZWU2ZmIwMTAyZDhjMTc3MTNjNjA4YjYxNGVhZjg1ZGRiNzYuLjhiOWZjZGYzMDg1MmQxZDIy
MmE1YjNiZDU5MDZkYTRiYWZlNDNhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0yMjksOCArMjI5
LDkgQEAgYm9vbCBOUEpTT2JqZWN0OjpyZW1vdmVQcm9wZXJ0eShOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKQogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9qc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShtX2pzT2JqZWN0LmdldCgpLCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShtX2pzT2JqZWN0LmdldCgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90
KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fanNPYmplY3QtPmhhc1Byb3BlcnR5KGxl
eGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJSZXAtPm51bWJlcigpKSkgewogICAgICAgICAg
ICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQppbmRleCAzMDMyYWZhMjgwZmE5MjdkODc3MzIwZWI4MWNiZDkwNzEwMjU1OTdl
Li4xMmNlNDA5YzU0M2MyMjg4MjI3NzE5YjJkNDEwOGJmMmE4NzlkNDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMTQxLDggKzExNDEsOSBAQCBib29s
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cmVtb3ZlUHJvcGVydHkodWludDMyX3Qgb2Jq
ZWN0SUQsIGNvbnN0IElkZW50aQogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDE0NmE3NTVhZDlmOTMyYjFiNTE3MjljYTQwNmZjNGYxOGU5N2UyNzUuLmEw
NjY4NjI2MDE2MGM2ZDU4ODg5YWViZWMyMzQzMGRlMDdkNGI5YTIgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIw
MjAtMDItMTQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisg
ICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJv
cGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanM6CisgICAgICAgIChkZWxldGUuQy5wcm90b3R5
cGUueik6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUt
Y2FjaGUtcG9seW1vcnBoaWMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAg
KGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFz
c2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBo
aWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUu
YXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25l
cSk6CisgICAgICAgIChhc3NlcnRfdGhyb3dzKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5u
b0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhy
b3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLm1ha2VGb28pOgorICAgICAgICAobm9JbmxpbmUu
YXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFz
c2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28y
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFi
bGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlW
YWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lu
bGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RD
YWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6CisgICAgICAgIChub0lubGluZS50ZXN0
Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcyk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAq
IG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVy
ZS5qczoKKyAgICAgICAgKiBzdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qczog
QWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAg
KGFzc2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChub0lubGlu
ZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUu
YXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAg
KG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5u
b0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZh
bC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJs
ZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0
eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRl
QnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAgICAobm9J
bmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJ
ZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRl
c3REZWxldGVJbmRleC5tYWtlRm9vNSk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RE
ZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAgIChu
b0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlWYWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFs
Lm1ha2VGb283KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRl
c3RCaWdpbnREZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0QmlnaW50RGVsZXRl
QnlWYWwudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLm1ha2VGb284KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RCaWdpbnREZWxldGVCeVZhbC50ZXN0U3ltYm9sRGVsZXRlQnlWYWwpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLnRlc3RPYmpEZWxldGVCeVZhbC5tYWtlRm9v
OSk6CisgICAgICAgIChub0lubGluZS50ZXN0U3ltYm9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0
ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmpEZWxldGVCeVZhbC50ZXN0U3RyaWN0
Lm1ha2VGb28xMCk6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0
cmljdCk6CisgICAgICAgIChub0lubGluZS50ZXN0U3RyaWN0LnRlc3RPdmVycmlkZS5hcnIuaik6
CisgICAgICAgIChub0lubGluZS50ZXN0U3RyaWN0LnRlc3RPdmVycmlkZSk6CisgICAgICAgIChu
b0lubGluZS50ZXN0T3ZlcnJpZGUpOgorCiAyMDIwLTAyLTE5ICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBDb21wdXRlZCBQcm9wZXJ0aWVzIHdpdGgg
aW5jcmVtZW50IHNvbWV0aW1lcyBwcm9kdWNlcyBpbmNvcnJlY3QgcmVzdWx0cwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBl
LWNoYWluLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20t
cHJvdG90eXBlLWNoYWluLmpzCmluZGV4IDQ5YTMxYjdmMjQ3YzFiZDBhY2E4MmNiMjJkZjIwZThm
MWJmNjFiZGQuLjU0YmJhODJlNjk5YzYyY2NjYTg5NDUxNmU2MmI3ZTZjYTFmNTEyMDIgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3Rv
dHlwZS1jaGFpbi5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVy
dHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKQEAgLTEsNCArMSw0IEBACi0vL0Agc2tpcCBpZiAk
bW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIGFkZGVkIGJ5IG1hcmstanNjLXN0cmVz
cy10ZXN0LnB5CisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KIGZ1bmN0aW9u
IGFzc2VydChiKSB7CiAgICAgaWYgKCFiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3I7CkBAIC0y
OCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGRvVGVzdCh6VmFsKSB7CiB9CiBub0lubGluZShkb1Rlc3Qp
OwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CiAgICAgY29uc3QgWCA9IHsgaSB9CiAgICAgQy5wcm90b3R5cGUueiA9IFgK
ICAgICBkb1Rlc3QoWCkKQEAgLTM2LDcgKzM2LDcgQEAgZm9yIChsZXQgaT0wOyBpPDEwMDAwOyAr
K2kpIHsKIAogZGVsZXRlIEMucHJvdG90eXBlLnoKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwMDA7
ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyArK2kpIHsKICAgICBnZXRaKHt6
OiBpfSkKICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9s
eW1vcnBoaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhZmZhYzk4ZTU2M2Q1ZjM3ZjZlZTIwOTA4NWQ2NDgz
Yzk2ODFkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAsMCArMSw1MyBAQAor
ZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24g
YXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9Citub0lubGlu
ZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorCitm
dW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24gbWFrZUZv
bzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0gPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAgICAgICAg
cmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFyciA9IG5l
dyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGo9MDsgajw1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqPTA7IGo8NTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9
PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAg
ICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIitqXSA9IDMKKyAgICAg
ICAgYXNzZXJ0KGZvb1siYnVnIitqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGlu
IGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCkKKwor
Zm9yIChsZXQgaSA9IDA7IGkgPCAzMDAwMDsgKytpKSB7CisgICAgdGVzdFBvbHltb3JwaGljRGVs
QnlWYWwoaSkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5OTEyZGE0YmJiYWFkMDUyMWU1
NTEyNWM5MDdlNWZiMmNkYzE0ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsMTc0IEBA
CisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KKworZnVuY3Rpb24gYXNzZXJ0
KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoImFzc2VydGlvbiBmYWlsZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsK
KyAgICBpZiAoYSAhPT0gYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFp
bGVkOiAiICsgYSArICIgPT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBi
KSB7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9u
IGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90aHJv
d3MoZnVuKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
KCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgdGhyZXcgPSB0cnVlCisgICAgfQorICAgIGFzc2Vy
dCh0aHJldykKK30KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5s
aW5lKGFzc2VydF9uZXEpCitub0lubGluZShhc3NlcnRfdGhyb3dzKQorCitmdW5jdGlvbiB0ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vKCkgeworICAgICAg
ICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIK
KyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBu
b0lubGluZShtYWtlRm9vKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28oKQorICAg
IH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBm
b28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNz
ZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6
IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9
PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFi
bGVEZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMigpIHsKKyAgICAgICAgbGV0
IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAg
ICAgIGRlbGV0ZSBmb29bImJheiJdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9J
bmxpbmUobWFrZUZvbzIpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIoKQorICAg
IH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBm
b28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNz
ZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6
IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9
PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9
Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RDYWNo
ZWFibGVFbXB0eURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzMoKSB7CisgICAg
ICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0g
MgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGRlbGV0
ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZv
bzMpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0K
KworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJh
ciIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVC
eUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzQoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAg
ICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAorICAgICAg
ICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZv
b2JhciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAg
cmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNCkKKworICAgIGFyciA9IG5l
dyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBhcnJbal0gPSBtYWtlRm9vNCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChm
b28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgs
IDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAx
CisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0g
MworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJ
ZE1pc3MpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDA7ICsraSkgeworICAgIHRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQorICAgIHRl
c3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlk
TWlzcygpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJv
cGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCmluZGV4IDc3
OTVkYzU4MTU3OGU0YzM5ODFjMjJhYzg3NmM0NTU0MTNlNjRkM2MuLmE5MzlhYWUzYWM4YWNjYzIy
MTRkZDdlN2Q4MDI0NDIxYTgxNjQ1ZDkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3Ry
dWN0dXJlLmpzCkBAIC0yNCw1ICsyNCw1IEBAIGZ1bmN0aW9uIGRvVGVzdCgpIHsKIH0KIG5vSW5s
aW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwMDsgKytpKSBkb1Rlc3QoKQor
Zm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyArK2kpIGRvVGVzdCgpCiAKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlv
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJh
bnNpdGlvbi5qcwppbmRleCA0MDNjN2MwOWNjMTIzZjNiMTg1NDY4MGI2YzE3ZGQ0NTZhNWRlZjMx
Li5hNGJhMWU0NGRhYzhhOWEzMzFkZTAzYjA1MzVlMzkyNDkzZTY1YzExIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5zaXRpb24u
anMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVjdHVyZS10
cmFuc2l0aW9uLmpzCkBAIC0xMiw2ICsxMiw5IEBAIGZ1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikg
ewogICAgIGlmIChhID09PSBiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBm
YWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOwogfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9Jbmxp
bmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKIAogZnVuY3Rpb24gc2Qob2JqKSB7
CiAgICAgbGV0IGRhdGEgPSAkdm0uZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3Qob2JqKQpAQCAt
MzEsNiArMzQsOCBAQCBmdW5jdGlvbiBzaWQob2JqKSB7CiAgICAgbGV0IGRhdGEgPSBzZChvYmop
CiAgICAgcmV0dXJuIGRhdGFbZGF0YS5sZW5ndGgtMV0uaWQKIH0KK25vSW5saW5lKHNkKQorbm9J
bmxpbmUoc2lkKQogCiBmdW5jdGlvbiB0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZShpKSB7CiAg
ICAgbGV0IGZvbyA9IHt9CkBAIC02Miw2ICs2Nyw3IEBAIGZ1bmN0aW9uIHRlc3REZWxldGVJc05v
dFVuY2FjaGVhYmxlKGkpIHsKICAgICBhc3NlcnRfZXEoJHZtLmdldENvbmN1cnJlbnRseShmb28s
ICJiYXIiK2kpLCAxKQogICAgIGFzc2VydChmb29bImJhciIgKyBpXSA9PT0gMSkKIH0KK25vSW5s
aW5lKHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxlKQogCiBmdW5jdGlvbiB0ZXN0Q2FuTWF0ZXJp
YWxpemVEZWxldGVzKGkpIHsKICAgICBsZXQgZm9vID0ge30KQEAgLTEwMCw2ICsxMDYsOCBAQCBm
dW5jdGlvbiB0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVzKGkpIHsKICAgICBhc3NlcnRfZXEoZGF0
YVtkYXRhLmxlbmd0aC0yXS5wcm9wZXJ0eSwgImJhciIgKyBpKQogfQogCitub0lubGluZSh0ZXN0
Q2FuTWF0ZXJpYWxpemVEZWxldGVzKQorCiBmdW5jdGlvbiB0ZXN0Q2FuRmxhdHRlbihpKSB7CiAg
ICAgbGV0IGZvbyA9IHt9CiAgICAgZm9yIChsZXQgaj0wOyBqPDUwMDsgKytqKSB7CkBAIC0xMzEs
NiArMTM5LDcgQEAgZnVuY3Rpb24gdGVzdENhbkZsYXR0ZW4oaSkgewogICAgICAgICAgICAgYXNz
ZXJ0X2VxKHZhbCwgdW5kZWZpbmVkKQogICAgIH0KIH0KK25vSW5saW5lKHRlc3RDYW5GbGF0dGVu
KQogCiBmdW5jdGlvbiB0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKCkgewogICAgIE9iamVjdC5w
cm90b3R5cGUuZ2xvYmFsUHJvcGVydHkgPSA0MgpAQCAtMTc1LDYgKzE4NCw3IEBAIGZ1bmN0aW9u
IHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUoKSB7CiAKICAgICBkb1Rlc3QodW5kZWZpbmVkKQog
fQorbm9JbmxpbmUodGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSkKIAogdGVzdERlbGV0ZVdpdGhJ
bmxpbmVDYWNoZSgpCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0
eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5l
LWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5OTcyODEwN2NhZGI0MWI5OTdhZTI3YmVhOWJjZGI1ODZi
NjAxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsNTM5IEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VC
aWdJbnQ9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNv
bmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiAr
IGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJldyA9
IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAgICAg
IHRocmV3ID0gdHJ1ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShhc3Nl
cnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9JbmxpbmUo
YXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7Cisg
ICAgZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZv
by5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6Cisg
ICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNz
ZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxl
bmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJh
ZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsg
al0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3Nl
cnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6
ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAg
ICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJy
ID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNz
ZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxl
bmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJh
ZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsg
al0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3Nl
cnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURl
bGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkgewor
ICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAg
Zm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0
ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4g
Zm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFycmF5
KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltq
XSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVj
dC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAg
ICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAg
ICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9J
bmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hl
YWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAg
ICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRf
ZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJh
eiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywg
eworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisg
ICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQor
ICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3Nl
cnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9J
bmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQorICAg
IH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBm
b28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNz
ZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6
IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9
PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVn
IiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0ZXN0RGVs
ZXRlSW5kZXgoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxldCBmb28g
PSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBm
b29bMF0gPSAyMworICAgICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRl
IGZvby5iYXIsIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0cnVlKQor
ICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5v
SW5saW5lKG1ha2VGb281KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb281KCkKKyAg
ICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3Qg
Zm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3Ro
LCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgi
YmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJh
ZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1si
YnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0sIDIzKQor
ICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sxXSA9IDEK
KyAgICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0RGVs
ZXRlSW5kZXgpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBm
dW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1si
YmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6
IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQor
CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAg
ICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5
cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRl
c3RQb2x5bW9ycGhpY0RlbEJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0QmlnaW50RGVsZXRlQnlWYWwo
KSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzcoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAg
ICAgICBmb29bMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dID0gMQor
ICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAg
IG5vSW5saW5lKG1ha2VGb283KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb283KCkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEo
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG4gaW4gZm9vKSkKKyAgICAg
ICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9v
WyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdEJp
Z2ludERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwoKSB7Cisg
ICAgY29uc3Qgc3ltYm9sID0gU3ltYm9sKCdmb28nKTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb284
KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAg
ICAgIGFzc2VydCghKFN5bWJvbCgnZm9vJykgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KHN5bWJv
bCBpbiBmb28pCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9s
XQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb284KQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb284KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhm
b28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAg
IGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1si
YnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAg
ICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RTeW1i
b2xEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdE9iakRlbGV0ZUJ5VmFsKCkgeworICAgIGNv
bnN0IHN5bWJvbCA9IHsgaTogImZvbyIgfTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb285KCkgewor
ICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFz
c2VydChzeW1ib2wgaW4gZm9vKQorICAgICAgICBhc3NlcnQoISh7IGk6ICJmb28iIH0gaW4gZm9v
KSkKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisgICAg
ICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzkpCisKKyAgICBhcnIg
PSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgYXJyW2pdID0gbWFrZUZvbzkoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3Nl
cnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVu
Z3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJh
ZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsg
al0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3Nl
cnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdE9iakRlbGV0ZUJ5
VmFsKQorCitmdW5jdGlvbiB0ZXN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IGZ1bmN0aW9uIG1ha2VGb28xMCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZv
by5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUg
Zm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQor
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAg
ICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7
CisgICAgICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvby5mb29iYXIpCisgICAgICAg
IGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAg
ICBub0lubGluZShtYWtlRm9vMTApCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzEw
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAg
ICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0
KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZv
by5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChm
b29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
IH0KK30KK25vSW5saW5lKHRlc3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RPdmVycmlkZSgpIHsK
KyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyAr
K2opIHsKKyAgICAgICAgYXJyW2pdID0gZnVuY3Rpb24oKSB7IH0KKyAgICAgICAgYXNzZXJ0X2Vx
KCR2bS5oYXNPd25MZW5ndGhQcm9wZXJ0eShhcnJbal0pLCB0cnVlKQorICAgICAgICBkZWxldGUg
YXJyW2pdLmxlbmd0aAorICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3BlcnR5
KGFycltqXSksIGZhbHNlKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsr
aikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2Jq
ZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykp
CisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAg
ICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0g
MykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0T3ZlcnJpZGUpCisKK2Z1bmN0aW9uIHRlc3ROb25PYmplY3QoKSB7CisgICAgZnVuY3Rpb24g
ZGVsZXRlSXQoZm9vKSB7CisgICAgICAgIGFzc2VydChkZWxldGUgZm9vLmJheikKKyAgICAgICAg
cmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAgIGFyciA9IG5l
dyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBhcnJbal0gPSB7IGJhejogaiB9CisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydCgi
YmF6IiBpbiBmb28pCisgICAgICAgIGRlbGV0ZUl0KGZvbykKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKyAgICB9CisKKyAgICBhc3NlcnQoZGVsZXRlSXQoImJheiIpID09ICJiYXoi
KQorICAgIGRlbGV0ZUl0KFN5bWJvbCgiaGkiKSkKK30KK25vSW5saW5lKHRlc3ROb25PYmplY3Qp
CisKK2Z1bmN0aW9uIHRlc3ROb25PYmplY3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgZnVuY3Rpb24gZGVsZXRlSXQoZm9vKSB7CisgICAgICAgIGFzc2VydChkZWxldGUgZm9v
WyJiYXoiXSkKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShkZWxldGVJ
dCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSB7IGJhejogaiB9CisgICAgfQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQor
CisgICAgICAgIGFzc2VydCgiYmF6IiBpbiBmb28pCisgICAgICAgIGRlbGV0ZUl0KGZvbykKKyAg
ICAgICAgZGVsZXRlSXQoNSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9
CisKKyAgICBhc3NlcnQoZGVsZXRlSXQoImJheiIpID09ICJiYXoiKQorICAgIGRlbGV0ZUl0KFN5
bWJvbCgiaGkiKSkKKworICAgIGxldCBmb28gPSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShmb28sICdiYXonLCB7CisgICAgICB2YWx1ZTogNDIsCisgICAgICBjb25maWd1cmFibGU6IGZh
bHNlCisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGVJdChmb28pKQorfQor
bm9JbmxpbmUodGVzdE5vbk9iamVjdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdEV4Y2VwdGlvblVu
d2luZCgpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBtdXRhdGVUaGVtKGEs
YixjLGQsZSxmLGcsaCxpKSB7CisgICAgICAgIGcuaSA9IDQyCisgICAgfQorICAgIG5vSW5saW5l
KG11dGF0ZVRoZW0pCisKKyAgICBmdW5jdGlvbiBkZWxldGVJdChmb28pIHsKKyAgICAgICAgbGV0
IGNhdWdodCA9IGZhbHNlCisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciBhID0geyBp
OiAxIH0KKyAgICAgICAgICAgIHZhciB2ID0geyBpOiAxMCB9CisgICAgICAgICAgICB2YXIgYiA9
IHsgaTogMTAwIH0KKyAgICAgICAgICAgIHZhciBjID0geyBpOiAxMDAwIH0KKyAgICAgICAgICAg
IHZhciBkID0geyBpOiAxMDAwMCB9CisgICAgICAgICAgICB2YXIgZSA9IHsgaTogMTAwMDAwIH0K
KyAgICAgICAgICAgIHZhciBmID0geyBpOiAxMDAwMDAwIH0KKyAgICAgICAgICAgIHZhciBnID0g
eyBpOiAxMDAwMDAwMCB9CisgICAgICAgICAgICB2YXIgaCA9IHsgaTogMTAwMDAwMDAwIH0KKyAg
ICAgICAgICAgIHZhciBpID0geyBpOiAxMDAwMDAwMDAwIH0KKworICAgICAgICAgICAgbXV0YXRl
VGhlbShhLGIsYyxkLGUsZixnLGgsaSkKKworICAgICAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0K
KworICAgICAgICAgICAgYSA9IGIgPSBjID0gZCA9IGUgPSBmID0gZyA9IGggPSBpCisgICAgICAg
IH0gY2F0Y2ggeworICAgICAgICAgICAgYXNzZXJ0X2VxKGEuaSwgMSkKKyAgICAgICAgICAgIGFz
c2VydF9lcShpLmksIDEwMDAwMDAwMDApCisgICAgICAgICAgICBhc3NlcnRfZXEoZy5pLCA0MikK
KyAgICAgICAgICAgIGNhdWdodCA9IHRydWUKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2F1
Z2h0CisgICAgfQorICAgIG5vSW5saW5lKGRlbGV0ZUl0KQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCAxMDAwMDA7ICsraikgeworICAgICAgICBhc3NlcnQoIWRlbGV0ZUl0KHsgaiwgYmF6OiA1
IH0pKQorICAgIH0KKworICAgIGxldCBmb28gPSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShmb28sICdiYXonLCB7CisgICAgICB2YWx1ZTogNDIsCisgICAgICBjb25maWd1cmFibGU6IGZh
bHNlCisgICAgfSk7CisKKyAgICBhc3NlcnQoZGVsZXRlSXQoZm9vKSkKK30KK25vSW5saW5lKHRl
c3RFeGNlcHRpb25VbndpbmQpCisKKy8vZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
Ky8vICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKy8vICAgIHRlc3RDYWNoZWFibGVEZWxl
dGVCeVZhbCgpCisvLyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKy8vICAgIHRl
c3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpCisvLyAgICB0ZXN0RGVsZXRlSW5kZXgoKQorLy8g
ICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKKy8vICAgIHRlc3RCaWdpbnREZWxldGVCeVZh
bCgpCisvLyAgICB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwoKQorLy8gICAgdGVzdFN0cmljdCgpCisv
LyAgICB0ZXN0T3ZlcnJpZGUoKQorLy8gICAgdGVzdE5vbk9iamVjdCgpCisvLyAgICB0ZXN0Tm9u
T2JqZWN0U3RyaWN0KCkKKy8vfQorCit0ZXN0RXhjZXB0aW9uVW53aW5kKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391427</attachid>
            <date>2020-02-21 14:35:31 -0800</date>
            <delta_ts>2020-02-24 12:51:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200221143530.patch</filename>
            <type>text/plain</type>
            <size>220960</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDI3NDBmNDllZGMwZWQ3MmU3YzUzZjg3NzNiYzQ2NzUwNzM1NGYyLi40ZTAyMmNkZTZjOWM2ODNi
MDgwYmVhOWZjNzAxYzllOTNkOGZkOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMy45MDk2eCBmYXN0
ZXIKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYyAgZGVm
aW5pdGVseSAxLjUyMzl4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90
b3R5cGUtY2hhaW4gICAgICAobmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxl
dGVQcm9wZXJ0eUZvcktleSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFt
ZU1hdGNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlBy
b3BlcnR5Q2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50
Q2VsbCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6bmV3U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5o
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6
CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVh
YmxlSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAg
KiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3Vt
ZW50czo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFi
bGVNaXNzKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1
cmFibGUpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3Mg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJh
YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNo
aW5nKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1
bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAg
IChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6Cisg
ICAgICAgIChKU0M6OnZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5Lmg6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAq
IHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0
aFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgor
CiAyMDIwLTAyLTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHN1cHBvcnQgZm9yIGJ5dGVjb2RlIGNhY2hpbmcgbW9yZSByb2J1c3QgYWdhaW5zdCBmaWxl
IGNvcnJ1cHRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGNmMTJmMjc2NTBkNDhkNTAxNWI4ZGNjMTFlNTc4MjViMzVhZGI4
MDIuLmYyOTcyMzFjZWY1MDEwOGViM2M0MjY4Y2NkNzg4NGYwYTg3MTA5MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBw
bGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5o
OgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06
OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpidWlsZExpc3QgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
cmVtb3ZlSWYpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YmVnaW4pOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTcGVjdHJ1bTo6ZW5kKTogRGVsZXRlZC4KKwogMjAyMC0wMi0yMSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjU3MDcy
KTogTW90aW9uTWFyayB8IE1hYyB8IC0xMCUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YzM1ODg0M2RlYTkxMGJj
ZWFkOTE3MWFjNmMzMjdmODgxMjcyZmU4Li44NDAwZDdiZDk5MmIxMDQwOTY4M2E0M2M3NTM2ZjIx
NWE2NDk4OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDItMjEgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBD
YWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0
aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZW1vdGVET01X
aW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZW1vdGVET01XaW5kb3c6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJh
dGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChH
ZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06
CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6XSk6CisgICAg
ICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMjAtMDIt
MjEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIGFuIHVudXNlZCBsb2NhbCB2YXJpYWJsZSBhZnRlciByMjU2ODA4CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIx
OWNmMTVjYTVmNWZlOTczY2NjMzdjOTFjZGM0YWFkZDRiZTE1MzcuLjJjYWJkZmVmZmYzMjc1ODhk
ZDkwZTE3ZTY1NmY4OGMzZDc4ZjA1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAt
MDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAg
ICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAtMDIt
MjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjU1NTMzKSBOdWxsIERlcmVmIG9mIF9zZXNzaW9uV3JhcHBlciB1bmRlciBbV0tOZXR3b3Jr
U2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBs
ZXRpb25IYW5kbGVyOl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAzZDdiNDc2OWRj
MGNiMTY5ZDg5YTNlNWE4NzY4NmYzYTc3M2VjM2U4Li5mMWQ4ZjVmMzJmMTBjMzQ3MGVjNTk5ZjE0
MWYzZjc1OTgyMzUyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjAtMDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUu
Y29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAtMDItMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBMYXJn
ZSBmb3JtIGNvbnRyb2xzIGFyZSByZW5kZXJlZCBhdCB0aGUgd3JvbmcgTlNDb250cm9sU2l6ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAwMzRi
MzU3YzA3MzhlMzQ5MTI1ODg1OGQ3MDY5ODlmZWZjYjQ4MzNkLi45MmNhOTI0Nzc5NjJiYzA0Yzdh
OGViODZhMWY0MTVkMmIxODdmMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaApAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCk7CiAKICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IGNkNTExYmZk
Mjg0YTAxMzI1MmE2NDA1YTY3MDdhYWQxMzdhMWJjY2IuLjRiZWMzM2E3MmRjMjg0NzdhNjEzNTZm
ZGI5MjBhNDc2ODYyZWQ3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2IKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00MTgs
NyArNDE4LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CkBAIC00MjYsNyArNDI2LDggQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWMKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIEpTQ2FsbGJhY2tP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwotICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7
CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggZjdmOWRhYjNmMjhhZGMwZWFiYjJiZGU4YjI1MDY3NzJhZDI1ZmZjZS4uOWRmODc4ZTU4
OGZhMmFlZjA2MjJhYzY5NTg3ODFhYmU2N2EzN2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTQ3OSw3ICs0NzksOCBAQCBib29sIEpTT2JqZWN0RGVs
ZXRlUHJvcGVydHlGb3JLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUgogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNl
cHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwog
ICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUzNCw3ICs1MzUsOCBAQCBib29sIEpTT2JqZWN0RGVsZXRl
UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcgogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCi0gICAgYm9v
bCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSk7CisgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSwgc2xvdCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDkxZTQyN2MzMGM1MTE2M2VkZDlmMTA2
ZDQyZjk1ZTA5ZDAyYmU5YzQuLjc1NTZlOTU2ZmM2MzJmN2UyYjlkMGUxYWRiZjdjYTgxZjhlOGYw
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxNSw2ICs4MTUsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRp
bWUvRGF0ZUluc3RhbmNlLmgKICAgICBydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgKICAgICBy
dW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCisgICAgcnVudGltZS9EZWxldGVQcm9w
ZXJ0eVNsb3QuaAogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50
aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZjQyYzJhZThmZTU5MmJmNmQ2ODI4NTM4
OTc2ZDBjZjZkYTZkYjFmLi5mYjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIwMmM0ZjZlNDQxODVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3OCw2ICsxMTc4LDcgQEAKIAkJ
NzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwMTFB
RkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRCRUEy
MDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyog
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmggKi87IH07CisJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxl
dGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3M0UzNzk5
NDIyRTBFRjY1MDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2
NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovOyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5
M0E2RTcgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRl
eHRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzkwMDgxMzkxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUy
RDdDRCAvKiBXYXNtTW9kdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTM5NzEsNiArMzk3Miw3IEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0
OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyQUFGN0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczNEI2NTU0MjNG
NEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGVsZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzNFMzc5OTUyMkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9v
cFN0cmVuZ3RoLmNwcDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9k
dWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDg0LDYgKzcwODYsNyBAQAog
CQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJ
CQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCTE2
OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywK
KwkJCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8s
CiAJCQkJMEZFMDUwMEYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8s
CiAJCQkJMEZFMDUwMTAxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5oICovLAog
CQkJCTBGRTA1MDBEMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuY3Bw
ICovLApAQCAtOTIwOSw2ICs5MjEyLDcgQEAKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcg
LyogRGVmZXJyZWRTb3VyY2VEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0
NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkJCNzNCQjFERUY4NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8q
IERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAw
QThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDMx
N0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMTA2NjIsNyArMTA2NjYsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyog
UHJvamVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYXR0cmlidXRl
cyA9IHsKLQkJCQlCdWlsZEluZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CiAJCQkJ
RGVmYXVsdEJ1aWxkU3lzdGVtVHlwZUZvcldvcmtzcGFjZSA9IE9yaWdpbmFsOwogCQkJCUxhc3RT
d2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTAwMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAyYWY0
ODBhOWNlN2Q4MDI1Y2U1ODgzZDhhZGY5Yzk4NDI2OWJhOTc1Li44ZWRlMjg0OGQyYzlhZjllZjM4
YjY0YTY0Mzk5ZmIxMjFiOWU2M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC03Myw2ICs3Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlz
czoKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdM
ZW5ndGg6CkBAIC0xMDYsNyArMTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RG
TW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAtMTIz
LDYgKzEyNSwyMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCitz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAorICAg
IFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3
U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgIGlmICghbmV3U3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAg
ICAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQg
dG8gY2hlY2sgdGhlIGpzY2VsbC4KKyAgICAgICAgLy8gU2VlIHRoZSBEZWxldGUgY29kZSBiZWxv
dy4KKyAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIG5ld1N0cnVjdHVy
ZS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisKKyAgICAgICAg
aWYgKG1heU5lZWRUb0NoZWNrQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9
LCB7IH0pKTsKK30KKwogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjYyLDYg
KzI4MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkg
Y29uc3QKICAgICBjYXNlIExvYWQ6CiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBi
eV92YWwgZm9yIHRoZXNlIHB1dHMsIGJ1dCB3ZSBkbyBjYXJlIGFib3V0IHRoZSBpZGVudGlmaWVy
LgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNl
OiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zMDksNiArMzMwLDkg
QEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjaygpIGNvbnN0CiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9u
OgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAg
IGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlzczoKICAg
ICBjYXNlIEdldEdldHRlcjoKQEAgLTM1Niw2ICszODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6Om5l
ZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExv
YWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVs
ZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxh
Y2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTQ0Nyw2ICs0NzQs
OSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsKFZNJiB2bSwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgog
ICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6Cisg
ICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAg
IGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00
OTIsNiArNTIyLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8
SlNDZWxsKj4qIGNlbGxzVG9NYXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIEN1c3RvbUFj
Y2Vzc29yU2V0dGVyOgogICAgICAgICBkb2VzQ2FsbHMgPSB0cnVlOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBj
YXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBj
YXNlIE1pc3M6CkBAIC02MTQsNiArNjQ3LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNl
KGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKSBjb25zdAogCiAgICAgY2FzZSBMb2FkOgogICAgIGNh
c2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNh
c2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTY2Myw3ICs2OTksNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAicHJvdG90eXBlIGFjY2VzcyBjaGFpbiA9ICIpOwogICAgICAgICBtX3BvbHlQcm90
b0FjY2Vzc0NoYWluLT5kdW1wKHN0cnVjdHVyZSgpLCBvdXQpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFu
c2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9pbnRl
ckR1bXAobmV3U3RydWN0dXJlKCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUpCiAg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcCht
X3N0cnVjdHVyZS5nZXQoKSkpOwpAQCAtNzA1LDYgKzc0MSw3IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToK
ICAgICAgICAgaWYgKHZpc2l0b3Iudm0oKS5oZWFwLmlzTWFya2VkKG1fc3RydWN0dXJlLT5wcmV2
aW91c0lEKCkpKQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX3N0cnVj
dHVyZS5nZXQoKSk7CiAgICAgICAgIGVsc2UKQEAgLTE4NTEsNyArMTg4OCw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICAgICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNw
aWxsU3RhdGUsIHJlc3VsdFJlZ2lzdGVyVG9FeGNsdWRlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7
CiAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3Ms
CkBAIC0xODk2LDYgKzE5MzMsNzEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNs
b3dQYXRoLmVtcHR5KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBEZWxl
dGU6IHsKKyAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5m
by51c2VkUmVnaXN0ZXJzKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJl
Z3MoKSk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGFsbG9j
YXRvci5sb2NrKGJhc2VHUFIpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsK
KyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0Jl
ZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3Bl
cnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSB2YWx1
ZVJlZ3MuZ3ByKCkpOworICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgQVNTRVJUKHZhbHVlUmVncy5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKworICAgICAgICBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0K
KyAgICAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhq
aXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3Bh
Y2UpOworCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBib29sIGhh
c0luZGV4aW5nSGVhZGVyID0gbmV3U3RydWN0dXJlKCktPm1heUhhdmVJbmRleGluZ0hlYWRlciht
YXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhpcyBjYXNl
IHlldCBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAg
IC8vIFNlZSBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGFuZCBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkuCisgICAgICAgIEFTU0VSVCghbWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAg
Ly8gQ2xlYXIgdGhlIGJ1dHRlcmZseSBpZiB3ZSBoYXZlIG5vIHByb3BlcnRpZXMsIHNpbmNlIG91
ciBwdXQgY29kZSBleHBlY3RzIHRoaXMuCisgICAgICAgIGJvb2wgc2hvdWxkTnVrZVN0cnVjdHVy
ZUFuZENsZWFyQnV0dGVyZmx5ID0gIW5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICYmIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFoYXNJbmRleGluZ0hlYWRl
cjsKKworICAgICAgICBqaXQubW92ZVZhbHVlKEpTVmFsdWUoKSwgdmFsdWVSZWdzKTsKKworICAg
ICAgICBpZiAoc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5KSB7CisgICAgICAg
ICAgICBqaXQubnVrZVN0cnVjdHVyZUFuZFN0b3JlQnV0dGVyZmx5KHZtLCB2YWx1ZVJlZ3MucGF5
bG9hZEdQUigpLCBiYXNlR1BSKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0lubGluZU9mZnNldCht
X29mZnNldCkpIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAg
IHZhbHVlUmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAg
ICAgICAgICAgICAgICAgIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSArCisgICAgICAgICAgICAgICAgICAgIG9mZnNldEluSW5s
aW5lU3RvcmFnZShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAg
IGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5CdXR0ZXJmbHko
bV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAgICB1aW50
MzJfdCBzdHJ1Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1Y3R1cmUo
KS0+aWQoKSk7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlQml0cyksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisKKyAgICAg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0cnVlKSwgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSk7CisKKyAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3Rl
cnNCeVBvcHBpbmcoaml0LCBwcmVzZXJ2ZWRTdGF0ZSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJh
YmxlOiB7CisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZmFs
c2UpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVNaXNzOiB7CisgICAgICAg
IGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCkpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlMZW5ndGg6IHsKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmgKaW5kZXggNzlkMzEwMTU1ZTkzYTU0NTNkMjg2MWM0MzIyN2JhM2JhYzE5ZjI3
Ny4uMTA4ZmVmM2IzMzAxMmNmNGU3ZGIyN2UyMGE2MjYwMjA3ODVkMjE1OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC04NSw2ICs4NSw5IEBAIHB1
YmxpYzoKICAgICBlbnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgTG9hZCwKICAg
ICAgICAgVHJhbnNpdGlvbiwKKyAgICAgICAgRGVsZXRlLAorICAgICAgICBEZWxldGVOb25Db25m
aWd1cmFibGUsCisgICAgICAgIERlbGV0ZU1pc3MsCiAgICAgICAgIFJlcGxhY2UsCiAgICAgICAg
IE1pc3MsCiAgICAgICAgIEdldEdldHRlciwKQEAgLTE0NSw5ICsxNDgsMTEgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
PSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOwogCi0gICAg
Ly8gVGhpcyBjcmVhdGUgbWV0aG9kIHNob3VsZCBiZSB1c2VkIGZvciB0cmFuc2l0aW9ucy4KLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0
ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5p
cXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisg
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKQEAgLTE1
Nyw3ICsxNjIsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0
CiAgICAgewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmICht
X3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVy
ZS5nZXQoKTsKICAgICB9CkBAIC0xNjUsNyArMTcwLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUcmFuc2l0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1f
dHlwZSA9PSBEZWxldGUpOwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcAppbmRleCAxMzI0MDljMGE0NTEwYmRmYThlY2UzM2I3NDM0NzE2MDJkN2IwZTc5
Li5iMTY2YzMwYzE4YTUyM2E3NjI1ZjM5YWY2Yjc4OTUwNjdhYTVmMGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAg
LTc5NSw2ICs3OTUsMTUgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFj
Y2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZSkKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlRyYW5zaXRp
b246CiAgICAgICAgIG91dC5wcmludCgiVHJhbnNpdGlvbiIpOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3Vy
YWJsZToKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVOb25Db25maWd1cmFibGUiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgb3V0
LnByaW50KCJEZWxldGVNaXNzIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nh
c2U6OlJlcGxhY2U6CiAgICAgICAgIG91dC5wcmludCgiUmVwbGFjZSIpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcAppbmRleCA2MTc4NzM3ZjlmOGE5Y2QwYjZkZGFkNTdmMWNmMTJlZmU0ZmNhNzA1
Li45NmExYmFlY2JlNGNiYmI3NmRiZGVkYTgwNTY1YTJjNTk4NjU1MjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAg
LTI3Niw2ICsyNzYsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICBy
ZXNldEluc3RhbmNlT2YoKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQ6CisgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVs
QnlLaW5kOjpOb3JtYWwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRl
bGV0ZUJ5VmFsOgorICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2lu
ZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgZGVyZWYo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgKaW5kZXggZGRjZTg1ZWMwMjU1NTc2YzllMzQ1MWY2NDczNmQxMmMzODk0MjgwMy4uYjU3
NWJkZDIxNjE5YzJkZmU0ZjE4MmZhZWQ5MGYyNjhlOWUyNjE5YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU1LDcgKzU1
LDkgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90IHsKICAgICBHZXRCeVZhbCwKICAg
ICBQdXQsCiAgICAgSW4sCi0gICAgSW5zdGFuY2VPZgorICAgIEluc3RhbmNlT2YsCisgICAgRGVs
ZXRlQnlJRCwKKyAgICBEZWxldGVCeVZhbAogfTsKIAogZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBp
bnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2Nv
cGUuY3BwCmluZGV4IDI2ZTI4MjkzOWU5YWNhODg2NWMyMjE3NzNjMmE0MWUwMjgwOTRkZGEuLjQ4
YjViODZmYTRiOWU4NjVlYTQ4ZGM5OWE0OTNiZDk0OGQwNzRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKQEAgLTEyOSwxNCArMTI5
LDE0IEBAIGJvb2wgRGVidWdnZXJTY29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIERlYnVnZ2VyU2NvcGU6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
RGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwogICAg
IEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6
Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIERlYnVnZ2Vy
U2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclNjb3BlLmgKaW5kZXggZmY0Y2UxYjFkYTRiNTc5MGRlOGFkOTg4YTcxZjYwMmNkZjI2MTY3
NC4uNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlhMWEyMTQ5Nzc1ZWRkODAyZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDdmZmEzOGU2NmQyZTA4ZDc0NTk4OWJkNjEyOWRiZWFh
MGZhMGQwN2IuLmZiMWFhNTIwZDI0NTM4MjYwNDcyMTBiMzgzMjg5ZmFjM2M1ZjU2YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTYxOCw2ICsx
NjE4LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgRGVsZXRlQnlWYWw6IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+
c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIg
YmFzZWQgb24gcmVhZGluZyB0aGUKQEAgLTI1MTgsOCArMjUzMCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRv
cjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKLSAg
ICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3Ogog
ICAgICAgICBjYXNlIElzRW1wdHk6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGUzZTIwOGQyZGEx
Y2Q3MzliZmFjYzhjMzRjNTQ5N2NjNTYyZGI5MzYuLjM4NzE1OTE3ODkwMzEyMGE2MTI2NDVlNGEy
MzQzNTEzYmE1ZGJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCkBAIC0yNDYsNiArMjQ2LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHNX
aXRoVGhpcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeVZh
bHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0QnlJZHMsIGxp
bmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIGxpbmtCdWZm
ZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5rQnVmZmVyKTsK
ICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwogICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggNDg4MDg3NGMyODVhYjdk
NDQ3ZWI4OTNhNmU4YjRiYmYwMTA3MzFkNC4uMmZiNmFkOGY2MmY5NWEyNmU2Y2RiODI2YWE2ZDFj
ZDY3ZjE5NDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aApAQCAtMTkxLDcgKzE5MSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3B1dEJ5SWRz
LmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93
UGF0aCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgYWRkRGVsQnlJZChjb25zdCBKSVREZWxC
eUlkR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAgICB7Cisg
ICAgICAgIG1fZGVsQnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeUlkR2Vu
ZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGREZWxCeVZhbChj
b25zdCBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1Bh
dGgpCisgICAgeworICAgICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVy
PEpJVERlbEJ5VmFsR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCiAgICAgdm9p
ZCBhZGRJbnN0YW5jZU9mKGNvbnN0IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiwgU2xvd1Bh
dGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgbV9pbnN0YW5jZU9mcy5hcHBl
bmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+KGdlbiwgc2xvd1Bh
dGgpKTsKQEAgLTM0OCw2ICszNTgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxJbmxpbmVDYWNo
ZVdyYXBwZXI8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiwgND4gbV9nZXRCeUlkc1dpdGhU
aGlzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlWYWxHZW5lcmF0b3I+
LCA0PiBtX2dldEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5
SWRHZW5lcmF0b3I+LCA0PiBtX3B1dEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBw
ZXI8SklURGVsQnlJZEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlJZHM7CisgICAgVmVjdG9yPElubGlu
ZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlWYWxzOwogICAg
IFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4gbV9pbkJ5
SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVyYXRv
cj4sIDQ+IG1faW5zdGFuY2VPZnM7CiAgICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0Nh
bGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCA2NDJiMTYzNTZmOTBlOWMzODYwMmViYzU3ZmQ5ZTA0YTBmNDViNTI4Li5lZTQ2YjA5
YjhkMGM5MzMxOTYyNTMyZTAxZjc4M2UzYzE4MGRmMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTE0NSw0MyArMTE0NSw2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVE
ZWxldGVCeUlkKE5vZGUqIG5vZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
LQotICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQotICAgIHZhbHVlLnVzZSgpOwotCi0g
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
SWQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgaWRl
bnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKLSAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwotCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci19Ci0KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQotewotICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwot
Ci0gICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0gICAgSlNW
YWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICBiYXNlLnVzZSgpOwotICAgIGtleS51c2UoKTsKLQot
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eVZhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGtl
eVJlZ3MpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
LX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9k
ZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjdXJyZW50U2NvcGUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZWNmYzkwMzkwYjY4NzQ4NjA4Y2UxZDBjMGYwOTI1YmUy
Nzg4MzM0Mi4uMzRlOTU1ZGMyZGUwMjZmMzU4ZDI1N2YzYWMyNjI5Mjk0MTI3ZWU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCkBAIC00Mjc4LDYgKzQyNzgsNDMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ymxlc3NCb29s
ZWFuKEdQUlJlZykKIHsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgdmFsdWUudXNlKCk7CisKKyAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBpZGVudGlmaWVy
VUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKKyAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVn
cyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKworICAgIGJhc2UudXNlKCk7CisgICAga2V5LnVzZSgpOworCisgICAgZmx1
c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywga2V5UmVncyk7
CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1
bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSYW5kb20oTm9kZSogbm9kZSkKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDM3MjhiODUzZmFiYWIyOGJmNDQ1
NGM5NTA1NGZjZjU3YzQ1YmQ1NGMuLjUxMDZhNGEzYTY4ZjQ5MTdhNTNlOTY0M2Q2NWI4MWE2MDhi
OTBiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtNTQzOSw2ICs1NDM5LDg4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTdHJpbmdDb2RlUG9pbnRBdChOb2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0KHNjcmF0
Y2gxR1BSLCBtX2N1cnJlbnROb2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hp
bGQxKCkpOworCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgYXV0byogcHJvcGVydHkg
PSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFz
ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsK
KyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOworCisgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JF
eGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJT
ZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVERlbEJ5
SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCByZXN1bHRHUFIsIHNj
cmF0Y2hHUFIpOworCisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBwcm9wZXJ0eSk7
CisKKyAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIHVuYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCit7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOworCisgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5j
aGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNW
YWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7
CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IFVudHlwZWRVc2UpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGJhc2VSZWdzKSk7CisgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2Vs
bChrZXlSZWdzKSk7CisKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4u
c2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxT
aXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2lu
LCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhp
cy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAg
ICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3Rl
cnMsCisgICAgICAgIGJhc2VSZWdzLCBrZXlSZWdzLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwor
CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywga2V5UmVncyk7CisKKyAgICBtX2pp
dC5hZGREZWxCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEYXRlR2V0
KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggNGQzNDI3YmM4MmU4YzliMjQ3YWM4NzFhMDIwMDAxYmIyMzgyOWYyNi4uYjg4
ZjNkYTVjMDBhZTkzYjczMTg0YjM3MGIzNDhhNmRkNzJkNDExZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTE0NCwyMCArNTE0NCwxNjgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2Us
IHN1YnNjcmlwdCwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygp
KSwgYWNjZXNzb3IpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPERlbEJ5S2luZCBraW5kLCB0eXBl
bmFtZSBTdWJzY3JpcHRLaW5kPgorICAgIHZvaWQgY29tcGlsZURlbEJ5KExWYWx1ZSBiYXNlLCBT
dWJzY3JpcHRLaW5kIHN1YnNjcmlwdFZhbHVlKQorICAgIHsKKyAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50OworICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5k
OjpOb3JtYWwpIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KElu
dDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGJh
c2UsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CisgICAgICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShiYXNlLCBWYWx1ZVJlcDo6U29t
ZUxhdGVSZWdpc3RlcikpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoc3Vic2NyaXB0VmFsdWUsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSAxOworCisgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPQorICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOworCisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwor
ICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRl
LT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworCisgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4
Y2VwdGlvbnMgPQorICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxl
RXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJhc2Ug
PSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmV0
dXJuR1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdw
cigpICE9IHJldHVybkdQUik7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0g
cGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAh
PSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKworICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKKworICAgICAgICAgICAgICAg
IGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gWyZdICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7CisgICAgICAgICAgICAgICAgfSgpOworCisg
ICAgICAgICAgICAgICAgY29uc3QgYXV0byBzdWJzY3JpcHQgPSBbJl0geworICAgICAgICAgICAg
ICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNj
cmlwdFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1zWzJdLmdw
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5n
cHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisKKyAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybkdQUiwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERl
bEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBi
YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgcmV0dXJuR1BSLCBw
YXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChq
aXQpOworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKSk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0
LmxhYmVsKCk7CisKKyAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCisgICAgICAg
ICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZlciwgbGlua0J1
ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3Ra
ZXJvNjQocGF0Y2hwb2ludCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5SWQo
KQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZhbHVl
IGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBhdXRvIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAg
ICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVs
ZXRlQnlJZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgbV9vdXQuY29uc3RJbnRQ
dHIodWlkKSkpKTsKKyAgICAgICAgTFZhbHVlIGJhc2U7CisKKyAgICAgICAgc3dpdGNoIChtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAg
ICAgICAgIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAg
IGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgREZHX0NSQVNIKG1f
Z3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtpbmQ6Ok5vcm1hbD4oYmFzZSwgbV9n
cmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXSk7CiAgICAgfQog
CiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlWYWwoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMigpKTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKElu
dDY0LCBvcGVyYXRpb25EZWxldGVCeVZhbCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFz
ZSwgc3Vic2NyaXB0KSkpOworICAgICAgICBMVmFsdWUgYmFzZTsKKyAgICAgICAgTFZhbHVlIHN1
YnNjcmlwdDsKKworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7
CisgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAgYmFzZSA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBr
aW5kIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2gg
KG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQ2VsbFVzZTogewor
ICAgICAgICAgICAgc3Vic2NyaXB0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7Cisg
ICAgICAgICAgICBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtpbmQ6Ok5v
cm1hbEJ5VmFsPihiYXNlLCBzdWJzY3JpcHQpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBp
bGVBcnJheVB1c2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0
YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCA1ZDMwOTI4
ZjRhODViNGFkZTQ0NGM0M2Y1YWRkZjIzMTdmNDI2NWI3Li45MDQwZGYzODIwNzY0ZWRmOGQ1MTYx
MWY4NjBmYzRkNDI2NTZjMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAt
NzAsNyArNzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhQdXRCeUlkQWRkQWNjZXNz
Q2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhQ
dXRCeUlkU2VsZlBhdGNoKSBcCi0gICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKQorICAgIG1hY3Jv
KEluQnlJZFNlbGZQYXRjaCkgXAorICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhKdW1wKSBcCisg
ICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpCiAKIGNsYXNzIElDRXZlbnQgewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDA5MWM0Zjc4MmEwNzg0ZmM0NTI1
ZWQyMDc5NjljZDFiNzg3NDRlODYuLmM2ZTYxYjg5YmY5YTFhMTk1YzNlODM4NjRjMWNhMTc4NDA4
YTViMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTUwMCw2ICs1MDAsOCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fZ2V0QnlJZFdpdGhUaGlz
SW5kZXggPSAwOwogICAgIG1fcHV0QnlJZEluZGV4ID0gMDsKICAgICBtX2luQnlJZEluZGV4ID0g
MDsKKyAgICBtX2RlbEJ5VmFsSW5kZXggPSAwOworICAgIG1fZGVsQnlJZEluZGV4ID0gMDsKICAg
ICBtX2luc3RhbmNlT2ZJbmRleCA9IDA7CiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggPSAw
OwogICAgIG1fY2FsbExpbmtJbmZvSW5kZXggPSAwOwpAQCAtNTgwLDYgKzU4Miw4IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2Rl
bF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCkBAIC04NzUsNiArODc5LDggQEAgQ29tcGls
YXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5
VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHNX
aXRoVGhpcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0QnlJ
ZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRzLCBw
YXRjaEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxCeVZhbHMsIHBhdGNo
QnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIHBhdGNoQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBwYXRjaEJ1ZmZlcik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDdiNDQwNzQ5NjMzMzZmY2I4OTQxZWJkMDVi
NTk3MzEyOWE5ZTg2NTUuLjY3MTY2NjFkZjRmYWNlYTVlZmVkNWY1MTA4MWYwNTliNmQyNTNkNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTAwLDcgKzUwMCw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaWRlbnRpdHlfd2l0aF9wcm9maWxlKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1Zyhjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
ZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTkxMyw2ICs5MTUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVy
YXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAgICAgICBWZWN0b3I8SklUUHV0QnlJZEdlbmVy
YXRvcj4gbV9wdXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEluQnlJZEdlbmVyYXRvcj4gbV9p
bkJ5SWRzOworICAgICAgICBWZWN0b3I8SklURGVsQnlJZEdlbmVyYXRvcj4gbV9kZWxCeUlkczsK
KyAgICAgICAgVmVjdG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBtX2RlbEJ5VmFsczsKICAgICAg
ICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CiAgICAgICAg
IFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZhbENvbXBpbGF0aW9uSW5mbzsKICAg
ICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1fY2FsbENvbXBpbGF0aW9uSW5mbzsK
QEAgLTkzNCw2ICs5MzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9n
ZXRCeUlkV2l0aFRoaXNJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0
QnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9pbkJ5SWRJbmRleCB7
IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlWYWxJbmRleCB7IFVJTlRfTUFY
IH07CisgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAg
ICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNp
Z25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2ln
bmVkIG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA5MjBi
NzIwM2UzY2Y0YmYwNmVlZDQ1NzNhMzljYjU2YmNjYTY1ZDVhLi5iMGFkNjNiYzUxMWMyNzU1NDM3
NzEyMGE0OGZmZjM2MmJkMTU1ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTYyLDYgKzE2Miw2OCBAQCBW
X0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rp
b24oKQogICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemU7CiB9CiAK
K0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyBwcm9wZXJ0eSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCisgICAg
OiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6
RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29uc3Rh
bnRJZGVudGlmaWVyID0gZmFsc2U7CisgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJl
c3VsdCk7CisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAg
IG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJ
bmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+di5wcm9w
ZXJ0eVRhZ0dQUiA9IHByb3BlcnR5LnRhZ0dQUigpOworI2VuZGlmCisgICAgbV9zdHViSW5mby0+
dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAgIG1fc3Rh
cnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1w
KCk7CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisKK3ZvaWQgSklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBz
bG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5h
bGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKK0pJVERlbEJ5SWRHZW5lcmF0b3I6
OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNj
cmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZv
LT5oYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOworICAgIEFTU0VSVChiYXNlLnBheWxvYWRH
UFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRH
UFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1
YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52LnBy
b3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgorICAgIG1fc3R1YkluZm8tPnVz
ZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7Cit9CisKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAgIG1fc3RhcnQg
PSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7
CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRv
cjo6ZmluYWxpemUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQoreworICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXpl
KAorICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKK30KKwogSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJ
bkJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggYmZiOTAyMTZiMjljMjdmZmQw
ZWQ4ZDdmMGY1ODdlMDhmZTZlNzMxNi4uMjZlNzAwZmJiN2FkMTgzYmUxYWNiYTczZjM3ZjZmYjQy
ZmVmY2QwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaApAQCAtMTQyLDYgKzE0Miw1NiBAQCBwcml2YXRlOgogICAgIFB1dEtp
bmQgbV9wdXRLaW5kOwogfTsKIAorY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigpIHsgfQorCisg
ICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIHNjcmF0Y2gpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1w
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNT
ZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisg
ICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVy
LCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93
UGF0aEp1bXA7Cit9OworCitjbGFzcyBKSVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3I7CitwdWJsaWM6CisgICAgSklURGVsQnlJZEdlbmVyYXRvcigpIHsgfQorCisgICAgSklU
RGVsQnlJZEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFs
dWVSZWdzIGJhc2UsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKworICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93
UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemUoCisgICAgICAgIExp
bmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVm
ZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitw
cml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogY2xhc3MgSklUSW5C
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJ
VEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0OGRjNjMz
NC4uN2JkZjFmNzMyYmY0ZTA1ZDliODU2OTZlZjQ2ODQ3ZjNiNTYxMDc2YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMTQyLDcgKzIxNDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOwogfQogICAg
IAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1MCwzMSArMjE1MCw1MSBA
QCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBi
b29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCkpOwor
ICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlk
KSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlm
ICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVs
ZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi0KLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0
dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoIXBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmco
dm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAg
ICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1
ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3Jt
YWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpOworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwg
dWlkKTsKIH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxOTAsNyArMjIxMCw3IEBAIHN0YXRpYyBib29s
IGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBWTSYKICAgICBlbHNlIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IGtl
eS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHkp
OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQpAQCAtMjE5OCwy
MCArMjIxOCw0MiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAgcmV0dXJuIGNvdWxkRGVs
ZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKSkpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFz
ZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVu
dGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAg
aWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
KyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRj
aERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXkp
CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNs
b3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0
aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3Bl
Q2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVm
ZjgyYTMwMGMuLjYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTEsMTAgKzI1MSwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVm
YXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVy
aWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRF
Uk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVu
dFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmpl
Y3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFt
ZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYWJmNTJmNzEz
ZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJmNi4uMmJhMGZhNjg0OGJjZTgyOWFjZDY0MTkw
NWYwNWY0YmQ1NGRjYmUzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICszODcsMzkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CisgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBKSVREZWxCeUlk
R2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDAsIHJlZ1QyKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwor
CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcERlbEJ5SWQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2Rl
Lm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KS5pbXBsKCk7CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCBtX2NvZGVCbG9jay0+
aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHVpZCk7CisgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKworICAgIGJveEJvb2xl
YW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTM5OCw5ICs0
MjgsNDIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3Bl
cnR5LCByZWdUMCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBwcm9w
ZXJ0eSk7CisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QwLCByZWdUMik7Cisg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAgICBib3hCb29s
ZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERl
bEJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgSklURGVsQnlWYWxH
ZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsKKworICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVn
VDEpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdU
MSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhy
ZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdU
MCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA1Y2M3ZGY5YzU0MTg5YzdjYjNk
NDA5MWI1YzRmNGM4YmRhZWVmMTRjLi5iNjY5ZGQ4YjdhZDI2ZDNmNzdkOTY4NmRlNjA4MzQzNGYz
NmRiYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEyMyw3ICsxMjMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9k
ZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBpbnQgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQsIGRzdCwgbV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBtX2NvZGVC
bG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIG51
bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVy
KHByb3BlcnR5KS5pbXBsKCkpOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTMzLDkgKzEzNSwxNCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBl
bWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgbV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKyAgICBib3hC
b29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpIHsgfQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KSB7IH0KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAppbmRleCA5MTgyMDQxNTU0YmRjNzZjMTkxY2IxMzg1ZDEzYTljODFmZmQ0NWViLi5iZTc1MDFl
ZjIyYzE4MzNlNGZiN2YwNmE5YWJlM2FhYjA3NmVkYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKQEAgLTY0MSw3ICs2NDEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
awogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBpZGVudCwg
b2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xk
U3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVB
Y2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXND
YWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpIHsKICAgICAgICAg
ICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsKQEAgLTczNCw2ICs3MzQsNzIgQEAg
dm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5l
cmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAorc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlRGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNl
VmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJl
c3VsdDsKKworICAgIHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApOworCisgICAgICAgIGlm
IChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVV
cE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkgfHwgIW9sZFN0cnVj
dHVyZSB8fCAhb2xkU3RydWN0dXJlLT5pc09iamVjdCgpIHx8ICFvbGRTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOworCisgICAgICAgIGlmICghc2xvdC5pc0NhY2hlYWJsZURlbGV0ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IG5ld0Nhc2U7CisKKyAgICAgICAgaWYgKHNsb3QuaXNEZWxldGVIaXQoKSkgeworICAg
ICAgICAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0OworICAgICAgICAgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwg
bmV3T2Zmc2V0KTsKKyAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVy
ZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpIHx8IG5ld1N0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAg
ICAgICBBU1NFUlQobmV3T2Zmc2V0ID09IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAg
ICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpID09IG9sZFN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0
aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQpKTsKKyAgICAgICAgICAg
IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywgQ2FjaGVh
YmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3
U3RydWN0dXJlKTsKKyAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKKyAgICAgICAg
ICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vz
c0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0
eU5hbWUpLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzLCBDYWNoZWFibGVJZGVudGlm
aWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxs
cHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nh
c2UobG9ja2VyLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CisK
KyAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIHByb3Bl
cnR5TmFtZSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJT
dHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1
cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVM
YXRlcjsKK30KKwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1
ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQp
Cit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisg
ICAgaWYgKHRyeUNhY2hlRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VW
YWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZl
VXBPbkNhY2hlKSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdl
bmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgcHJv
cGVydHlOYW1lKSk7CisgICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAg
ICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7
CisgICAgfQorfQorCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpT
T2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwKICAgICBib29sIHdhc0ZvdW5k
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
QEAgLTEzOTEsNiArMTQ1NywxNSBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
IH0KIAordm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIGlmIChraW5kID09IERlbEJ5
S2luZDo6Tm9ybWFsKQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplKTsKKyAgICBlbHNlCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkIHJlc2V0UGF0
Y2hhYmxlSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXgg
NmYwZjI2NDExZWNkZWExOTJiNzA2MjEwZThhOTk0NGJiNGY5ZmUzOS4uYzFkOTk1OWFkYWZkMzY1
NzYyZTg5MTc5YWIzYzBlZWQ2NmU1ODdkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKQEAgLTQxLDkgKzQxLDE1IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBEaXJlY3QK
IH07CiAKK2VudW0gY2xhc3MgRGVsQnlLaW5kIHsKKyAgICBOb3JtYWwsCisgICAgTm9ybWFsQnlW
YWwKK307CisKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJik7
CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUs
IENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKK3ZvaWQgcmVw
YXRjaERlbEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90
JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0
YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1
ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxp
bmtGb3IoVk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVj
dCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpAQCAtNTMs
NiArNTksNyBAQCB2b2lkIHVubGlua0ZvcihWTSYsIENhbGxMaW5rSW5mbyYpOwogdm9pZCBsaW5r
UG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZv
JiwgQ2FsbFZhcmlhbnQpOwogdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsK
IHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlvbkNh
bGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2Fs
bGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggMjI1NGZjYzQyOTYxN2NlODM5N2QyNGU1NTBlMWFjZWM2N2I2MTQ0My4u
ZmFjYTdiZjRlMTc4ZDQyNWZmYmVmZmU5NTRlOGYzMWViMDAyMDZkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC05MjUsNyArOTI1LDgg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wRGVsQnlJZD4oKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJvb2wgY291bGREZWxldGUg
PSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
LCBzbG90KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikp
OwpAQCAtMTEwOCw3ICsxMTA5LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Rl
bF9ieV92YWwpCiAgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhdXRv
IHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGZm
YjNlYjlkMDA1Y2Y2ZmQwOGZmZDJiYjg4YjlkNTg3YmFlZDBmZjYuLjEwN2I1ZDYwNzIwMzcwNTFm
NmE3YzFlOWNiMGMxNWYyNjU4OTc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaApAQCAtNDIsNiAr
NDIsNyBAQCBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogCiBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Q2FjaGVhYmxlSWRlbnRpZmllcihKU0NlbGwqIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJU
KGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoaWRlbnRpZmllcikpOwogICAgIHNldENlbGxCaXRz
KGlkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCmluZGV4IGZlNmM2YjdkODRjNDdlZGVlMTFhYWMxMWY2NDg0YTcyZDQxN2JjNDYuLjdhNTli
OGZkYjBjMjJjY2JiZDI4ZDgwMzFkYThhMTdlZTA1MzcyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBNZXRob2RU
YWJsZSB7CiAgICAgdXNpbmcgUHV0QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwogICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5U
UlkocHV0QnlJbmRleCk7CiAKLSAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyID0g
Ym9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHVz
aW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgRGVsZXRl
UHJvcGVydHlGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZGVsZXRlUHJvcGVydHkpOwog
CiAgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IDk2YTM2MzVlNjgyNzM5
M2VlODM2ZDgwNDc3NzI0YTI1ZDU0NmMyNjEuLmY2OTk5ZTczNDg0ZTJhYmQ4ODE0NTRmMTE0ODMx
MGMwMmQ0ZjJhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xv
bmVkQXJndW1lbnRzLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRz
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBpZGVudCkKK2Jvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENsb25lZEFyZ3VtZW50cyogdGhpc09iamVj
dCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CkBAIC0yMjksNyArMjI5LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpCiAg
ICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vzc2FyeShnbG9iYWxP
YmplY3QpOwogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiB9CiAKIGJvb2wgQ2xvbmVk
QXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKaW5kZXggZmQzYTI3YmY3MzU1NGQ1
ZWU0YTZlMzFkMGJhMGNhZDE1NzYwNWZmNS4uMDBjNTM0NzU2MDVhNzNiMmIzZWIzOGQzY2Y4MTMy
ODgzNGZmMWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xv
bmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAKICAgICBi
b29sIHNwZWNpYWxzTWF0ZXJpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApp
bmRleCAwZTJiYzNhMjcxOWMyYTkzNTNlN2Q3NTIxYTg3OWJkMTJkNzQwMDY5Li4xZGU4MjM5NTA5
ZTBjOGQ3YTU2YTMyNDE0ZmZlOGE3NGE5Yjc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTk4NSw3ICs5ODUsOCBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgY291bGRE
ZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNs
b3QpOwogICAgIH0KICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGFkNmY2YjQ4MDBlZjU3ODU2MWNhZWRjOWRkYmJjODJmMjUzMmU2MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCkBA
IC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgorI2luY2x1
ZGUgIlByb3BlcnR5U2xvdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIERlbGV0
ZVByb3BlcnR5U2xvdCB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIDogdWludDhfdCB7IFVuY2Fj
aGVhYmxlLCBEZWxldGVIaXQsIENvbmZpZ3VyYWJsZURlbGV0ZU1pc3MsIE5vbmNvbmZpZ3VyYWJs
ZSB9OworCisgICAgRGVsZXRlUHJvcGVydHlTbG90KCkKKyAgICAgICAgOiBtX29mZnNldChpbnZh
bGlkT2Zmc2V0KQorICAgICAgICAsIG1fY2FjaGVhYmlsaXR5KENhY2hpbmdBbGxvd2VkKQorICAg
ICAgICAsIG1fdHlwZShVbmNhY2hlYWJsZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRD
b25maWd1cmFibGVNaXNzKCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IENvbmZpZ3VyYWJsZURl
bGV0ZU1pc3M7CisgICAgfQorCisgICAgdm9pZCBzZXROb25jb25maWd1cmFibGUoKQorICAgIHsK
KyAgICAgICAgbV90eXBlID0gTm9uY29uZmlndXJhYmxlOworICAgIH0KKworICAgIHZvaWQgc2V0
SGl0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IERlbGV0
ZUhpdDsKKyAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgYm9vbCBpc0Nh
Y2hlYWJsZURlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgbV90eXBlICE9
IFVuY2FjaGVhYmxlOyB9CisgICAgYm9vbCBpc0RlbGV0ZUhpdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBEZWxldGVIaXQ7IH0KKyAgICBib29sIGlzQ29uZmlndXJhYmxlRGVsZXRlTWlzcygp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDb25maWd1cmFibGVEZWxldGVNaXNzOyB9CisgICAg
Ym9vbCBpc05vbmNvbmZpZ3VyYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBOb25jb25m
aWd1cmFibGU7IH0KKworICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBkaXNhYmxl
Q2FjaGluZygpCisgICAgeworICAgICAgICBtX2NhY2hlYWJpbGl0eSA9IENhY2hpbmdEaXNhbGxv
d2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0FsbG93ZWQ7IH0KKworICAgIFByb3BlcnR5
T2Zmc2V0IG1fb2Zmc2V0OworICAgIENhY2hlYWJpbGl0eVR5cGUgbV9jYWNoZWFiaWxpdHk7Cisg
ICAgVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjE4MjFk
NTU2YTNkNDA0NDkzNjc1ZWFlMjVmYTJlNDY2NzNlYzQzYS4uNjg1YzdhY2JjMTFjNjJkMjMzNzdk
MzJjNGRlOWEyMGI2NTg3OGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBFcnJvckNv
bnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU4KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgRXJyb3JDb25zdHJ1Y3Rvciog
dGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CkBAIC05NSw3ICs5
NSw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQpCiAgICAgICAgIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKIAotICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgK
aW5kZXggOTNkNTI3MTQ4NmY2NmZkZTc1M2U0OWE0MDE2ZjE2ODM4ZTk3NTcyMS4uOWE1YTQ2MzIx
YjNkYmI3NjRjMmExYjUyMWQ5MjY4ZjhkMTQzNTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaApAQCAtNDksNyArNDksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEVycm9yUHJvdG90eXBlKik7CiAK
ICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKIHByaXZhdGU6CiAgICAgRXJyb3JDb25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBmZDQ4YmJmMzRjMzA0MzBkMmU3MGRlNTc0OThlOWI1
MWU2YWMyNDRkLi4xZDUwY2QxNzRmYzQ3ZDkyMjE3MTg4ZTMyNWZmNTdhZThkMTViODFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAt
Mjk3LDEyICsyOTcsMTIgQEAgYm9vbCBFcnJvckluc3RhbmNlOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKLWJvb2wgRXJyb3JJbnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgRXJyb3JJbnN0YW5jZSogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckluc3RhbmNlKj4o
Y2VsbCk7CiAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVFcnJvckluZm9JZk5lZWRlZCh2bSwg
cHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5oCmluZGV4IGYxZmFjNTk2ODJkOWUwMjY1MDhjYjRmZjhjOWIyNjdiNGVl
NzZlODcuLjQwMDYwOGQwOGE4MzRjZDMxZTYxMmU3M2FiNTMxY2IwYTNjYTExZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKQEAgLTk5LDcgKzk5
LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICB2
b2lkIGNvbXB1dGVFcnJvckluZm8oVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4IGNlMTBmN2ZlNDg3M2U0YTQ3YmUxNDFl
MjU1NjlhZDY0OGFmZjlkMjguLjQ3MTIxNjczMDM2NDgyOGZlMjc3MGUyMzQ4NjlhY2U3MDkwOGQx
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1
bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1l
bnRzLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IGI4Mzdl
YzFiYjQzMGY2ZDU4YjFkNWIxMTVkYTUxM2M1YmNjMGJmNTMuLmE1YTllY2IzMjJhMjBkYThmZTI0
MzNmZmQ1NDdhNzhhZmM2MDJjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtMTM5LDggKzEzOSwxMCBA
QCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBybwogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1
aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwg
c2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgcmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4KQEAgLTE1OCw3ICsxNjAsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUeXBlPgotYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBpZGVudCkKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBUeXBlKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC0xNzUsNyArMTc3LDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCiAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgKmluZGV4KSk7CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3Qp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggMDM0ODdmNjFlMGYyZmM3NTFiYTcwM2I3MGNh
MzZkMDIyMjE2MzRkZS4uNjAxZjFlNDlmMTVjZDUwMWEwZTBhNzVlZTI4NTA2ZjMyYjBkYjNhMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIHNldFBy
b3RvdHlwZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxz
ZTsgfQogCiBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9nZXR0ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDZkMDc1OTE3MTFl
ZWRiYzI4ZTBlNGRhNzg0OTgyMmFiOGQ2NmY1ZDEuLmJjZTM2NTVhMzE5MmVhMjkwZmU3ZjA0MDgy
NGEzODg2ZjZiMDQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJvb2wgSlNBcnJheTo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fy
cmF5Kj4oY2VsbCk7CkBAIC0zMTQsNyArMzE0LDcgQEAgYm9vbCBKU0FycmF5OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnQK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFyZUtleXNGb3JRU29ydChjb25zdCB2b2lk
KiBhLCBjb25zdCB2b2lkKiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CmluZGV4IDMxMTY1YjVmZjQ5MjU0Y2MxYTZjNDc5MDJiNzkxMGFjNGE3ZDliZmYuLmNkYzM5YjUx
MmQ3ZWUzYTE1Y2YxYWVjMmUwYTJkOTNkOWFhYWQwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKQEAgLTE4Miw3ICsxODIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBmZTAxODBkZDYwYzNk
MWJiNjBmOGI1MzNiMTg2MDU4ZWVhZDgxYjc1Li41ODZhZjNmYWIzNzk1MmUzZmRlMWNlNDcwYzk5
YWIxZWRjNGE3NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXNzZW1ibHlI
ZWxwZXJzOworY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90OwogY2xhc3MgSlNCaWdJbnQ7CiBjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBKU0NlbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcAppbmRleCAyNzEzNTJiMjE3NDcwMzU2ZGY0MDNmZGQ5Y2RlNjBkZWY4ODgxNjA3
Li4wZTY3Zjg2Njc2ZDU4NjVhYTg4ZjA0ZjM1YWRhNzQzMjFlMDJjZjA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTEyNiwxMCArMTI2LDEwIEBAIGJvb2wg
SlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgaWRlCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlm
aWVyKQorYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGds
b2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllcik7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2Jh
bE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
aWRlbnRpZmllciwgc2xvdCk7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBp
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA2NjVk
MDg4OWNmNDQ2MWMzYWIwYTJhZjRiMDdjNmE1OGM5MDQyMWM0Li4wNjJlODNkYjM5YWIzNGE2ZWY0
ZmRhMzZmZmE1MGU0YzExMWQ5NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaApAQCAtMTgwLDcgKzE4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXRCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBib29sIHB1dElubGluZShKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggMTQ2YTkxMzJkNDczNTI0MmMxMDZlNjU1
NjQ3NzhlMTdlZDdiYWI4Yy4uMWIyNTUyM2M5OGZiYjA5ZTM3ZjhhNDc0MzE5YmY3NmMzMmQ4YThi
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAg
LTE1Miw3ICsxNTIsNyBAQCBib29sIEpTRGF0YVZpZXc6OmRlZmluZU93blByb3BlcnR5KAogfQog
CiBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAotICAgIEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAg
ICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0RhdGFWaWV3Kj4oY2VsbCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBKU0RhdGFWaWV3
OjpkZWxldGVQcm9wZXJ0eSgKICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPmJ5dGVPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBKU0RhdGFWaWV3OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmgKaW5kZXggODY0MTBlNjFhZDdlOTFkODJhNjdlOTdlZmJiNGYzMmYxYmMxMmU3OC4u
OThhOGNjOGIzOThmZmRkN2ExYzk0YmU2NTdmNjU1ZTZjYzdiOWY3MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtNzIsNyArNzIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCmluZGV4IGVlODVlZTA2NDZjOWRkYWY5ZTZlOTdhZjE3YjlmOWMwMzc3ZDE4
ZTAuLjhiOGQ1MDY1MzZlNTNmOTI4YmMzNjlkMmViZmQ1YTYzMGIwODZiODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01ODYsNyArNTg2LDcg
QEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKIH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCitib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02MTcsNyArNjE3
LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3AKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgIH0KICAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogfQog
CiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCBhZGRkZTJh
YzAzYTQxMGM3MDhhNzkzNGI1YTVkMDY4OWNhMWZmYWNkLi4xOGFiNDc1NDNmZDc4Mjk3OGFmZWE5
NzJjOGM5YWM2ZDg3MDJjYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGYwOGY4NTI0NjliZWZkNmM1YWQ0
M2FmMmE1MDA5MmJlZWZlMmIzOWEuLjNiN2JiZGU3NjVjZTFjMzU2NTUwZWNkNThiNzdmZWQ5ZDYx
MDZmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggMGNhZmJkMjc2Y2Y3NGQwYzg1ZWY4
YmU3ZGJlNDAzZDNjNzY0YjM0Mi4uNThmYmI1NzU2MmI3MTAwNzllNjUxNDBmN2UwOWU3MDgwNDhm
YTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQzOCw3ICs0MzgsNyBAQCBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWZpbmVPd25Qcm9wZXJ0eSgK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAotICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAgICBKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtNDUwLDcgKzQ1MCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmRlbGV0ZVByb3BlcnR5KAogICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkBAIC00ODQsNyArNDg0
LDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KAogICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKLSAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShj
ZWxsLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOwor
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bSh2bSwgcHJvcGVydHlOYW1lKSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggYjNjOTgwYTQ2NjJhZWVlYTEyNDBhNTY2YzVkNGExOGE5Mjg3MWY3ZS4uMGY4OTAz
MDBiZWI3ODRjNzE3OWE4NzNmYWNmY2IyYTg0ZDBjOWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTMxNCw3ICsxMzE0LDgg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgIG1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIG1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIGFkZEds
b2JhbFZhcihwcm9wZXJ0eU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggZjM0NWM1MDI3YWJh
OTQwODQ0NzFlMzFiN2I4ZDdlZTJhMmY4ODcxMy4uOTc0YjkyYjU0ZTFhMzM4MzE2OWRlZmFiMmE5
YTdkZGU2NDZkYTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTI3LDEzICsxMjcsMTMgQEAgYm9vbCBK
U0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGUKICAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0T3duRGF0YVByb3Bl
cnR5KGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
LWJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IGQwMTNiNTFlZmEyOTdlYmYwM2Nh
NDI0MDAxN2E2N2FjYzEzYjkzOTcuLjA1ZTRlNjVjMmRkNDkzZmY3YTRlMzFhNDgyNmI3MGMyNTBj
NTc5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCmluZGV4
IGZlYjU1MTA4NzQ4MDM5MGQzNDA5ZTZjYWE5NDgwMGI3MjlmN2M3M2QuLjg1OGE5NDJmZTczNTVj
ZjhjMTE4MDVhOGQwNWUwNjUzZjhhMjE4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcg
QEAgYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKIH0KIAotYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9
PSBBYnN0cmFjdE1vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCmluZGV4IGRhZWFiNjYyZmMwNGRhYmRkMjZk
MTQxNDVmMzZlYjE3ZTI3OTJhNzkuLjAxMzBmODdmYjk4YmIyYTgyZGFhMjlhNTk2MzUyZTcxOWJi
N2VmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKIHByaXZhdGU6
CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1i
b2xUYWJsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCmluZGV4IDJiZGIxMzA1ZWIwYzRiZTk2MDgwNjVi
ZDM0ODU5YzdhZjE0OGIyYTEuLjFmYzZhMjY1YjhjYTY1YWQxMTkwMmY1ZDAxM2VkNjVkODY1NjE4
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTE5OSwxMiArMTk5LDEyIEBAIGJvb2wgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRlbGV0ZS1w
CiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9s
KCkpCi0gICAgICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAogICAgIHJldHVybiAhdGhpc09iamVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5
TmFtZS51aWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAppbmRleCA4ZWVmNjIxZTNiODRmYTY2MjhjZmEy
ZjgxNGRhNjI4ZjA2Nzg3ZDFkLi44MTEzNjRkZDE3YTEzZTdlZmJmY2YxYzllMjg2MzBlMjQyYTcx
MjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcAppbmRleCBkMGQxNzIxY2YxZGViODMzZjljYjAxZTJiZjMyMWIwNmVkNDE5NmM5Li5l
ZGEyZDYyMzUwOTllZDMwMWJiMGFlMTE0NTE0ZjMyZTE1NGNiNjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNzU5LDkgKzc1OSwxMCBAQCBO
RVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAg
ICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAgICAgICAgICAgICAg
ICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIob2JqZWN0LCBqc1N0cmluZyh2
bSwgcHJvcC5zdHJpbmcoKSksIG91dFZhbHVlKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVl
LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9wKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3AsIHNsb3QpOworICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0
KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3AsIGZpbHRlcmVkVmFsdWUsIHNsb3QpOwogICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAg
ICAgICAgaW5kZXhTdGFjay5sYXN0KCkrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCBhY2QyOWRlZDgxMzUxZmIyODRiMjE1OWFkNDdhNjMxYzM0OTRm
MWRmLi4zNDczMmUxYzJiZjM2ZmU1ZDc5NzdjMWJkZTI1Y2RhZWQ2M2FjOWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xOTcyLDcgKzE5NzIsNyBA
QCBib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgcHJvcGVydAogfQogCiAvLyBFQ01BIDguNi4yLjUKLWJvb2wgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTk5OSw4ICsxOTk5LDEwIEBAIGJvb2wgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVyCiAKICAgICBib29sIHByb3BlcnR5SXNQcmVzZW50ID0gaXNWYWxpZE9m
ZnNldChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSk7CiAgICAg
aWYgKHByb3BlcnR5SXNQcmVzZW50KSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKQorICAgICAgICBpZiAoYXR0
cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlICYmIHZtLmRlbGV0ZVByb3Bl
cnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSkg
eworICAgICAgICAgICAgc2xvdC5zZXROb25jb25maWd1cmFibGUoKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOwog
CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC0yMDA4
LDcgKzIwMTAsOSBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgICAgICAgICAgb2Zmc2V0
ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0
eU5hbWUsIFtdIChjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBQcm9wZXJ0eU9mZnNl
dCwgUHJvcGVydHlPZmZzZXQpIHsgfSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3Ry
dWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKLSAgICAg
ICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSAmJiAhc3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3Qp
KSB7CisgICAgICAgICAgICBzbG90LnNldEhpdChvZmZzZXQpOworICAgICAgICAgICAgaWYgKCFz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJlKHZt
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0
aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1dHRl
cmZseSk7CiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNldEJ1
dHRlcmZseSh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKQEAgLTIwMjAsNyArMjAy
NCw4IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAKICAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgdGhpc09iamVjdC0+bG9jYXRpb25Gb3JPZmZzZXQo
b2Zmc2V0KS0+Y2xlYXIoKTsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHNsb3Quc2V0Q29u
ZmlndXJhYmxlTWlzcygpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDMwLDggKzIwMzUs
MTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxs
KTsKICAgICAKLSAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0dXJuIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpKSk7CisgICAgaWYgKGkgPiBNQVhfQVJS
QVlfSU5ERVgpIHsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIHJl
dHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSksIHNsb3QpOworICAgIH0K
ICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nTW9kZSgpKSB7CiAgICAgY2Fz
ZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CkBAIC0zNjI1LDcgKzM2MzIsOCBAQCBib29sIHZh
bGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqCiAgICAgLy8gQSBnZW5lcmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5IGNo
YW5naW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CiAgICAgaWYgKGRl
c2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3VycmVudC5h
dHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYgb2JqZWN0KSB7Ci0gICAgICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBwdXREZXNjcmlw
dG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2Ny
aXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAg
ICAgICAgfQpAQCAtMzY0MSw3ICszNjQ5LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAg
ICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxPYmpl
Y3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0
ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQpAQCAtMzY2NSw3
ICszNjc0LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9i
YWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0
dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQpAQCAt
MzcxOCw3ICszNzI4LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogCiAgICAgR2V0dGVyU2V0
dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnZXR0ZXIsIHNldHRlcik7CiAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICB1bnNpZ25lZCBhdHRycyA9IGRl
c2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAgIG9iamVj
dC0+cHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlclNl
dHRlciwgYXR0cnMgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZWM2MzAwZWE5Yjk3MmNlOWJhMGZhZDgx
ODI1N2FmYjIwZDgyYTJlZC4uNjkzYmRiYjk5N2Q2NDQyMDgwNjUxYzI3ZWRkZTdiMDg4YTE0MTU2
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAi
RGVsZXRlUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkluZGV4
aW5nSGVhZGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAtNjIzLDcgKzYyNCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKSBjb25zdDsKICAgICBib29sIGhhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQpIGNvbnN0OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKaW5kZXggOWM0NzkzNGU0YTNkOTE5OWZhOTg0
MmRkMDUyY2U4OGQyNDE1MmFjMS4uZDBiYmMyYzVhMmQyMjE5MTI3Y2Q5OWIzMDIwOTMwODg3MjEy
M2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKQEAgLTkx
LDEwICs5MSwxMCBAQCBib29sIEpTUHJveHk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWZpbmVPd25Q
cm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJn
ZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1
cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSkt
PmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNQcm94eTo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMzUxZTY2OGQyNTkwZDliOTdjOGY0YmJhMmJmZmI0
MDBkYjNmMjEwOS4uNWJlN2JmMGQyZTVhOGIzMmM3OTRjMGIyNTg5NTc5OGZjNWY5ZWY4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtOTMsNyArOTMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIFByb3Bl
cnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCA2MzBlMWI3OGJiMjA2ZTdhZjYx
N2MzYzY4MmMzNGY1ZTE3NTVmNWQ1Li4xMjVmNmMzMTUwZTk2YWVjZDUzNzQ3MzFmZGE4ZDlhN2Jh
ZmJhMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIHZvaWQgSlNTeW1ib2xUYWJs
ZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwogfQogCi1i
b29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNTeW1ib2xUYWJsZU9iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAogdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
CmluZGV4IGM3YzFlMjBhNjU0NzZiYzcwNjhlZTYzZGVkOThiMzM1ZGY3MzZiMjEuLmI1NjhlOGY5
MmE5ODNmYjRjYzIwM2E3YTA2MjE4MGFlNGZlNTkwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogCiAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQogICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlN5bWJvbFRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3ltYm9sVGFibGVPYmpl
Y3QsIG1fc3ltYm9sVGFibGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAKaW5kZXggYjY1MjAyMjFhODE1OThmZmVmMmE1ZTE0YTgwZmQ0ZTU0ZGM2
OWM2ZS4uYjA3ZTBhMDI5MzMyODI2MTAzNmY0MTEwNmVlZWU5ZTVmOTBjNjY2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNjg1LDEyICs2
ODUsMTIgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBQcm94
eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlPYmpl
Y3QqPihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0RGVsZXRlID0gWyZdICgpIC0+IGJv
b2wgewogICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpc09iamVjdC0+dGFyZ2V0KCk7Ci0g
ICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQ
cm9wZXJ0eSh0YXJnZXQsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
OwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wZXJmb3JtRGVsZXRlKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdERlbGV0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCAxN2NhMjlmYjBhM2ZkZGJhNzFlYjY4MjQ5
YzA5OWNhMjhhM2Q2MmVkLi5lZTViZDkwNThjZmE4MThhNDY3NGE1MjJiZjYwYTJjYTA5ZWFjMWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKQEAgLTg1
LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAg
ICBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
Kik7CiAgICAgc3RhdGljIGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CmluZGV4IDQ2ZGNiNzUwNmRhNTcwZTRjOTdlYjkzYTA5YzAwNDgxYTUxNTM4MjcuLjFjZTFiNGMz
M2FhZjFhNDVkZjA3MjQxZjRkZDMwYzY3ZDY3YTJlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIGJvb2wg
UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdChv
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBSZWdF
eHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUmVnRXhwT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sYXN0SW5kZXgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuaAppbmRleCA1ZTk5ZWIzOGI3MTNhOTQyNjM3MTkxYTg5ZjBiN2M5NmM1ZmJiNzE0Li44NTdj
YTJlNzJhZjM0MGVhZTM2NTcwMWQ1NWNhMDdlZDgzZTBiMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgbV9yZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyA9ICht
X3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnIHwgbGFzdEluZGV4SXNOb3RXcml0
YWJsZUZsYWcpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVy
aWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKaW5kZXggNTE1NzUyNzY1ZWNiMDJk
MTljMDQwZTlmMjFiOTY0OWY3NTE3Yjk0Ny4uNTFkYmM2N2M1N2Y4MTU2MWZhNzhkMTk0ZWZhZjA0
OWMwN2E4YWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aWN0RXZhbEFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBTdHJpY3RFdmFsQWN0
aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNTY29wZQogewogfQogCi1ib29sIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaWN0
RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5oCmluZGV4IGNkY2MyMWI3ZTVmYTdiMTA5NmIyNmQxODcwNzRjYmYxN2ViODNjMjku
LjI0MTU0NWU4MTY5MzYyYmY2OTIwYTkxOWI4ZmUwZmRiYjdhMTAwNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzY29wZTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDc3YjljYWZiM2ZhMDA4
ZjBmNzA1NjhiNmRiNmY0YTE1MTg2ZDA2ZS4uNDg2ZGQ5MjczYjc1MDU4YTQ3Zjc2OWEzZmNmODc3
NWU2OTBjZDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9u
KSk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
Citib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxs
KTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcgogICAgIE9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAo
aW5kZXggJiYgdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52
YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
IHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
dW5zaWduZWQgaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmgKaW5kZXggYTM0MDU4MTc4OTM0ZDg1MjUwYWNiM2EzZTRkYTM1MmYyMjc4NjUyMy4uNjlmMjZi
N2Q3MjRiYmVmNzMyMzMxOTQ3ZTgwYjdjN2ZhZmNmOGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggZWRhNDQ2YmZiZTI2
N2FiMDFiODUyZTE1ZmRlOWM5YzMwZTZmNThlNi4uNjM2OTRmMGM0YWRkMWJhNGViNzRkYmFkMjYx
ZDcwMDNlODI3M2U2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCkBAIC01NDAsOCArNTQwLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZE5ld1By
b3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm8KIAogU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNl
dCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVm
ZXJyZWQpCiB7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSByZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoCi0gICAgICAgIHZtLCBzdHJ1Y3R1cmUsIHBy
b3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUgPSByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKG5ld1N0cnVjdHVyZSkKICAgICAg
ICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKIApAQCAtNTQ5LDE2ICs1NDgsMTMgQEAgU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm8KICAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQsIGRlZmVycmVkKTsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBE
ZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopCitTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1w
bChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBBU1NFUlQoIWlz
Q29tcGlsYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCi0g
ICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzKTsKLQogICAgIGNvbnN0ZXhwciBib29sIGlzQWRkaXRpb24gPSBmYWxz
ZTsKKyAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0
aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHByb3BlcnR5
TmFtZS51aWQoKSwgYXR0cmlidXRlcywgaXNBZGRpdGlvbikpIHsKICAgICAgICAgdmFsaWRhdGVP
ZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0aW5nVHJh
bnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJh
bnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNTY4LDExICs1NjQsMzAgQEAgU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZShWTSYgdm0sIFN0cnUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlP
ZmZzZXQmIG9mZnNldCkKK3sKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7Cisg
ICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CisgICAgaWYgKHN0cnVjdHVyZS0+Z2V0Q29uY3Vy
cmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcykgPT0gaW52YWxpZE9mZnNldCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBv
ZmZzZXQpCit7CisgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CisgICAgaWYgKHN0cnVjdHVy
ZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcykgPT0gaW52
YWxpZE9mZnNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAgcmV0dXJuIHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1v
dmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewogICAgIEFTU0VS
VCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCkpOworICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIG9mZnNldCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShw
cm9wZXJ0eU5hbWUudWlkKCkpICE9IGludmFsaWRPZmZzZXQpOwogCiAgICAgaW50IHRyYW5zaXRp
b25Db3VudCA9IDA7CiAgICAgZm9yIChhdXRvKiBzID0gc3RydWN0dXJlOyBzICYmIHRyYW5zaXRp
b25Db3VudCA8PSBzX21heFRyYW5zaXRpb25MZW5ndGg7IHMgPSBzLT5wcmV2aW91c0lEKCkpCkBA
IC0xMjAzLDcgKzEyMTgsNyBAQCBSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZTo6dG9TdHJ1
Y3R1cmVTaGFwZShKU1ZhbHVlIHZhbHVlLCBib29sJiBzYXdQb2x5UHJvdAogCiB2b2lkIFN0cnVj
dHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludChSYXdQ
b2ludGVyKHRoaXMpLCAiOlsiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCB7Iik7CisgICAg
b3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oaWQoKSkpLCAiLCAiLCBjbGFzc0luZm8oKS0+Y2xhc3NOYW1lLCAiLCB7Iik7
CiAgICAgCiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA1MmNkM2M3MWQ5MjBmMmY4YTk3YjQ2MGI5MGUw
ZWM3MGQ1ZDcxMWFmLi5hZTIwYWU5NmJhNDAzMmY2YWExZjk0YmUzYzE3NGI3NjNjNzNmYWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgorI2luY2x1ZGUgIkRlbGV0ZVByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluZGV4aW5n
VHlwZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKQEAg
LTE5MSw3ICsxOTIsOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiwg
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlPZmZzZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNo
YW5nZVByb3RvdHlwZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlw
ZSwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUmKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9u
KFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJsZURpY3Rpb25h
cnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CkBAIC00NzcsNiArNDc5LDcgQEAgcHVibGljOgog
ICAgIH0KICAgICAKICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCopIGNv
bnN0OworICAgIGJvb2wgbWF5SGF2ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwp
IGNvbnN0OwogICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAKQEAgLTcxNiw2ICs3MTksNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogICAgIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmVJbXBsKFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAKICAgICAv
LyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBzdHJ1Y3R1cmUgdGhhdCBoYXMgYSB1c2FibGUgcHJvcGVy
dHkgdGFibGUsIHRoYXQgcHJvcGVydHkgdGFibGUsCiAgICAgLy8gYW5kIHRoZSBsaXN0IG9mIHN0
cnVjdHVyZXMgdGhhdCB3ZSB2aXNpdGVkIGJlZm9yZSB3ZSBnb3QgdG8gaXQuIElmIGl0IHJldHVy
bnMgYQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oCmluZGV4IDBjZDk4ZDUyYWNjN2Y3MTRjMDViMTUzZTA4MTM5ZTQ5MWNkOGNmOGMuLmZlMjg1
ODc0MDk0ZGFjMzA3MDc1ZDJjNzYxZTIzMjJhNDYwMTc1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTIyNCwxMCArMjI0LDIz
IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxs
KiBjZWxsKSBjb25zdAogICAgIAogICAgIGlmICghaXNUeXBlZFZpZXcodHlwZWRBcnJheVR5cGVG
b3JUeXBlKG1fYmxvYi50eXBlKCkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAg
ICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBKU0FycmF5QnVmZmVyVmlldyo+KGNlbGwpLT5tb2RlKCkg
PT0gV2FzdGVmdWxUeXBlZEFycmF5OwogfQogCitpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1heUhh
dmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdAoreworICAgIG11c3RD
aGVja0NlbGwgPSBmYWxzZTsKKyAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdU
eXBlKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghaXNUeXBlZFZpZXcodHlw
ZWRBcnJheVR5cGVGb3JUeXBlKG1fYmxvYi50eXBlKCkpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgbXVzdENoZWNrQ2VsbCA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGlu
bGluZSBib29sIFN0cnVjdHVyZTo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gdHlwZUluZm8oKS5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKCkgJiYgZ2xvYmFsT2JqZWN0KCkgPT0gbGV4aWNhbEdsb2JhbE9iamVj
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA5YTdm
NDlhMTQwNTNhMDgyN2RiYWUzNTJkMjhmNTAzNjA3ZmY2Y2Q3Li40ZWYyOWVkNzc2ODhkYzE3OTM4
OGI3MTBmMTRlNDM2MThlY2Y5ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCkBAIC01NTYsNyArNTU2LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVF
X1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpCisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JikKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQpAQCAtMjg1MCw2ICsyODUwLDE1IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0Q29uY3VycmVudGx5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBhc09i
amVjdChjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB0YXJnZXQpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZ1bmN0aW9uLT5hcmVOYW1lQW5kTGVuZ3Ro
T3JpZ2luYWwodm0pKSk7Cit9CisKIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CkBAIC0yOTgzLDYg
KzI5OTIsOCBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBh
ZGRGdW5jdGlvbih2bSwgImdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0IiwgSlNEb2xsYXJWTUhl
bHBlcjo6ZnVuY3Rpb25HZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCwgMSk7CiAgICAgYWRkRnVu
Y3Rpb24odm0sICJnZXRDb25jdXJyZW50bHkiLCBmdW5jdGlvbkdldENvbmN1cnJlbnRseSwgMik7
CiAKKyAgICBhZGRGdW5jdGlvbih2bSwgImhhc093bkxlbmd0aFByb3BlcnR5IiwgZnVuY3Rpb25I
YXNPd25MZW5ndGhQcm9wZXJ0eSwgMSk7CisKICAgICBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1
dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iamVjdERv
aW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1NwZWN0cnVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCmluZGV4IGNiOGQz
YmIwMzA1Mjg5MTA4YThkODgxZjAwMjMxNDY4NDMyZmFjZjAuLjQ1ODViMTAwYWM3ZGE5NDgyMTRh
ZDhjOGZmYmIyMTk0YWFjNzBlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVt
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaApAQCAtNDIsNiArNDIsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCBDb3VudGVyVHlwZSBjb3VudCA9
IDEpCiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGlmICgh
Y291bnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwg
Q291bnRlclR5cGU+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwpA
QCAtNTgsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQ291bnRlclR5cGUgZ2V0KGNvbnN0
IFQmIGtleSkgY29uc3QKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICAgICAgY29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgaWYg
KGl0ZXIgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTY2LDggKzY4
LDYgQEAgcHVibGljOgogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuc2l6ZSgpOyB9CiAgICAgCi0gICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5i
ZWdpbigpOyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAg
ICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0K
ICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQog
ICAgIApAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb3Jk
ZXJlZCBmcm9tIGxvd2VzdC1jb3VudCB0byBoaWdoZXN0LWNvdW50LgogICAgIFZlY3RvcjxLZXlB
bmRDb3VudD4gYnVpbGRMaXN0KCkgY29uc3QKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICAgICAgVmVjdG9yPEtleUFuZENvdW50PiBsaXN0OwogICAgICAgICBmb3Ig
KGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBiZWdpbigpOyBpdGVyICE9IGVuZCgpOyArK2l0ZXIpCiAg
ICAgICAgICAgICBsaXN0LmFwcGVuZChLZXlBbmRDb3VudChpdGVyLT5rZXksIGl0ZXItPnZhbHVl
KSk7CkBAIC0xMDYsMTcgKzEwNywyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0Owog
ICAgIH0KICAgICAKLSAgICB2b2lkIGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9CisgICAgdm9p
ZCBjbGVhcigpCisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAg
IG1fbWFwLmNsZWFyKCk7CisgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CiAgICAgdm9pZCByZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX21hcC5yZW1vdmVJZihbJmZ1
bmN0b3JdICh0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6S2V5VmFsdWVQYWlyVHlw
ZSYgcGFpcikgewogICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKEtleUFuZENvdW50KHBh
aXIua2V5LCBwYWlyLnZhbHVlKSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCiBwcml2
YXRlOgorICAgIG11dGFibGUgTG9jayBtX2xvY2s7CiAgICAgSGFzaE1hcDxULCBDb3VudGVyVHlw
ZT4gbV9tYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKaW5kZXggMjA1MDZmOGVjZmFjNjUzZTU1YWQwNDgxZGRhNTYwZjVmZDcy
YTU0ZC4uZjdhODk1NTdlZDU2YWNlZjkxM2E0YTFmNmQ3MjQ2NzUyZTE0Y2Q1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMzE0
LDEzICszMTQsMTMgQEAgYm9vbCBKU0RPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBCYXNlOjpw
dXRCeUluZGV4KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRE9NV2lu
ZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgLy8gT25s
eSBhbGxvdyBkZWxldGluZyBwcm9wZXJ0aWVzIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4u
CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBUaHJvd1NlY3VyaXR5
RXJyb3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDFlZjA2YzI2ZWUyNTJkZTY2OGMx
ZGVkZTkxYzVkZGY2YTBkZGZkZTUuLjg0YjlhMTNlMTllYTE4OWRmMzA3NDc2MDY1ZGQzNzNlNTFl
NGY2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25D
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0
b20uY3BwCkBAIC0xNjMsMTMgKzE2MywxMyBAQCBib29sIEpTTG9jYXRpb246OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdQogICAg
IHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CiAg
ICAgLy8gT25seSBhbGxvdyBkZWxldGluZyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgog
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS53aW5kb3coKSwgVGhyb3dT
ZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTTG9jYXRpb246
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXgg
ZTJlZWRmZDViMGM1YWE3MTg3MGRhNzY1NDM5N2UzNWI5OWE4MmNhYy4uMGNiNjdlZjI5YzYyYmY4
Y2M0NDZhMGVjZTMxYzlmZTUzNTE1N2E0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtODIsNyArODIsNyBA
QCBib29sIEpTUmVtb3RlRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpT
UmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lKQorYm9vbCBKU1JlbW90ZURPTVdpbmRv
dzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICBWTSYgdm0g
PSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMDNkZDljMTYxYTgzOTkxMmQ0MzkzNDJkMjY1YmM1ZmQx
NWI2YTQxNi4uYjdjZDFmY2E0Mzk5Y2U4OTk2YWFhNmVjYTc5NTA3MzZjMDUzMjM5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTEzMDEsNyArMTMwMSw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5CiAgICAgIyBU
aGlzIGltcGxlbWVudHMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBs
YXRmb3JtLW9iamVjdC1kZWxldGUgZm9yIHRoZQogICAgICMgZm9yIHRoZSBkZWxldGVQcm9wZXJ0
eSBvdmVycmlkZSBob29rLgogCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNz
TmFtZX06OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKQEAgLTEz
MjEsNyArMTMyMSw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5CiAKICAgICAjIEZJWE1F
OiBJbnN0ZWFkIG9mIGNhbGxpbmcgZG93biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHksIHBlcmhh
cHMgd2Ugc2hvdWxkIGltcGxlbWVudAogICAgICMgdGhlIHJlbWFpbmVkIG9mIHRoZSBhbGdvcml0
aG0gb3Vyc2VsdmVzLgotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIApAQCAtMjY5
Niw3ICsyNjk2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgaWYgKEluc3Rh
bmNlT3ZlcnJpZGVzRGVsZXRlUHJvcGVydHkoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpEZWxldGVQcm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7XG4iKTsKICAgICB9CiAKQEAgLTQzMjQsNyAr
NDMyNCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogICAgICAgICB9CkBAIC03NTEyLDcgKzc1MTMsOCBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmICghJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1l
XCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7XG4iKTsKLSAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90O1xuIik7CisgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5k
aWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5jcHAKaW5kZXggYjVlYTU0OGUxZDEyNzJlMTg2ZGI5NDRjZTYxOTg1MGY0ZmQy
ZTgwOC4uZTYzMzIzOWRhZWZjZWYwNDA5YzhiNDYzYjg3MGY2NmI4MTA1ZDc1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRC
eVNldHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcApAQCAtMTM3LDcgKzEzNyw4IEBAIHZvaWQgSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAg
ICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFi
bGVkQnlTZXR0aW5nT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpA
QCAtMTQ1LDcgKzE0Niw4IEBAIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRp
bmdBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIikpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYK
ICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNE
aWN0aW9uYXJ5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5k
ZXggODBmYWYzNTEwNTQ3YTJhZGU3N2NiN2VjOTViMjkxOTJkOTAxYWE0OS4uZWY2NjAzMzRlMzE4
MWI2N2RlNTI0YjNkMzVkZjE2NTY0ZjY1NmFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTA4LDcgKzEwOCw4IEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oImFTZWNyZXRBdHRyaWJ1dGUiKSwgc3RybGVuKCJhU2VjcmV0QXR0cmlidXRlIikpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAg
aWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlv
bmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGJmZjRjM2IwOWRh
NTk0MWJmZjcxZGNkYmIzODUyNTQ4YTAwYzNmMWQuLjg3ODNlMTVjMjgxMzc2NjM0ZmRjNzVkZWZm
Yzg1ZGRhOTY1NDg5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuY3BwCkBAIC0xOTAsMTQgKzE5MCwxNCBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0ds
bwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlz
T2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsK
ICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgaWYgKGlzVmlzaWJs
ZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRlbGV0
ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAg
fQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
IGJvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5z
aWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
LmgKaW5kZXggMGVhNGJiMTFiODYwNTMwMTE2NTdmZDZlYTYzZjI0NmQ0ZDgyZTUwYS4uMTM4ZDRj
MThmOGY0NmJjMzQzMzEwOWJkMDMyMzk1NjM3ZDBhYzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA3OTRkNTk3NmYxM2YwNzE4
YjRjZWU1MTYzMzgzMGNjZDMwZjFjMzMzLi41NzlmMmEwZTZhOGM3YTkyNTU2MTlkODQ0NTI2YmE4
ZGRiMmRhYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
QEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsTwogCiAgICAgICAgIHJl
dHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgfQotICAgIHJldHVybiBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgK
aW5kZXggNzkxYmUxODJlYjFiMzY5NjkyMWRlOTc2OTUyNzI5ZjBiNGYwYjM0YS4uMDU1ZDNkZjky
MzgxOGMwMDc2N2YxODk1ZGY2NzI1ZjViYzBlZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09i
amVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
LCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYjMzNzZlM2E5ZmU1MmI4
YTBhNmQzZDQwNWE2YWFmZWM0MWJjZjA4Ny4uMjUwMjNhMzFhMTQ2NDIyODdhMGIxYjUwZGRmNGRm
NDYxOWRkZjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0cK
ICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRo
aXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKj4oY2Vs
bCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjA0LDcgKzIw
NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplCiAgICAgICAgIGltcGwubmFtZWREZWxldGVy
KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIuaAppbmRleCA1NGUwMjU0NzhlMWRjMzk5MDcwNzMzZTQ5OWIwMTYzMTQ5
MDEyNDllLi5hODU4YTI3MTU0YmQzYzYzNjRmYzQ1YTY0N2ZmNDJiNmI0NzI1MDZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaApAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUo
KSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRl
eCBlOGQ5NzQxOWFmYTVkOWFlNjhkYTA0ZWE1NDFlYWJmNTBkNDc4NzM2Li5mNmYzNjZlMjIyZTQx
NDRhNzRiNjM3NTRmYmQwNzg5OGY5OGI2NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2
b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAot
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsTwogICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5v
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAg
ICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJu
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oCmluZGV4IGE5OTQ1YmFmYzYx
MTQzZTU3NmZmZDYwZmVjOGVlZTY5NjRiOWYwMzAuLjJmZWE4ZDkwZjRmNGExODQyYzhlMTkyYWYz
NWQ4NWM3ZDE4Njg5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlv
bk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCAxMTAwYWEzY2VjMGIxZTEwZjc5
MDczMGFmNTEzMDk3MDA2MDBiOTVlLi4xZmIzZjFiZWE4ZGFmMmYwZDA5ZTI5NmM1ODdmZmUwNDcw
ODYzZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0xNTcsNDUgKzE1Nyw1MiBAQCB2b2lkIEpTVGVzdE5v
ZGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJj
YWxjdWxhdGVTZWNyZXRSZXN1bHQiKSwgc3RybGVuKCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkgewogICAgICAgICBoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImdldFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJnZXRTZWNyZXRCb29sZWFuIikpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0
KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVy
ZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ0ZXN0RmVhdHVyZUdldFNlY3JldEJv
b2xlYW4iKSwgc3RybGVuKCJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRv
ckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVudHJpZXMiKSwgc3RybGVuKCJlbnRy
aWVzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRv
bUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigia2V5cyIpLCBzdHJsZW4o
ImtleXMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
ZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ2YWx1ZXMiKSwgc3Ry
bGVuKCJ2YWx1ZXMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1l
UHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmb3JFYWNo
IiksIHN0cmxlbigiZm9yRWFjaCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgZmxhdHRlbkRpY3Rpb25h
cnlPYmplY3Qodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA0YzEwNzEwMTMxMDliNWZlZWNiNDMyNTcxNDg0
MDY5MmQ4OTA2ZjIxLi5mNTY4NDMyNGE2NjdiYTk2ZGU3NTM2MDgxODczZDI1MjBhYThlNTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtMTk4NCwxNCArMTk4NCwxNiBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YgogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0
RmVhdHVyZUVuYWJsZWQoKSkgewogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxl
ZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGVTdGF0aWMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQo
KSkgewogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpYyIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5k
aWYKIH0KQEAgLTIzNDcsOTAgKzIzNDksMTA0IEBAIHZvaWQgSlNUZXN0T2JqUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgog
ICAgIGlmICghKHdvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS5zb21lV29ybGQoKSAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZl
YXR1cmVFbmFibGVkIiksIHN0cmxlbigiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZUVuYWJsZWQiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICAgICBpZiAoIXdvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS5zb21lV29y
bGQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIndvcmxkU3BlY2lmaWNNZXRob2QiKSwgc3RybGVu
KCJ3b3JsZFNwZWNpZmljTWV0aG9kIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250
ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSwgc3Ry
bGVuKCJjYWxjdWxhdGVTZWNyZXRSZXN1bHQiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3Vy
ZUNvbnRleHQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImdldFNlY3JldEJvb2xlYW4iKSwgc3Ry
bGVuKCJnZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAo
IShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJ0ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4iKSwgc3RybGVuKCJ0ZXN0RmVhdHVy
ZUdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
LSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1l
bnQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dG
dW5jdGlvbiIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dGdW5jdGlvbiIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
ICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIpLCBzdHJsZW4o
ImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghKGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc1NlY3VyZUNvbnRleHQoKXx8IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hbGxvd3NNZWRpYURldmljZXMo
KSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJtZWRpYURldmljZXMiKSwgc3RybGVuKCJtZWRpYURl
dmljZXMiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCl8fCBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aGFzU2VydmljZVdvcmtlclNjaGVtZSgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInNl
cnZpY2VXb3JrZXJzIiksIHN0cmxlbigic2VydmljZVdvcmtlcnMiKSk7CiAgICAgICAgIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQogICAgIGlmICghKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkudGVzdEZlYXR1cmVFbmFibGVkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS50ZXN0RmVhdHVyZTFFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
ZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgIH0KICNlbmRpZgogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInJ1bnRp
bWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIiksIHN0cmxlbigicnVudGltZUNvbmRp
dGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3Vt
ZW50KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93
QXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0
ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAg
fQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSwgc3Ry
bGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgLy8gQWRkaW5n
IGJhY2sgYXR0cmlidXRlLCBidXQgYXMgcmVhZG9ubHksIGFmdGVyIHJlbW92aW5nIHRoZSByZWFk
LXdyaXRlIHZhcmlhbnQgYWJvdmUuIAogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
TlBfanNvYmplY3QuY3BwCmluZGV4IGZlZWJkZWY3YmM0NWU5OGM5MzA4ZmRmYmRlMTEwYjk5ZmRk
ZGNhMmMuLjMyYzEzYjllYjQwNzA4MzVlYjI1ODM3MTk2ZDc4MzI1OGFjNTk3MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtMzkxLDggKzM5MSw5IEBAIGJvb2wgX05Q
Tl9SZW1vdmVQcm9wZXJ0eShOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgcHJvcGVydHlO
YW1lKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CiAgICAgICAgIGlmIChpLT5pc1N0cmluZygpKQotICAgICAgICAgICAgb2JqLT5p
bXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxHbG9i
YWxPYmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmplY3Qs
IGktPnN0cmluZygpKSk7CisgICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllckZy
b21OUElkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpLCBzbG90KTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5udW1i
ZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQppbmRleCAyMmYwYjhkOWQ4ZmFlNGE3OWM2YjYzMWU5MzVjYjZhZGM3ZDk0ZmZmLi5kYmM2ZDNi
MWUxOWY5YzIxZDliNjBjMTdlZGZmOTcxNjAwNjdjMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC00NTcsOCArNDU3LDkgQEAgLSAodm9p
ZClyZW1vdmVXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0Owor
ICAgIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAKLSAgICBbc2VsZiBfaW1wXS0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nKGtleSkpKTsKKyAgICBbc2Vs
ZiBfaW1wXS0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5nKGtleSkp
LCBzbG90KTsKIAogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAg
ICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCA1ZWQyMWYxMzRlZjRhYWI1ZGMw
YzU1YTQ1ZGU2YTYzZDI3YzZiZTJlLi42MjI5NjM2OGViYjkwYzUwYjlkZTdmYTA3ODJjOWM2ZmEy
ODU5MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAt
MTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0
VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUpOwogCiAgICAgYm9vbCB0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8g
RklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVy
Y2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUg
bG9uZ2VyIHRlcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
aW5kZXggMTllZDE5Y2JjN2FlM2VlNDY3Nzk2YjEwM2NiZmU3NjE2MDlhZDczMC4uNmU4NzdkMmVi
N2Y0NGQwM2EyOGUxNzEwODNiZDNkMGYwYmI5ODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIENhbGxUeXBlIE9iamNG
YWxsYmFja09iamVjdEltcDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1ib29sIE9iamNGYWxsYmFj
a09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwCmluZGV4IDRkMjk3YzcwZDZiMWI2YzFhZjg4ZjkxNGJlODVmNjBkZjAzY2M5YjEuLmVj
MzU4OGZjNTY1OTU1M2Y1MjcyODNjNThhNzM1ODAyMTMyOWFjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIFJ1bnRpbWVB
cnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNl
dFZhbHVlQXQobGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKIH0KIAotYm9vbCBS
dW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKQorYm9vbCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAg
IHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4
IGZjZjVlMzNmYjExNDAxODUxMDc5OTMwZmJkMTE3NjEzNTQ1MmM3ZTYuLjI5ODEyYTY2ZDZmMDEy
NGUzODM2MjVmOTU2MDE5Y2EzM2JjM2JkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
ICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheS0+Z2V0TGVuZ3RoKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGEwMzZiNjY2MmQ0ODcyZjY4ZGM1
MjY0NWJhMWFmMmJhMTUzMzAzMmQuLjlkNWQ2MGRlZjM1NzU0YmUxZTBlMDYyMGU0MWVkYjk4ZWZl
MzllZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMjAw
LDcgKzIwMCw3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpCiB7CiAgICAgLy8gQ2FuIG5ldmVyIHJlbW92ZSBhIHByb3BlcnR5IG9mIGEgUnVudGlt
ZU9iamVjdC4KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5oCmluZGV4IDZjYmY3YmY3OTZiMGE4OTQwNGI5NDIyNzVkNjUxZTYwZTczMjQ1ODIuLjNj
MTBkOGJkNTBmM2I3ZGFhNDg0MjIxNGI5ZTA0ZjA0M2FmZGYyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHAKaW5kZXggMmVmYjIyNTIzZjkyMWU5MmFiZDAyMTZlYjBjZDFmZmQxMDAzNjJiZS4uMDVkMTI5
MjkzOTU4MmYwNGM0MzJkMzBjMTQyZGJhNWRhYTBiZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAg
LTM2MSw3ICszNjEsNyBAQCBib29sIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNOUE9i
amVjdCo+KGNlbGwpLT5kZWxldGVQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBucElkZW50
aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCA4
NTU4ODk0OWEzMDYwNGM2OWY3N2NjYzNmNjBlNTQ2OTc3ZmZhYzZkLi40ODAzYzBiYzU3MWY5Nzdk
ZGMyNzIyYmJhYjk2YjZkMjdjMmE5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVy
dHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVj
dC5jcHAKaW5kZXggMzZmMjhlZTZmYjAxMDJkOGMxNzcxM2M2MDhiNjE0ZWFmODVkZGI3Ni4uOGI5
ZmNkZjMwODUyZDFkMjIyYTViM2JkNTkwNmRhNGJhZmU0M2E0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAK
QEAgLTIyOSw4ICsyMjksOSBAQCBib29sIE5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KE5QSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG1fanNPYmplY3Qu
Z2V0KCksIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworCisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KG1fanNPYmplY3QuZ2V0KCksIGxleGljYWxHbG9iYWxPYmplY3QsIGlk
ZW50aWZpZXIsIHNsb3QpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9qc09iamVjdC0+
aGFzUHJvcGVydHkobGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllclJlcC0+bnVtYmVyKCkp
KSB7CiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDMwMzJhZmEyODBmYTkyN2Q4NzczMjBlYjgx
Y2JkOTA3MTAyNTU5N2UuLjEyY2U0MDljNTQzYzIyODgyMjc3MTliMmQ0MTA4YmYyYTg3OWQ0OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTExNDEsOCAr
MTE0MSw5IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0
eSh1aW50MzJfdCBvYmplY3RJRCwgY29uc3QgSWRlbnRpCiAgICAgICAgIHNjb3BlLmNsZWFyRXhj
ZXB0aW9uKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCi0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTQ2YTc1NWFkOWY5MzJiMWI1MTcyOWNhNDA2ZmM0
ZjE4ZTk3ZTI3NS4uYTU4NDU1NmEyYzA4NzcxNDdjZDk0NTFiM2I4YzA1NDQxNDI1NGEwMyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMC0wMi0yMSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qczoKKyAgICAgICAgKGRl
bGV0ZS5DLnByb3RvdHlwZS56KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXBy
b3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAg
ICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVx
LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLmFz
c2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBo
aWNEZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAg
ICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKGFzc2VydF90aHJvd3MpOgorICAgICAgICAobm9J
bmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5s
aW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAg
ICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9u
ZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlWYWwubWFrZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxl
RW1wdHlEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURl
bGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlz
cyk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNo
ZWFibGUtc3RydWN0dXJlLmpzOgorICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktaW5s
aW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRf
ZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChhc3NlcnRfdGhyb3dzKToKKyAg
ICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0
X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLm1ha2VG
b28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGlu
ZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hl
YWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5t
YWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVz
dENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVh
YmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6
CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4Lm1ha2VGb281KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxC
eVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC50ZXN0Qmln
aW50RGVsZXRlQnlWYWwubWFrZUZvbzcpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RCaWdpbnREZWxldGVCeVZhbC50ZXN0U3ltYm9sRGVsZXRlQnlWYWwubWFrZUZvbzgpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxldGVCeVZh
bCk6CisgICAgICAgIChub0lubGluZS50ZXN0U3ltYm9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0
ZUJ5VmFsLm1ha2VGb285KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xEZWxldGVCeVZh
bC50ZXN0T2JqRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iakRlbGV0ZUJ5
VmFsLnRlc3RTdHJpY3QubWFrZUZvbzEwKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmpEZWxl
dGVCeVZhbC50ZXN0U3RyaWN0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTdHJpY3QudGVzdE92
ZXJyaWRlLmFyci5qKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTdHJpY3QudGVzdE92ZXJyaWRl
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPdmVycmlkZSk6CisKIDIwMjAtMDItMTkgIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIENvbXB1dGVkIFBy
b3BlcnRpZXMgd2l0aCBpbmNyZW1lbnQgc29tZXRpbWVzIHByb2R1Y2VzIGluY29ycmVjdCByZXN1
bHRzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
ZnJvbS1wcm90b3R5cGUtY2hhaW4uanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKaW5kZXggNDlhMzFiN2YyNDdjMWJkMGFj
YTgyY2IyMmRmMjBlOGYxYmY2MWJkZC4uNTRiYmE4MmU2OTljNjJjY2NhODk0NTE2ZTYyYjdlNmNh
MWY1MTIwMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkg
bWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdh
dGNoLwogZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIpCiAgICAgICAgIHRocm93IG5l
dyBFcnJvcjsKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gZG9UZXN0KHpWYWwpIHsKIH0KIG5v
SW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7Citmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKICAgICBjb25zdCBYID0geyBpIH0KICAgICBDLnBy
b3RvdHlwZS56ID0gWAogICAgIGRvVGVzdChYKQpAQCAtMzYsNyArMzYsNyBAQCBmb3IgKGxldCBp
PTA7IGk8MTAwMDA7ICsraSkgewogCiBkZWxldGUgQy5wcm90b3R5cGUuegogCi1mb3IgKGxldCBp
PTA7IGk8MTAwMDAwMDsgKytpKSB7Citmb3IgKGxldCBpID0gMDsgaSA8IDIwMDAwMDA7ICsraSkg
ewogICAgIGdldFooe3o6IGl9KQogICAgIGRvVGVzdCh1bmRlZmluZWQpCiB9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBv
bHltb3JwaGljLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlu
bGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmI4NmQ1NWExOWY5YzA5ZTUw
ZGUxYmQ1NjM5NGRhNTEwZTRjNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpAQCAt
MCwwICsxLDQxIEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KKworZnVu
Y3Rpb24gQyhwcm9wKSB7CisgICAgdGhpc1twcm9wXSA9IDQKKyAgICBkZWxldGUgdGhpc1twcm9w
XQorfQorbm9JbmxpbmUoQykKKworZnVuY3Rpb24gZm9vKG8sIHByb3ApIHsKKyAgICBkZWxldGUg
b1twcm9wXQorfQorbm9JbmxpbmUoZm9vKQorCitmdW5jdGlvbiBGKHByb3ApIHsKKyAgICB0aGlz
W3Byb3BdID0gNAorICAgIGZvbyh0aGlzLCBwcm9wKQorfQorbm9JbmxpbmUoRikKKworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIG5ldyBDKCJmb28xIikKKyAgICBuZXcg
RigiZm9vMSIpCisgICAgbmV3IEMoImZvbzIiKQorICAgIG5ldyBGKCJmb28yIikKKyAgICBuZXcg
QygiZm9vMyIpCisgICAgbmV3IEYoImZvbzMiKQorICAgIG5ldyBDKCJmb280IikKKyAgICBuZXcg
RigiZm9vNCIpCisgICAgbmV3IEMoImZvbzUiKQorICAgIG5ldyBGKCJmb281IikKKyAgICBuZXcg
QygiZm9vNiIpCisgICAgbmV3IEYoImZvbzYiKQorICAgIG5ldyBDKCJmb283IikKKyAgICBuZXcg
RigiZm9vNyIpCisgICAgbmV3IEMoImZvbzgiKQorICAgIG5ldyBGKCJmb284IikKKyAgICBuZXcg
QygiZm9vOSIpCisgICAgbmV3IEYoImZvbzkiKQorICAgIG5ldyBDKCJmb28xMCIpCisgICAgbmV3
IEYoImZvbzEwIikKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMDg2M2M2NDFhOWE3OWRl
YzlmZTE0N2E5NWE4M2VlYzczZmYzYzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsMzUg
QEAKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdhdGNoLworCitmdW5jdGlvbiBDKCkg
eworICAgIHRoaXMueCA9IDQ7CisgICAgZGVsZXRlIHRoaXMueAorfQorbm9JbmxpbmUoQykKKwor
ZnVuY3Rpb24gRCgpIHsKKyAgICBkZWxldGUgdGhpcy54Cit9Citub0lubGluZShEKQorCitmdW5j
dGlvbiBmb28obykgeworICAgIGRlbGV0ZSBvLngKK30KK25vSW5saW5lKGZvbykKKworZnVuY3Rp
b24gRSgpIHsKKyAgICB0aGlzLnggPSA0CisgICAgZm9vKHRoaXMpCit9Citub0lubGluZShFKQor
CitmdW5jdGlvbiBGKCkgeworICAgIGZvbyh0aGlzKQorfQorbm9JbmxpbmUoRikKKworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgbmV3IEMKKyAgICBuZXcgRAorICAg
IG5ldyBFCisgICAgbmV3IEYKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUu
anMKaW5kZXggNzc5NWRjNTgxNTc4ZTRjMzk4MWMyMmFjODc2YzQ1NTQxM2U2NGQzYy4uYTkzOWFh
ZTNhYzhhY2NjMjIxNGRkN2U3ZDgwMjQ0MjFhODE2NDVkOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUu
anMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNh
Y2hlYWJsZS1zdHJ1Y3R1cmUuanMKQEAgLTI0LDUgKzI0LDUgQEAgZnVuY3Rpb24gZG9UZXN0KCkg
ewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwMDAwOyArK2kp
IGRvVGVzdCgpCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7ICsraSkgZG9UZXN0KCkKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVjdHVy
ZS10cmFuc2l0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0
cnVjdHVyZS10cmFuc2l0aW9uLmpzCmluZGV4IDQwM2M3YzA5Y2MxMjNmM2IxODU0NjgwYjZjMTdk
ZDQ1NmE1ZGVmMzEuLmE0YmExZTQ0ZGFjOGE5YTMzMWRlMDNiMDUzNWUzOTI0OTNlNjVjMTEgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUt
dHJhbnNpdGlvbi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2st
c3RydWN0dXJlLXRyYW5zaXRpb24uanMKQEAgLTEyLDYgKzEyLDkgQEAgZnVuY3Rpb24gYXNzZXJ0
X25lcShhLCBiKSB7CiAgICAgaWYgKGEgPT09IGIpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7CiB9Citub0lubGluZShhc3Nl
cnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQogCiBmdW5jdGlv
biBzZChvYmopIHsKICAgICBsZXQgZGF0YSA9ICR2bS5nZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlz
dChvYmopCkBAIC0zMSw2ICszNCw4IEBAIGZ1bmN0aW9uIHNpZChvYmopIHsKICAgICBsZXQgZGF0
YSA9IHNkKG9iaikKICAgICByZXR1cm4gZGF0YVtkYXRhLmxlbmd0aC0xXS5pZAogfQorbm9Jbmxp
bmUoc2QpCitub0lubGluZShzaWQpCiAKIGZ1bmN0aW9uIHRlc3REZWxldGVJc05vdFVuY2FjaGVh
YmxlKGkpIHsKICAgICBsZXQgZm9vID0ge30KQEAgLTYyLDYgKzY3LDcgQEAgZnVuY3Rpb24gdGVz
dERlbGV0ZUlzTm90VW5jYWNoZWFibGUoaSkgewogICAgIGFzc2VydF9lcSgkdm0uZ2V0Q29uY3Vy
cmVudGx5KGZvbywgImJhciIraSksIDEpCiAgICAgYXNzZXJ0KGZvb1siYmFyIiArIGldID09PSAx
KQogfQorbm9JbmxpbmUodGVzdERlbGV0ZUlzTm90VW5jYWNoZWFibGUpCiAKIGZ1bmN0aW9uIHRl
c3RDYW5NYXRlcmlhbGl6ZURlbGV0ZXMoaSkgewogICAgIGxldCBmb28gPSB7fQpAQCAtMTAwLDYg
KzEwNiw4IEBAIGZ1bmN0aW9uIHRlc3RDYW5NYXRlcmlhbGl6ZURlbGV0ZXMoaSkgewogICAgIGFz
c2VydF9lcShkYXRhW2RhdGEubGVuZ3RoLTJdLnByb3BlcnR5LCAiYmFyIiArIGkpCiB9CiAKK25v
SW5saW5lKHRlc3RDYW5NYXRlcmlhbGl6ZURlbGV0ZXMpCisKIGZ1bmN0aW9uIHRlc3RDYW5GbGF0
dGVuKGkpIHsKICAgICBsZXQgZm9vID0ge30KICAgICBmb3IgKGxldCBqPTA7IGo8NTAwOyArK2op
IHsKQEAgLTEzMSw2ICsxMzksNyBAQCBmdW5jdGlvbiB0ZXN0Q2FuRmxhdHRlbihpKSB7CiAgICAg
ICAgICAgICBhc3NlcnRfZXEodmFsLCB1bmRlZmluZWQpCiAgICAgfQogfQorbm9JbmxpbmUodGVz
dENhbkZsYXR0ZW4pCiAKIGZ1bmN0aW9uIHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUoKSB7CiAg
ICAgT2JqZWN0LnByb3RvdHlwZS5nbG9iYWxQcm9wZXJ0eSA9IDQyCkBAIC0xNzUsNiArMTg0LDcg
QEAgZnVuY3Rpb24gdGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSgpIHsKIAogICAgIGRvVGVzdCh1
bmRlZmluZWQpCiB9Citub0lubGluZSh0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKQogCiB0ZXN0
RGVsZXRlV2l0aElubGluZUNhY2hlKCkKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVs
ZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9w
ZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE0Y2QxN2I1ODRlOTM3MmZlNmFhZDU1
NDg0ODU2ZTc5YmViNzI1NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSw1MzkgQEAKKy8vQCBydW5EZWZh
dWx0KCItLXVzZUJpZ0ludD10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgewor
ICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBm
YWlsZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0g
YikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIg
PT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEg
PT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEg
KyAiICE9PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZnVuKSB7CisgICAg
bGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuKCkKKyAgICB9IGNhdGNo
IHsKKyAgICAgICAgdGhyZXcgPSB0cnVlCisgICAgfQorICAgIGFzc2VydCh0aHJldykKK30KK25v
SW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEp
Citub0lubGluZShhc3NlcnRfdGhyb3dzKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRl
IGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9v
KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgp
IHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAg
ICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29b
ImJheiJdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIp
CisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0
ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7
fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3Nl
cnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAg
ICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIg
PSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3Nl
cnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiAr
IGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAg
ICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlv
biB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQo
KSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBm
b28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAg
ICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28s
ICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJs
ZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2Jh
ciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisg
ICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAg
IH0KKyAgICBub0lubGluZShtYWtlRm9vNCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtl
Rm9vNCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQor
ICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFz
c2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2Vy
dChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3Nl
cnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2Z1bmN0
aW9uIHRlc3REZWxldGVJbmRleCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNSgpIHsKKyAgICAg
ICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAy
CisgICAgICAgIGZvb1swXSA9IDIzCisgICAgICAgIGZvb1sxXSA9IDI1CisgICAgICAgIGFzc2Vy
dF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb29b
MV0sIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzUpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFr
ZUZvbzUoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0X2VxKGZv
b1swXSwgMjMpCisgICAgICAgIGFzc2VydF9lcShmb29bMV0sIHVuZGVmaW5lZCkKKyAgICAgICAg
Zm9vWzFdID0gMQorICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCAxKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3REZWxldGVJbmRleCkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwo
aSkgeworICAgIGZ1bmN0aW9uIG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAg
ICAgICAgZm9vWyJiYXoiK2ldID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxl
dGUgZm9vWyJiYXoiK2ldCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUo
bWFrZUZvbzYpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBh
cnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2Vx
KE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGlu
IGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEp
CisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsg
al0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQor
bm9JbmxpbmUodGVzdFBvbHltb3JwaGljRGVsQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RCaWdpbnRE
ZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNygpIHsKKyAgICAgICAgbGV0IGZv
byA9IHt9CisgICAgICAgIGZvb1sxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwbl0gPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dCisgICAgICAgIHJldHVybiBmb28K
KyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzcpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTAp
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0g
bWFrZUZvbzcoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0g
MikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAg
ICBhc3NlcnQoISgxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbiBpbiBm
b28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQor
ICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpd
ID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lu
bGluZSh0ZXN0QmlnaW50RGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RTeW1ib2xEZWxldGVC
eVZhbCgpIHsKKyAgICBjb25zdCBzeW1ib2wgPSBTeW1ib2woJ2ZvbycpOworCisgICAgZnVuY3Rp
b24gbWFrZUZvbzgoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9s
XSA9IDEKKyAgICAgICAgYXNzZXJ0KCEoU3ltYm9sKCdmb28nKSBpbiBmb28pKQorICAgICAgICBh
c3NlcnQoc3ltYm9sIGluIGZvbykKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRl
IGZvb1tzeW1ib2xdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFr
ZUZvbzgpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzgoKQorICAgIH0KKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJb
al0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9i
amVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9v
KSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAg
ICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9
PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdFN5bWJvbERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0T2JqRGVsZXRlQnlWYWwo
KSB7CisgICAgY29uc3Qgc3ltYm9sID0geyBpOiAiZm9vIiB9OworCisgICAgZnVuY3Rpb24gbWFr
ZUZvbzkoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEK
KyAgICAgICAgYXNzZXJ0KHN5bWJvbCBpbiBmb28pCisgICAgICAgIGFzc2VydCghKHsgaTogImZv
byIgfSBpbiBmb28pKQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5
bWJvbF0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOSkK
KworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vOSgpCisgICAgfQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisg
ICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0Lmtl
eXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
T2JqRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgZnVuY3Rpb24gbWFrZUZvbzEwKCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0
X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXosIHRydWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2Jhcics
IHsKKyAgICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQor
ICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgZm9vLmZvb2Jh
cikKKyAgICAgICAgYXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9v
CisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28xMCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1
MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0g
PSBtYWtlRm9vMTAoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9
PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAg
ICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAg
ICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdE92
ZXJyaWRlKCkgeworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBmdW5jdGlvbigpIHsgfQorICAgICAg
ICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIHRydWUpCisgICAg
ICAgIGRlbGV0ZSBhcnJbal0ubGVuZ3RoCisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVu
Z3RoUHJvcGVydHkoYXJyW2pdKSwgZmFsc2UpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcg
PT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1
ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30K
K25vSW5saW5lKHRlc3RPdmVycmlkZSkKKworZnVuY3Rpb24gdGVzdE5vbk9iamVjdCgpIHsKKyAg
ICBmdW5jdGlvbiBkZWxldGVJdChmb28pIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBmb28uYmF6
KQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKGRlbGV0ZUl0KQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGFycltqXSA9IHsgYmF6OiBqIH0KKyAgICB9CisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAg
ICAgYXNzZXJ0KCJiYXoiIGluIGZvbykKKyAgICAgICAgZGVsZXRlSXQoZm9vKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KKworICAgIGFzc2VydChkZWxldGVJdCgiYmF6
IikgPT0gImJheiIpCisgICAgZGVsZXRlSXQoU3ltYm9sKCJoaSIpKQorfQorbm9JbmxpbmUodGVz
dE5vbk9iamVjdCkKKworZnVuY3Rpb24gdGVzdE5vbk9iamVjdFN0cmljdCgpIHsKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBkZWxldGVJdChmb28pIHsKKyAgICAgICAgYXNzZXJ0
KGRlbGV0ZSBmb29bImJheiJdKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5s
aW5lKGRlbGV0ZUl0KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IHsgYmF6OiBqIH0KKyAgICB9
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9v
ID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KCJiYXoiIGluIGZvbykKKyAgICAgICAgZGVsZXRl
SXQoZm9vKQorICAgICAgICBkZWxldGVJdCg1KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgIH0KKworICAgIGFzc2VydChkZWxldGVJdCgiYmF6IikgPT0gImJheiIpCisgICAg
ZGVsZXRlSXQoU3ltYm9sKCJoaSIpKQorCisgICAgbGV0IGZvbyA9IHt9CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGZvbywgJ2JheicsIHsKKyAgICAgIHZhbHVlOiA0MiwKKyAgICAgIGNvbmZp
Z3VyYWJsZTogZmFsc2UKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZUl0
KGZvbykpCit9Citub0lubGluZSh0ZXN0Tm9uT2JqZWN0U3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0
RXhjZXB0aW9uVW53aW5kKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIG11
dGF0ZVRoZW0oYSxiLGMsZCxlLGYsZyxoLGkpIHsKKyAgICAgICAgZy5pID0gNDIKKyAgICB9Cisg
ICAgbm9JbmxpbmUobXV0YXRlVGhlbSkKKworICAgIGZ1bmN0aW9uIGRlbGV0ZUl0KGZvbykgewor
ICAgICAgICBsZXQgY2F1Z2h0ID0gZmFsc2UKKworICAgICAgICB0cnkgeworICAgICAgICAgICAg
dmFyIGEgPSB7IGk6IDEgfQorICAgICAgICAgICAgdmFyIHYgPSB7IGk6IDEwIH0KKyAgICAgICAg
ICAgIHZhciBiID0geyBpOiAxMDAgfQorICAgICAgICAgICAgdmFyIGMgPSB7IGk6IDEwMDAgfQor
ICAgICAgICAgICAgdmFyIGQgPSB7IGk6IDEwMDAwIH0KKyAgICAgICAgICAgIHZhciBlID0geyBp
OiAxMDAwMDAgfQorICAgICAgICAgICAgdmFyIGYgPSB7IGk6IDEwMDAwMDAgfQorICAgICAgICAg
ICAgdmFyIGcgPSB7IGk6IDEwMDAwMDAwIH0KKyAgICAgICAgICAgIHZhciBoID0geyBpOiAxMDAw
MDAwMDAgfQorICAgICAgICAgICAgdmFyIGkgPSB7IGk6IDEwMDAwMDAwMDAgfQorCisgICAgICAg
ICAgICBtdXRhdGVUaGVtKGEsYixjLGQsZSxmLGcsaCxpKQorCisgICAgICAgICAgICBkZWxldGUg
Zm9vWyJiYXoiXQorCisgICAgICAgICAgICBhID0gYiA9IGMgPSBkID0gZSA9IGYgPSBnID0gaCA9
IGkKKyAgICAgICAgfSBjYXRjaCB7CisgICAgICAgICAgICBhc3NlcnRfZXEoYS5pLCAxKQorICAg
ICAgICAgICAgYXNzZXJ0X2VxKGkuaSwgMTAwMDAwMDAwMCkKKyAgICAgICAgICAgIGFzc2VydF9l
cShnLmksIDQyKQorICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBjYXVnaHQKKyAgICB9CisgICAgbm9JbmxpbmUoZGVsZXRlSXQpCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDEwMDAwMDsgKytqKSB7CisgICAgICAgIGFzc2VydCghZGVsZXRlSXQo
eyBqLCBiYXo6IDUgfSkpCisgICAgfQorCisgICAgbGV0IGZvbyA9IHt9CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGZvbywgJ2JheicsIHsKKyAgICAgIHZhbHVlOiA0MiwKKyAgICAgIGNvbmZp
Z3VyYWJsZTogZmFsc2UKKyAgICB9KTsKKworICAgIGFzc2VydChkZWxldGVJdChmb28pKQorfQor
bm9JbmxpbmUodGVzdEV4Y2VwdGlvblVud2luZCkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJs
ZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkKKyAgICB0
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorICAgIHRlc3REZWxldGVJbmRleCgpCisgICAg
dGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKKyAgICB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKQor
ICAgIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpCisgICAgdGVzdFN0cmljdCgpCisgICAgdGVzdE92
ZXJyaWRlKCkKKyAgICB0ZXN0Tm9uT2JqZWN0KCkKKyAgICB0ZXN0Tm9uT2JqZWN0U3RyaWN0KCkK
K30KKwordGVzdEV4Y2VwdGlvblVud2luZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391568</attachid>
            <date>2020-02-24 12:51:11 -0800</date>
            <delta_ts>2020-02-24 16:17:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200224125110.patch</filename>
            <type>text/plain</type>
            <size>221114</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDI3NDBmNDllZGMwZWQ3MmU3YzUzZjg3NzNiYzQ2NzUwNzM1NGYyLi40ZTAyMmNkZTZjOWM2ODNi
MDgwYmVhOWZjNzAxYzllOTNkOGZkOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMy45MDk2eCBmYXN0
ZXIKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYyAgZGVm
aW5pdGVseSAxLjUyMzl4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90
b3R5cGUtY2hhaW4gICAgICAobmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxl
dGVQcm9wZXJ0eUZvcktleSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFt
ZU1hdGNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlBy
b3BlcnR5Q2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50
Q2VsbCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6bmV3U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5o
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6
CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVh
YmxlSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAg
KiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3Vt
ZW50czo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFi
bGVNaXNzKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1
cmFibGUpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3Mg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJh
YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNo
aW5nKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1
bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAg
IChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6Cisg
ICAgICAgIChKU0M6OnZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5Lmg6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAq
IHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0
aFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgor
CiAyMDIwLTAyLTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHN1cHBvcnQgZm9yIGJ5dGVjb2RlIGNhY2hpbmcgbW9yZSByb2J1c3QgYWdhaW5zdCBmaWxl
IGNvcnJ1cHRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGNmMTJmMjc2NTBkNDhkNTAxNWI4ZGNjMTFlNTc4MjViMzVhZGI4
MDIuLmYyOTcyMzFjZWY1MDEwOGViM2M0MjY4Y2NkNzg4NGYwYTg3MTA5MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBw
bGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5o
OgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06
OmdldCBjb25zdCk6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpidWlsZExpc3QgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
cmVtb3ZlSWYpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6YmVnaW4pOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpTcGVjdHJ1bTo6ZW5kKTogRGVsZXRlZC4KKwogMjAyMC0wMi0yMSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjU3MDcy
KTogTW90aW9uTWFyayB8IE1hYyB8IC0xMCUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YzM1ODg0M2RlYTkxMGJj
ZWFkOTE3MWFjNmMzMjdmODgxMjcyZmU4Li44NDAwZDdiZDk5MmIxMDQwOTY4M2E0M2M3NTM2ZjIx
NWE2NDk4OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDItMjEgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBD
YWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0
aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZW1vdGVET01X
aW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZW1vdGVET01XaW5kb3c6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJh
dGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChH
ZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06
CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3JpcHRLZXk6XSk6CisgICAg
ICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgICogYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMjAtMDIt
MjEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIGFuIHVudXNlZCBsb2NhbCB2YXJpYWJsZSBhZnRlciByMjU2ODA4CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIx
OWNmMTVjYTVmNWZlOTczY2NjMzdjOTFjZGM0YWFkZDRiZTE1MzcuLjJjYWJkZmVmZmYzMjc1ODhk
ZDkwZTE3ZTY1NmY4OGMzZDc4ZjA1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAt
MDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAg
ICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAtMDIt
MjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjU1NTMzKSBOdWxsIERlcmVmIG9mIF9zZXNzaW9uV3JhcHBlciB1bmRlciBbV0tOZXR3b3Jr
U2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBs
ZXRpb25IYW5kbGVyOl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAzZDdiNDc2OWRj
MGNiMTY5ZDg5YTNlNWE4NzY4NmYzYTc3M2VjM2U4Li5mMWQ4ZjVmMzJmMTBjMzQ3MGVjNTk5ZjE0
MWYzZjc1OTgyMzUyZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjAtMDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUu
Y29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0eSk6CisKIDIwMjAtMDItMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBMYXJn
ZSBmb3JtIGNvbnRyb2xzIGFyZSByZW5kZXJlZCBhdCB0aGUgd3JvbmcgTlNDb250cm9sU2l6ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAwMzRi
MzU3YzA3MzhlMzQ5MTI1ODg1OGQ3MDY5ODlmZWZjYjQ4MzNkLi45MmNhOTI0Nzc5NjJiYzA0Yzdh
OGViODZhMWY0MTVkMmIxODdmMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaApAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCk7CiAKICAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IGNkNTExYmZk
Mjg0YTAxMzI1MmE2NDA1YTY3MDdhYWQxMzdhMWJjY2IuLjRiZWMzM2E3MmRjMjg0NzdhNjEzNTZm
ZGI5MjBhNDc2ODYyZWQ3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2IKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00MTgs
NyArNDE4LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CkBAIC00MjYsNyArNDI2LDggQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWMKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIEpTQ2FsbGJhY2tP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwotICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7
CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggZjdmOWRhYjNmMjhhZGMwZWFiYjJiZGU4YjI1MDY3NzJhZDI1ZmZjZS4uOWRmODc4ZTU4
OGZhMmFlZjA2MjJhYzY5NTg3ODFhYmU2N2EzN2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTQ3OSw3ICs0NzksOCBAQCBib29sIEpTT2JqZWN0RGVs
ZXRlUHJvcGVydHlGb3JLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUgogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNl
cHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwog
ICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUzNCw3ICs1MzUsOCBAQCBib29sIEpTT2JqZWN0RGVsZXRl
UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcgogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCi0gICAgYm9v
bCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSk7CisgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSwgc2xvdCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDkxZTQyN2MzMGM1MTE2M2VkZDlmMTA2
ZDQyZjk1ZTA5ZDAyYmU5YzQuLjc1NTZlOTU2ZmM2MzJmN2UyYjlkMGUxYWRiZjdjYTgxZjhlOGYw
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxNSw2ICs4MTUsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRp
bWUvRGF0ZUluc3RhbmNlLmgKICAgICBydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgKICAgICBy
dW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCisgICAgcnVudGltZS9EZWxldGVQcm9w
ZXJ0eVNsb3QuaAogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50
aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZjQyYzJhZThmZTU5MmJmNmQ2ODI4NTM4
OTc2ZDBjZjZkYTZkYjFmLi5mYjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIwMmM0ZjZlNDQxODVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3OCw2ICsxMTc4LDcgQEAKIAkJ
NzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwMTFB
RkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRCRUEy
MDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyog
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmggKi87IH07CisJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxl
dGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3M0UzNzk5
NDIyRTBFRjY1MDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2
NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovOyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5
M0E2RTcgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRl
eHRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzkwMDgxMzkxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUy
RDdDRCAvKiBXYXNtTW9kdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTM5NzEsNiArMzk3Miw3IEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0
OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyQUFGN0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczNEI2NTU0MjNG
NEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGVsZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzNFMzc5OTUyMkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9v
cFN0cmVuZ3RoLmNwcDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9k
dWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDg0LDYgKzcwODYsNyBAQAog
CQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJ
CQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCTE2
OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywK
KwkJCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8s
CiAJCQkJMEZFMDUwMEYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8s
CiAJCQkJMEZFMDUwMTAxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5oICovLAog
CQkJCTBGRTA1MDBEMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuY3Bw
ICovLApAQCAtOTIwOSw2ICs5MjEyLDcgQEAKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcg
LyogRGVmZXJyZWRTb3VyY2VEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0
NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkJCNzNCQjFERUY4NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8q
IERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAw
QThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDMx
N0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMTA2NjIsNyArMTA2NjYsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyog
UHJvamVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYXR0cmlidXRl
cyA9IHsKLQkJCQlCdWlsZEluZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CiAJCQkJ
RGVmYXVsdEJ1aWxkU3lzdGVtVHlwZUZvcldvcmtzcGFjZSA9IE9yaWdpbmFsOwogCQkJCUxhc3RT
d2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTAwMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAyYWY0
ODBhOWNlN2Q4MDI1Y2U1ODgzZDhhZGY5Yzk4NDI2OWJhOTc1Li44ZWRlMjg0OGQyYzlhZjllZjM4
YjY0YTY0Mzk5ZmIxMjFiOWU2M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC03Myw2ICs3Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlz
czoKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdM
ZW5ndGg6CkBAIC0xMDYsNyArMTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RG
TW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9w
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAtMTIz
LDYgKzEyNSwyMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCitz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAorICAg
IFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3
U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgIGlmICghbmV3U3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpICYmIG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAg
ICAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQg
dG8gY2hlY2sgdGhlIGpzY2VsbC4KKyAgICAgICAgLy8gU2VlIHRoZSBEZWxldGUgY29kZSBiZWxv
dy4KKyAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIG5ld1N0cnVjdHVy
ZS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisKKyAgICAgICAg
aWYgKG1heU5lZWRUb0NoZWNrQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9
LCB7IH0pKTsKK30KKwogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjYyLDYg
KzI4MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkg
Y29uc3QKICAgICBjYXNlIExvYWQ6CiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBi
eV92YWwgZm9yIHRoZXNlIHB1dHMsIGJ1dCB3ZSBkbyBjYXJlIGFib3V0IHRoZSBpZGVudGlmaWVy
LgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNl
OiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zMDksNiArMzMwLDkg
QEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjaygpIGNvbnN0CiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9u
OgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAg
IGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlzczoKICAg
ICBjYXNlIEdldEdldHRlcjoKQEAgLTM1Niw2ICszODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6Om5l
ZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExv
YWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVs
ZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxh
Y2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTQ0Nyw2ICs0NzQs
OSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsKFZNJiB2bSwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgog
ICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6Cisg
ICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAg
IGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00
OTIsNiArNTIyLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8
SlNDZWxsKj4qIGNlbGxzVG9NYXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIEN1c3RvbUFj
Y2Vzc29yU2V0dGVyOgogICAgICAgICBkb2VzQ2FsbHMgPSB0cnVlOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBj
YXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBj
YXNlIE1pc3M6CkBAIC02MTQsNiArNjQ3LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNl
KGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKSBjb25zdAogCiAgICAgY2FzZSBMb2FkOgogICAgIGNh
c2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNh
c2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTY2Myw3ICs2OTksNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAicHJvdG90eXBlIGFjY2VzcyBjaGFpbiA9ICIpOwogICAgICAgICBtX3BvbHlQcm90
b0FjY2Vzc0NoYWluLT5kdW1wKHN0cnVjdHVyZSgpLCBvdXQpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFu
c2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9pbnRl
ckR1bXAobmV3U3RydWN0dXJlKCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUpCiAg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcCht
X3N0cnVjdHVyZS5nZXQoKSkpOwpAQCAtNzA1LDYgKzc0MSw3IEBAIGJvb2wgQWNjZXNzQ2FzZTo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToK
ICAgICAgICAgaWYgKHZpc2l0b3Iudm0oKS5oZWFwLmlzTWFya2VkKG1fc3RydWN0dXJlLT5wcmV2
aW91c0lEKCkpKQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX3N0cnVj
dHVyZS5nZXQoKSk7CiAgICAgICAgIGVsc2UKQEAgLTE4NTEsNyArMTg4OCw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICAgICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNw
aWxsU3RhdGUsIHJlc3VsdFJlZ2lzdGVyVG9FeGNsdWRlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7
CiAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3Ms
CkBAIC0xODk2LDYgKzE5MzMsNzEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNs
b3dQYXRoLmVtcHR5KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBEZWxl
dGU6IHsKKyAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5m
by51c2VkUmVnaXN0ZXJzKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJl
Z3MoKSk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGFsbG9j
YXRvci5sb2NrKGJhc2VHUFIpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsK
KyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0Jl
ZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3Bl
cnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSB2YWx1
ZVJlZ3MuZ3ByKCkpOworICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgQVNTRVJUKHZhbHVlUmVncy5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKworICAgICAgICBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0K
KyAgICAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhq
aXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3Bh
Y2UpOworCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBib29sIGhh
c0luZGV4aW5nSGVhZGVyID0gbmV3U3RydWN0dXJlKCktPm1heUhhdmVJbmRleGluZ0hlYWRlciht
YXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhpcyBjYXNl
IHlldCBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAg
IC8vIFNlZSBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGFuZCBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkuCisgICAgICAgIEFTU0VSVCghbWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAg
Ly8gQ2xlYXIgdGhlIGJ1dHRlcmZseSBpZiB3ZSBoYXZlIG5vIHByb3BlcnRpZXMsIHNpbmNlIG91
ciBwdXQgY29kZSBleHBlY3RzIHRoaXMuCisgICAgICAgIGJvb2wgc2hvdWxkTnVrZVN0cnVjdHVy
ZUFuZENsZWFyQnV0dGVyZmx5ID0gIW5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
ICYmIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFoYXNJbmRleGluZ0hlYWRl
cjsKKworICAgICAgICBqaXQubW92ZVZhbHVlKEpTVmFsdWUoKSwgdmFsdWVSZWdzKTsKKworICAg
ICAgICBpZiAoc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5KSB7CisgICAgICAg
ICAgICBqaXQubnVrZVN0cnVjdHVyZUFuZFN0b3JlQnV0dGVyZmx5KHZtLCB2YWx1ZVJlZ3MucGF5
bG9hZEdQUigpLCBiYXNlR1BSKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0lubGluZU9mZnNldCht
X29mZnNldCkpIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAg
IHZhbHVlUmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAg
ICAgICAgICAgICAgICAgIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0Ojpv
ZmZzZXRPZklubGluZVN0b3JhZ2UoKSArCisgICAgICAgICAgICAgICAgICAgIG9mZnNldEluSW5s
aW5lU3RvcmFnZShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BS
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAg
IGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5CdXR0ZXJmbHko
bV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAgICB1aW50
MzJfdCBzdHJ1Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1Y3R1cmUo
KS0+aWQoKSk7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlQml0cyksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisKKyAgICAg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0cnVlKSwgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSk7CisKKyAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3Rl
cnNCeVBvcHBpbmcoaml0LCBwcmVzZXJ2ZWRTdGF0ZSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJh
YmxlOiB7CisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZmFs
c2UpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVNaXNzOiB7CisgICAgICAg
IGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCkpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlMZW5ndGg6IHsKICAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmgKaW5kZXggNzlkMzEwMTU1ZTkzYTU0NTNkMjg2MWM0MzIyN2JhM2JhYzE5ZjI3
Ny4uMTA4ZmVmM2IzMzAxMmNmNGU3ZGIyN2UyMGE2MjYwMjA3ODVkMjE1OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC04NSw2ICs4NSw5IEBAIHB1
YmxpYzoKICAgICBlbnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgTG9hZCwKICAg
ICAgICAgVHJhbnNpdGlvbiwKKyAgICAgICAgRGVsZXRlLAorICAgICAgICBEZWxldGVOb25Db25m
aWd1cmFibGUsCisgICAgICAgIERlbGV0ZU1pc3MsCiAgICAgICAgIFJlcGxhY2UsCiAgICAgICAg
IE1pc3MsCiAgICAgICAgIEdldEdldHRlciwKQEAgLTE0NSw5ICsxNDgsMTEgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
PSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwg
c3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOwogCi0gICAg
Ly8gVGhpcyBjcmVhdGUgbWV0aG9kIHNob3VsZCBiZSB1c2VkIGZvciB0cmFuc2l0aW9ucy4KLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0
ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5p
cXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisg
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKQEAgLTE1
Nyw3ICsxNjIsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0
CiAgICAgewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmICht
X3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLT5wcmV2aW91c0lEKCk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVy
ZS5nZXQoKTsKICAgICB9CkBAIC0xNjUsNyArMTcwLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUcmFuc2l0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1f
dHlwZSA9PSBEZWxldGUpOwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcAppbmRleCAxMzI0MDljMGE0NTEwYmRmYThlY2UzM2I3NDM0NzE2MDJkN2IwZTc5
Li5iMTY2YzMwYzE4YTUyM2E3NjI1ZjM5YWY2Yjc4OTUwNjdhYTVmMGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAg
LTc5NSw2ICs3OTUsMTUgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFj
Y2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZSkKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlRyYW5zaXRp
b246CiAgICAgICAgIG91dC5wcmludCgiVHJhbnNpdGlvbiIpOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3Vy
YWJsZToKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVOb25Db25maWd1cmFibGUiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgb3V0
LnByaW50KCJEZWxldGVNaXNzIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nh
c2U6OlJlcGxhY2U6CiAgICAgICAgIG91dC5wcmludCgiUmVwbGFjZSIpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcAppbmRleCA2MTc4NzM3ZjlmOGE5Y2QwYjZkZGFkNTdmMWNmMTJlZmU0ZmNhNzA1
Li45NmExYmFlY2JlNGNiYmI3NmRiZGVkYTgwNTY1YTJjNTk4NjU1MjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAg
LTI3Niw2ICsyNzYsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICBy
ZXNldEluc3RhbmNlT2YoKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQ6CisgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVs
QnlLaW5kOjpOb3JtYWwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRl
bGV0ZUJ5VmFsOgorICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2lu
ZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgZGVyZWYo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgKaW5kZXggZGRjZTg1ZWMwMjU1NTc2YzllMzQ1MWY2NDczNmQxMmMzODk0MjgwMy4uYjU3
NWJkZDIxNjE5YzJkZmU0ZjE4MmZhZWQ5MGYyNjhlOWUyNjE5YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU1LDcgKzU1
LDkgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90IHsKICAgICBHZXRCeVZhbCwKICAg
ICBQdXQsCiAgICAgSW4sCi0gICAgSW5zdGFuY2VPZgorICAgIEluc3RhbmNlT2YsCisgICAgRGVs
ZXRlQnlJRCwKKyAgICBEZWxldGVCeVZhbAogfTsKIAogZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBp
bnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2Nv
cGUuY3BwCmluZGV4IDI2ZTI4MjkzOWU5YWNhODg2NWMyMjE3NzNjMmE0MWUwMjgwOTRkZGEuLjQ4
YjViODZmYTRiOWU4NjVlYTQ4ZGM5OWE0OTNiZDk0OGQwNzRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKQEAgLTEyOSwxNCArMTI5
LDE0IEBAIGJvb2wgRGVidWdnZXJTY29wZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIERlYnVnZ2VyU2NvcGU6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
RGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nhc3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwogICAg
IEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsKICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6
Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2NvcGUoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIERlYnVnZ2Vy
U2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclNjb3BlLmgKaW5kZXggZmY0Y2UxYjFkYTRiNTc5MGRlOGFkOTg4YTcxZjYwMmNkZjI2MTY3
NC4uNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlhMWEyMTQ5Nzc1ZWRkODAyZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDdmZmEzOGU2NmQyZTA4ZDc0NTk4OWJkNjEyOWRiZWFh
MGZhMGQwN2IuLmZiMWFhNTIwZDI0NTM4MjYwNDcyMTBiMzgzMjg5ZmFjM2M1ZjU2YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTYxOCw2ICsx
NjE4LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgRGVsZXRlQnlWYWw6IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+
c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIg
YmFzZWQgb24gcmVhZGluZyB0aGUKQEAgLTI1MTgsOCArMjUzMCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRv
cjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKLSAg
ICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3Ogog
ICAgICAgICBjYXNlIElzRW1wdHk6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGUzZTIwOGQyZGEx
Y2Q3MzliZmFjYzhjMzRjNTQ5N2NjNTYyZGI5MzYuLjM4NzE1OTE3ODkwMzEyMGE2MTI2NDVlNGEy
MzQzNTEzYmE1ZGJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCkBAIC0yNDYsNiArMjQ2LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlJZHNX
aXRoVGhpcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeVZh
bHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0QnlJZHMsIGxp
bmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIGxpbmtCdWZm
ZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5rQnVmZmVyKTsK
ICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwogICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggNDg4MDg3NGMyODVhYjdk
NDQ3ZWI4OTNhNmU4YjRiYmYwMTA3MzFkNC4uMmZiNmFkOGY2MmY5NWEyNmU2Y2RiODI2YWE2ZDFj
ZDY3ZjE5NDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aApAQCAtMTkxLDcgKzE5MSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3B1dEJ5SWRz
LmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93
UGF0aCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgYWRkRGVsQnlJZChjb25zdCBKSVREZWxC
eUlkR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAgICB7Cisg
ICAgICAgIG1fZGVsQnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeUlkR2Vu
ZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGREZWxCeVZhbChj
b25zdCBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1Bh
dGgpCisgICAgeworICAgICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVy
PEpJVERlbEJ5VmFsR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCiAgICAgdm9p
ZCBhZGRJbnN0YW5jZU9mKGNvbnN0IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiwgU2xvd1Bh
dGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgbV9pbnN0YW5jZU9mcy5hcHBl
bmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+KGdlbiwgc2xvd1Bh
dGgpKTsKQEAgLTM0OCw2ICszNTgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxJbmxpbmVDYWNo
ZVdyYXBwZXI8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiwgND4gbV9nZXRCeUlkc1dpdGhU
aGlzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlWYWxHZW5lcmF0b3I+
LCA0PiBtX2dldEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5
SWRHZW5lcmF0b3I+LCA0PiBtX3B1dEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBw
ZXI8SklURGVsQnlJZEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlJZHM7CisgICAgVmVjdG9yPElubGlu
ZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlWYWxzOwogICAg
IFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4gbV9pbkJ5
SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVyYXRv
cj4sIDQ+IG1faW5zdGFuY2VPZnM7CiAgICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0Nh
bGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCA2NDJiMTYzNTZmOTBlOWMzODYwMmViYzU3ZmQ5ZTA0YTBmNDViNTI4Li5lZTQ2YjA5
YjhkMGM5MzMxOTYyNTMyZTAxZjc4M2UzYzE4MGRmMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTE0NSw0MyArMTE0NSw2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVE
ZWxldGVCeUlkKE5vZGUqIG5vZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
LQotICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQotICAgIHZhbHVlLnVzZSgpOwotCi0g
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5
SWQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgaWRl
bnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKLSAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwotCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci19Ci0KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQotewotICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwot
Ci0gICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0gICAgSlNW
YWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICBiYXNlLnVzZSgpOwotICAgIGtleS51c2UoKTsKLQot
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eVZhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGtl
eVJlZ3MpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
LX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9k
ZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjdXJyZW50U2NvcGUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZWNmYzkwMzkwYjY4NzQ4NjA4Y2UxZDBjMGYwOTI1YmUy
Nzg4MzM0Mi4uMDgzZTY4NGRmOTEyNGM5ZGQ0MTEzYzQyNzRhNmI2NWYxMmIzMGJmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCkBAIC00Mjc4LDYgKzQyNzgsNDMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ymxlc3NCb29s
ZWFuKEdQUlJlZykKIHsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgdmFsdWUudXNlKCk7CisKKyAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVy
aWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIHZhbHVl
UmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRH
UFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQoreworICAgIEpTVmFsdWVP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEpTVmFsdWVPcGVyYW5kIGtl
eSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7
CisgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICBiYXNlLnVzZSgpOworICAgIGtleS51
c2UoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNo
aWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKaW5kZXggMzcyOGI4NTNmYWJhYjI4YmY0NDU0Yzk1MDU0ZmNmNTdjNDViZDU0Yy4uYjA3
Y2IyNTc1ZDEwNjI3NzhkNGViMDc0ZGZjNWZhNjE2NjNkZDk2MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01NDM5LDYgKzU0
MzksODggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0NvZGVQb2ludEF0KE5v
ZGUqIG5vZGUpCiAgICAgaW50MzJSZXN1bHQoc2NyYXRjaDFHUFIsIG1fY3VycmVudE5vZGUpOwog
fQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQor
eworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisKKyAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7CisKKyAgICBhdXRvKiBwcm9wZXJ0eSA9IGlkZW50aWZpZXJVSUQobm9kZS0+aWRl
bnRpZmllck51bWJlcigpKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNw
ZWNDZWxsKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
YmFzZVJlZ3MpKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNp
dGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4s
IG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlz
LT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICBiYXNlUmVncywgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKworICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdl
bi5zdHViSW5mbygpLCBiYXNlUmVncywgcHJvcGVydHkpOworCisgICAgbV9qaXQuYWRkRGVsQnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBu
b2RlKQoreworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisg
ICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1
ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwor
CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCkpCisgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7Cisg
ICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBTcGVjQ2VsbCkpCisgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKKworICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2Vw
dGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkp
OworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJl
Z3MsIGtleVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CisKKyAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkp
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplLAorICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIGJhc2VSZWdzLCBrZXlSZWdzKTsKKworICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30K
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURhdGVHZXQoTm9kZSogbm9kZSkKIHsKICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0ZDM0Mjdi
YzgyZThjOWIyNDdhYzg3MWEwMjAwMDFiYjIzODI5ZjI2Li5iODhmM2RhNWMwMGFlOTNiNzMxODRi
MzcwYjM0OGE2ZGQ3MmQ0MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC01MTQ0LDIwICs1MTQ0LDE2OCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0LCBtX291dC5j
b25zdEludDMyKG1fbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAg
fQogCisgICAgdGVtcGxhdGU8RGVsQnlLaW5kIGtpbmQsIHR5cGVuYW1lIFN1YnNjcmlwdEtpbmQ+
CisgICAgdm9pZCBjb21waWxlRGVsQnkoTFZhbHVlIGJhc2UsIFN1YnNjcmlwdEtpbmQgc3Vic2Ny
aXB0VmFsdWUpCisgICAgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQ7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgeworICAgICAg
ICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFsdWVSZXA6OlNvbWVM
YXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQg
PSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGJhc2UsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7Cisg
ICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShzdWJzY3JpcHRW
YWx1ZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgfQorICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisKKyAgICAg
ICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9Cisg
ICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisK
KyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIE5vZGUqIG5vZGUg
PSBtX25vZGU7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAg
IFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAg
ICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CisgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1z
KS0+anVtcHMoaml0KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNs
b3dDYXNlczsKKworICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFt
c1sxXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0u
Z3ByKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDAp
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2go
MCkpOworCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFu
Y2hJZk5vdENlbGwoYmFzZSkpOworCisgICAgICAgICAgICAgICAgY29uc3RleHByIGF1dG8gb3B0
aW1pemF0aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiBjb25z
dGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25z
dCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
LmdwcigpICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElm
Tm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHBy
IChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuR1BS
LCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+Ojpj
cmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Vic2NyaXB0LCByZXR1cm5HUFIsIHBhcmFtcy5ncFNjcmF0Y2goMCkp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKworICAgICAg
ICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24s
IHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmpp
dCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhD
YWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NChwYXRjaHBvaW50KSk7
CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZCgpCiAgICAgewotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291
dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBiYXNlLCBtX291dC5jb25zdEludFB0cih1aWQpKSkpOworICAgICAg
ICBMVmFsdWUgYmFzZTsKKworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpKSB7CisgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAgYmFzZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgYmFzZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFk
IHVzZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29t
cGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsPihiYXNlLCBtX2dyYXBoLmlkZW50aWZpZXJzKClb
bV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVE
ZWxldGVCeVZhbCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAg
ICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
IExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBzdWJzY3JpcHQpKSk7Cisg
ICAgICAgIExWYWx1ZSBiYXNlOworICAgICAgICBMVmFsdWUgc3Vic2NyaXB0OworCisgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxs
VXNlOiB7CisgICAgICAgICAgICBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7
CisgICAgICAgICAgICBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBzdWJzY3Jp
cHQgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIHN1YnNjcmlw
dCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsQnlWYWw+KGJhc2UsIHN1
YnNjcmlwdCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UHVzaCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRlNDQ0YzQzZjVh
ZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1NmMxNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8o
UHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwK
LSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2VsZlBhdGNoKSBc
CisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhEZWxCeVJlcGxh
Y2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2OWNkMWI3ODc0NGU4
Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9w
dXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1fZGVsQnlWYWxJ
bmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4
ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0lu
Zm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9kZWxfYnlf
dmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
aGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRf
ZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6Omxp
bmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRjaEJ1ZmZlcik7
CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRjaEJ1ZmZl
cik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZmZXIpOwor
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFs
aXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5s
aW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1NS4uNjcx
NjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnRlcihj
b25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5SWRzV2l0
aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1dEJ5SWRzOwog
ICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CisgICAgICAgIFZl
Y3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBWZWN0b3I8SklU
RGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFu
Y2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGls
YXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENv
bXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYgKzkzOCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4
IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBVSU5UX01B
WCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAg
ICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWdu
ZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3Rh
bmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVj
dGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9J
bmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2ZWVkNDU3
M2EzOWNiNTZiY2NhNjVkNWEuLmIwYWQ2M2JjNTExYzI3NTU0Mzc3MTIwYTQ4ZmZmMzYyYmQxNTVm
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY4IEBAIFZfSklUT3BlcmF0aW9uX0dTc2lK
SkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlWYWxHZW5lcmF0
b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJl
Z2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxz
ZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJ
bmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5w
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1
ZUdQUiA9IHJlc3VsdDsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1YkluZm8tPmJh
c2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0gcHJvcGVy
dHkudGFnR1BSKCk7CisjZW5kaWYKKyAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFy
KHNjcmF0Y2gpOworfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwor
ICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBq
aXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCisg
ICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQoreworICAgIEFT
U0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0
UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KG1fc3RhcnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1Zh
bHVlUmVncyBiYXNlLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2Uo
Y29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVC
eUlELCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IHRydWU7CisgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdCk7Cisg
ICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1Yklu
Zm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnZh
bHVlR1BSID0gcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+
YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBJbnZh
bGlkR1BSUmVnOworI2VuZGlmCisgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihz
Y3JhdGNoKTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAg
IG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQu
bGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBM
aW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJU
KG1fc3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRo
LCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9z
dGFydCkpOworfQorCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaAppbmRleCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3
MzE2Li4yNmU3MDBmYmI3YWQxODNiZTFhY2JhNzNmMzdmNmZiNDJmZWZjZDBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBA
IC0xNDIsNiArMTQyLDU2IEBAIHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9Owog
CitjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGlj
OgorICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVy
YXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0
dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAor
ICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQ
YXRoTGlua0J1ZmZlcik7CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImKTsKKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKK2Ns
YXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Ig
eworICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAg
ICBKSVREZWxCeUlkR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAor
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xv
d1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5t
X2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7Cisg
ICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhM
aW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1
bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCiBjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJs
aWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBl
MzYyNjczMjVjNzRhZTIyZjg2MThlYTllMmFkMDAyZTQ4ZGM2MzM0Li43YmRmMWY3MzJiZjRlMDVk
OWI4NTY5NmVmNDY4NDdmM2I1NjEwNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTIxNDIsNyArMjE0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9i
amVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1By
b3BlcnR5R2VuZXJpYyhnbG9iYWxPYmplY3QsIGluZGV4LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAgICAgCi1zdGF0aWMgYm9vbCBkZWxl
dGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBWTSYgdm0sIEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3N0YXRpYyBi
b29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCkBAIC0yMTUwLDMxICsyMTUwLDUxIEBAIHN0YXRpYyBib29sIGRlbGV0
ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IFZNJiB2CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICgh
YmFzZU9iaikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgY291bGREZWxldGUgPSBi
YXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKSk7CisgICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpLCBzbG90KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsK
ICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKLQotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKSkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZSk7CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKKworICAg
IGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNs
b3QsIGJhc2VWYWx1ZSwgdWlkKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAg
ICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQodm0s
IHVpZCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOworCisgICAgICAgIGlmICghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAg
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAg
ICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBiYXNl
VmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpKQorICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxCeShn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHBy
b3BlcnR5TmFtZSwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKLSAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgcmV0dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZt
LCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpOwogfQogCi1zdGF0aWMg
Ym9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5KQorc3RhdGljIGJv
b2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUga2V5KQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIApAQCAtMjE5MCw3ICsyMjEwLDcgQEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgIGVs
c2UgewogICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0ga2V5LnRvUHJvcGVydHlLZXkoZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwot
ICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAgIGNvdWxkRGVs
ZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCkBAIC0yMTk4LDIwICsyMjE4LDQyIEBAIHN0YXRp
YyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBWTSYKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRLZXkpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkU3Vic2NyaXB0KTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpOworCisg
ICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0s
IHNsb3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAm
JiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlw
dCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQu
dG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3lt
Ym9sKCkgfHwgIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVj
dHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
ICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtleSkKK3NpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwotICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkS2V5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIGRlbGV0
ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpKTsKIH0KIAog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1
ZSBvYmplY3RWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggNjIxMGM1YTA3MzQxOTY4M2Q2MGVhOGM0OGNkNDNlZWZmODJhMzAwYy4uNjAwZmNhMjlk
YzIwMzg1ZGM1MDIyMjgwMjU0MTEyY2FjMzFkNjg0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI1MSwxMCArMjUxLDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJz
Y3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2Ny
aXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZf
SU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkg
V1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJn
ZXQpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0
aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVk
SlNWYWx1ZSBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9iamVjdCkgV1RGX0lOVEVSTkFMOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1lcyhKU0dsb2JhbE9iamVjdCos
IEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBhYmY1MmY3MTNlOGFhMGFmYjVlODA1YzdjZjNm
MWQzODgzNzFjMmY2Li4yYmEwZmE2ODQ4YmNlODI5YWNkNjQxOTA1ZjA1ZjRiZDU0ZGNiZTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtMzg3LDkgKzM4NywzOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9
IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOwotICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDEsIGJhc2UpOworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMCwgcmVnVDIpOworICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBib3hCb29sZWFuKHJl
Z1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
KworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4o
KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCA9IG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmltcGwo
KTsKKworICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9kZWxCeUlk
SW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5
KS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlkKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJl
Z3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3Mo
cmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMzk4LDkgKzQyOCw0MiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJh
c2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QwKTsKKyAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsKKyAgICBKSVREZWxC
eVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDAsIHJlZ1QyKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBt
X2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9k
ZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBy
ZWdUMSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
KworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCmluZGV4IDVjYzdkZjljNTQxODljN2NiM2Q0MDkxYjVjNGY0YzhiZGFlZWYx
NGMuLmI2NjlkZDhiN2FkMjZkM2Y3N2Q5Njg2ZGU2MDgzNDM0ZjM2ZGJjNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApA
QCAtMTIzLDcgKzEyMyw5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7
CiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHBy
b3BlcnR5KS5pbXBsKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7
CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzMsOSArMTM1LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2Rl
bF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2FkMihiYXNlLCByZWdU
MSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2Rl
bF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJikgeyB9Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpIHsgfQorCiB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZh
bD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkxODIwNDE1NTRi
ZGM3NmMxOTFjYjEzODVkMTNhOWM4MWZmZDQ1ZWIuLmJlNzUwMWVmMjJjMTgzM2U0ZmI3ZjA2YTlh
YmUzYWFiMDc2ZWRjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAt
NjQxLDcgKzY0MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVy
ZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKTsKKyAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNp
dGlvbih2bSwgY29kZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8
IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNo
ZWFibGVDdXN0b20oKSkgewpAQCAtNzM0LDYgKzczNCw3MiBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlE
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1Zh
bHVlCiAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24o
c2xvdCwgcHV0S2luZCkpOwogfQogCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVE
ZWxCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OworCisgICAgeworICAg
ICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBn
bG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGds
b2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAg
ICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhb2xkU3RydWN0dXJlIHx8ICFvbGRTdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkgfHwgIW9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hl
YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYg
KCFzbG90LmlzQ2FjaGVhYmxlRGVsZXRlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25D
YWNoZTsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKwor
ICAgICAgICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBuZXdPZmZzZXQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29u
Y3VycmVudGx5KG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBuZXdPZmZzZXQpOworICAgICAg
ICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2Fj
aGVMYXRlcjsKKyAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2Vz
QXJlQ2FjaGVhYmxlKCkgfHwgbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdPZmZz
ZXQgPT0gc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0
dXJlLT5wcmV2aW91c0lEKCkgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChu
ZXdTdHJ1Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAg
ICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChp
c1ZhbGlkT2Zmc2V0KG5ld09mZnNldCkpOworICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nh
c2U6OmNyZWF0ZURlbGV0ZSh2bSwgY29kZUJsb2NrLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3Bl
cnR5TmFtZSksIG5ld09mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAg
ICB9IGVsc2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBp
ZiAoc2xvdC5pc05vbmNvbmZpZ3VyYWJsZSgpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBB
Y2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29u
ZmlndXJhYmxlLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZz
ZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFj
Y2Vzc0Nhc2U6OkRlbGV0ZU1pc3MsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwg
aW52YWxpZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICB9CisK
KyAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9j
aywgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0
LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dC5jb2RlKCkpOworICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRo
SnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1
YkluZm8sIGNvZGVCbG9jaywgcmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2
ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJl
cGF0Y2hEZWxCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxC
eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUs
IHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNs
YXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAg
ICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICB9Cit9CisKIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LAogICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5MSw2ICsxNDU3LDE1
IEBAIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCiAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJ
bmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCit2b2lkIHJlc2V0RGVs
QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVs
QnlLaW5kIGtpbmQpCit7CisgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIGVsc2UKKyAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
c3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCA2ZjBmMjY0MTFlY2RlYTE5MmI3
MDYyMTBlOGE5OTQ0YmI0ZjlmZTM5Li5jMWQ5OTU5YWRhZmQzNjU3NjJlODkxNzlhYjNjMGVlZDY2
ZTU4N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDEsOSArNDEsMTUg
QEAgZW51bSBjbGFzcyBHZXRCeUtpbmQgewogICAgIERpcmVjdAogfTsKIAorZW51bSBjbGFzcyBE
ZWxCeUtpbmQgeworICAgIE5vcm1hbCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBh
dGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwog
dm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUs
IFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwog
dm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3Qq
LCBjb25zdCBJZGVudGlmaWVyJiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90Jiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0
dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFt
ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5s
aW5rRm9yKFZNJiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2
b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQp
Owogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3Zv
aWQgcmVzZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7
CiB2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFn
PiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyMjU0
ZmNjNDI5NjE3Y2U4Mzk3ZDI0ZTU1MGUxYWNlYzY3YjYxNDQzLi5mYWNhN2JmNGUxNzhkNDI1ZmZi
ZWZmZTk1NGU4ZjMxZWIwMDIwNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTkyNSw3ICs5MjUsOCBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BE
ZWxCeUlkPigpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gZ2V0T3BlcmFuZChjYWxsRnJh
bWUsIGJ5dGVjb2RlLm1fYmFzZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSksIHNsb3QpOwogICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CkBAIC0xMTA4LDcgKzExMDks
OCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBi
YXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVhYmxlSWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVjZjZmZDA4ZmZk
MmJiODhiOWQ1ODdiYWVkMGZmNi4uMTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2IwYzE1ZjI2NTg5
NzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxl
SWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBDYWNo
ZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCiAKIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlm
aWVyKEpTQ2VsbCogaWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFibGVJZGVudGlm
aWVyQ2VsbChpZGVudGlmaWVyKSk7CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmllcik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggZmU2YzZiN2Q4
NGM0N2VkZWUxMWFhYzExZjY0ODRhNzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNjYmJkMjhkODAz
MWRhOGExN2VlMDUzNzIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBQ
dXRCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAg
UHV0QnlJbmRleEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUluZGV4KTsKIAot
ICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlG
dW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRy
IE1FVEhPRF9UQUJMRV9FTlRSWShkZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2luZyBEZWxldGVQ
cm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5jcHAKaW5kZXggOTZhMzYzNWU2ODI3MzkzZWU4MzZkODA0Nzc3MjRhMjVk
NTQ2YzI2MS4uZjY5OTllNzM0ODRlMmFiZDg4MTQ1NGYxMTQ4MzEwYzAyZDRmMmE3NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBA
IC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmEKICAgICByZXR1cm4gQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0K
IAotYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBDbG9u
ZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFy
Z3VtZW50cyo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIy
OSw3ICsyMjksNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8fCBpZGVudCA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhpc09iamVjdC0+
bWF0ZXJpYWxpemVTcGVjaWFsc0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAgICAgCi0gICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRl
bnQpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGlkZW50LCBzbG90KTsKIH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBpZGVudCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuaAppbmRleCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQwYmEwY2FkMTU3
NjA1ZmY1Li4wMGM1MzQ3NTYwNWE3M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNzIs
NyArNzIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lhbHNNYXRlcmlh
bGl6ZWQoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJh
OTM1M2U3ZDc1MjFhODc5YmQxMmQ3NDAwNjkuLjFkZTgyMzk1MDllMGM4ZDdhNTZhMzI0MTRmZmU4
YTc0YTliNzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcApAQCAtOTg1LDcgKzk4NSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9kZWxfYnlfdmFsKQogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBj
b3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHko
YmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIENI
RUNLX0VYQ0VQVElPTigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWQ2ZjZiNDgwMGVmNTc4NTYx
Y2FlZGM5ZGRiYmM4MmYyNTMyZTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90IHsKK3B1
YmxpYzoKKyAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgVW5jYWNoZWFibGUsIERlbGV0ZUhpdCwg
Q29uZmlndXJhYmxlRGVsZXRlTWlzcywgTm9uY29uZmlndXJhYmxlIH07CisKKyAgICBEZWxldGVQ
cm9wZXJ0eVNsb3QoKQorICAgICAgICA6IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCisgICAgICAg
ICwgbV9jYWNoZWFiaWxpdHkoQ2FjaGluZ0FsbG93ZWQpCisgICAgICAgICwgbV90eXBlKFVuY2Fj
aGVhYmxlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZU1pc3MoKQor
ICAgIHsKKyAgICAgICAgbV90eXBlID0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsKKyAgICB9CisK
KyAgICB2b2lkIHNldE5vbmNvbmZpZ3VyYWJsZSgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBO
b25jb25maWd1cmFibGU7CisgICAgfQorCisgICAgdm9pZCBzZXRIaXQoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV90eXBlID0gRGVsZXRlSGl0OworICAgICAgICBtX29m
ZnNldCA9IG9mZnNldDsKKyAgICB9CisKKyAgICBib29sIGlzQ2FjaGVhYmxlRGVsZXRlKCkgY29u
c3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBtX3R5cGUgIT0gVW5jYWNoZWFibGU7IH0KKyAg
ICBib29sIGlzRGVsZXRlSGl0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERlbGV0ZUhpdDsg
fQorICAgIGJvb2wgaXNDb25maWd1cmFibGVEZWxldGVNaXNzKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IENvbmZpZ3VyYWJsZURlbGV0ZU1pc3M7IH0KKyAgICBib29sIGlzTm9uY29uZmlndXJh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE5vbmNvbmZpZ3VyYWJsZTsgfQorCisgICAg
UHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX29mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkKKyAgICB7Cisg
ICAgICAgIG1fY2FjaGVhYmlsaXR5ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7CisgICAgfQorCitwcml2
YXRlOgorICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0
eSA9PSBDYWNoaW5nQWxsb3dlZDsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7Cisg
ICAgQ2FjaGVhYmlsaXR5VHlwZSBtX2NhY2hlYWJpbGl0eTsKKyAgICBUeXBlIG1fdHlwZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBmMTgyMWQ1NTZhM2Q0MDQ0OTM2NzVlYWUy
NWZhMmU0NjY3M2VjNDNhLi42ODVjN2FjYmMxMWM2MmQyMzM3N2QzMmM0ZGU5YTIwYjY1ODc4YThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcApAQCAtODcsNyArODcsNyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TgogICAgIHJl
dHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBFcnJvckNv
bnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0
YWNrVHJhY2VMaW1pdCkKICAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0
YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAppbmRleCA5M2Q1MjcxNDg2ZjY2
ZmRlNzUzZTQ5YTQwMTZmMTY4MzhlOTc1NzIxLi45YTVhNDYzMjFiM2RiYjc2NGMyYTFiNTIxZDky
NjhmOGQxNDM1MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JDb25zdHJ1Y3Rvci5oCkBAIC00OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgRXJyb3JQcm90b3R5cGUqKTsKIAogICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
CmluZGV4IGZkNDhiYmYzNGMzMDQzMGQyZTcwZGU1NzQ5OGU5YjUxZTZhYzI0NGQuLjFkNTBjZDE3
NGZjNDdkOTIyMTcxODhlMzI1ZmY1N2FlOGQxNWI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBi
b29sIEVycm9ySW5zdGFuY2U6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZQogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJv
ckluc3RhbmNlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVycm9ySW5zdGFu
Y2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBFcnJvckluc3RhbmNl
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9ySW5zdGFuY2UqPihjZWxsKTsKICAgICB0aGlzT2Jq
ZWN0LT5tYXRlcmlhbGl6ZUVycm9ySW5mb0lmTmVlZGVkKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAg
IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3Rh
bmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5k
ZXggZjFmYWM1OTY4MmQ5ZTAyNjUwOGNiNGZmOGM5YjI2N2I0ZWU3NmU4Ny4uNDAwNjA4ZDA4YTgz
NGNkMzFlNjEyZTczYWI1MzFjYjBhM2NhMTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaApAQCAtOTksNyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIHZvaWQgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHZvaWQgY29tcHV0ZUVycm9ySW5m
byhWTSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzLmgKaW5kZXggY2UxMGY3ZmU0ODczZTRhNDdiZTE0MWUyNTU2OWFkNjQ4YWZmOWQyOC4u
NDcxMjE2NzMwMzY0ODI4ZmUyNzcwZTIzNDg2OWFjZTcwOTA4ZDFmNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNTAsNyArNTAs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0
QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggYjgzN2VjMWJiNDMwZjZkNThiMWQ1YjEx
NWRhNTEzYzViY2MwYmY1My4uYTVhOWVjYjMyMmEyMGRhOGZlMjQzM2ZmZDU0N2E3OGFmYzYwMmNm
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3Vt
ZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oCkBAIC0xMzksOCArMTM5LDEwIEBAIGJvb2wgR2VuZXJpY0FyZ3Vt
ZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvCiAgICAgICAgIHRoaXNPYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFs
dWUoKSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCi0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpZGVudCwgdmFsdWUsIHNsb3QpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCByZXN1bHQpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMTU4LDcgKzE2MCw3
IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+
Ci1ib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9v
bCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+
KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSw3ICsxNzcs
NyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCAqaW5kZXgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVu
dCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0
ZXIuaAppbmRleCAwMzQ4N2Y2MWUwZjJmYzc1MWJhNzAzYjcwY2EzNmQwMjIyMTYzNGRlLi42MDFm
MWU0OWYxNWNkNTAxYTBlMGE3NWVlMjg1MDZmMzJiMGRiM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpIHsgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAg
ICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2dldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggNmQwNzU5MTcxMWVlZGJjMjhlMGU0ZGE3ODQ5ODIy
YWI4ZDY2ZjVkMS4uYmNlMzY1NWEzMTkyZWEyOTBmZTdmMDQwODI0YTM4ODZmNmIwNDgzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMwNiw3ICszMDYs
NyBAQCBib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpKTsKIH0KIAotYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKQEAgLTMx
NCw3ICszMTQsNyBAQCBib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydAogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogc3Rh
dGljIGludCBjb21wYXJlS2V5c0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggMzExNjViNWZmNDky
NTRjYzFhNmM0NzkwMmI3OTEwYWM0YTdkOWJmZi4uY2RjMzliNTEyZDdlZTNhMTVjZjFhZWMyZTBh
MmQ5M2Q5YWFhZDBmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApA
QCAtMTgyLDcgKzE4Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IGZlMDE4MGRkNjBjM2QxYmI2MGY4YjUzM2IxODYwNThl
ZWFkODFiNzUuLjU4NmFmM2ZhYjM3OTUyZTNmZGUxY2U0NzBjOTlhYjFlZGM0YTc0MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTQwLDYgKzQwLDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CitjbGFzcyBEZWxl
dGVQcm9wZXJ0eVNsb3Q7CiBjbGFzcyBKU0JpZ0ludDsKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNz
IEpTQ2VsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI3
MTM1MmIyMTc0NzAzNTZkZjQwM2ZkZDljZGU2MGRlZjg4ODE2MDcuLjBlNjdmODY2NzZkNTg2NWFh
ODhmMDRmMzVhZGE3NDMyMWUwMmNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcApAQCAtMTI2LDEwICsxMjYsMTAgQEAgYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGUK
ICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0K
IAotYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
LSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsK
IH0KIAogYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDY2NWQwODg5Y2Y0NDYxYzNhYjBhMmFm
NGIwN2M2YTU4YzkwNDIxYzQuLjA2MmU4M2RiMzlhYjM0YTZlZjRmZGEzNmZmYTUwZTRjMTExZDk3
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xODAsNyArMTgw
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgIGJvb2wgcHV0SW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpOwogCiAgICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgRUNNQU1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcAppbmRleCAxNDZhOTEzMmQ0NzM1MjQyYzEwNmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4x
YjI1NTIzYzk4ZmJiMDllMzdmOGE0NzQzMTliZjc2YzMyZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJv
b2wgSlNEYXRhVmlldzo6ZGVmaW5lT3duUHJvcGVydHkoCiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6
ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihjZWxs
KTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAog
ICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFz
ZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiB2b2lkIEpTRGF0YVZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cygKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCA4NjQx
MGU2MWFkN2U5MWQ4MmE2N2U5N2VmYmI0ZjMyZjFiYzEyZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFj
OTRiZTY1N2Y2NTVlNmNjN2I5ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5oCkBAIC03Miw3ICs3Miw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
OwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXgg
ZWU4NWVlMDY0NmM5ZGRhZjllNmU5N2FmMTdiOWY5YzAzNzdkMThlMC4uOGI4ZDUwNjUzNmU1M2Y5
MjhiYzM2OWQyZWJmZDVhNjMwYjA4NmI4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIEpTRnVuY3Rpb246
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29s
IEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rp
b246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgfQogICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGFkZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVh
NWQwNjg5Y2ExZmZhY2QuLjE4YWI0NzU0M2ZkNzgyOTc4YWZlYTk3MmM4YzlhYzZkODcwMmNiZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3
ICsxNzksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAog
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3LmgKaW5kZXggZjA4Zjg1MjQ2OWJlZmQ2YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5
YS4uM2I3YmJkZTc2NWNlMWMzNTY1NTBlY2Q1OGI3N2ZlZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCkBAIC0zMDUsNyArMzA1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaAppbmRleCAwY2FmYmQyNzZjZjc0ZDBjODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQy
Li41OGZiYjU3NTYyYjcxMDA3OWU2NTE0MGY3ZTA5ZTcwODA0OGZhMzc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaApAQCAtNDM4LDcgKzQzOCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OmRlZmluZU93blByb3BlcnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRl
UHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NTAsNyArNDUwLDcg
QEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHko
CiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTQ4NCw3ICs0ODQsOCBAQCBib29sIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBj
ZWxsLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUp
LCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2
MmFlZWVhMTI0MGE1NjZjNWQ0YTE4YTkyODcxZjdlLi4wZjg5MDMwMGJlYjc4NGM3MTc5YTg3M2Zh
Y2ZjYjJhODRkMGM5ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMzE0LDcgKzEzMTQsOCBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjphZGRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVu
dGlmaWVyJgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFt
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmNwcAppbmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2Vl
MmEyZjg4NzEzLi45NzRiOTJiNTRlMWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwCkBAIC0xMjcsMTMgKzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52
bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZp
cm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZp
cm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxs
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmgKaW5kZXggZDAxM2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5
Ny4uMDVlNGU2NWMyZGQ0OTNmZjdhNGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBA
IC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAKICAgICBERUNMQVJFX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0
MDllNmNhYTk0ODAwYjcyOWY3YzczZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNm
OGEyMTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52
aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29s
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgs
NyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVj
b3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVu
dmlyb25tZW50LmgKaW5kZXggZGFlYWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3
OS4uMDEzMGY4N2ZiOThiYjJhODJkYWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAt
NzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwog
ICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmly
b25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5jcHAKaW5kZXggMmJkYjEzMDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4u
MWZjNmEyNjViOGNhNjVhZDExOTAyZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcApAQCAtMTk5LDEyICsxOTksMTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6
cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+
KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJu
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0
aGlzT2JqZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oCmluZGV4IDhlZWY2MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQu
LjgxMTM2NGRkMTdhMTNlN2VmYmZjZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3
MjFjZjFkZWI4MzNmOWNiMDFlMmJmMzIxYjA2ZWQ0MTk2YzkuLmVkYTJkNjIzNTA5OWVkMzAxYmIw
YWUxMTQ1MTRmMzJlMTU0Y2I2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCkBAIC03NTksOSArNzU5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVl
IFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3Qob2JqZWN0KTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVk
VmFsdWUgPSBjYWxsUmV2aXZlcihvYmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwg
b3V0VmFsdWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7Ci0gICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3ApOwotICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBtX2dsb2Jh
bE9iamVjdCwgcHJvcCwgc2xvdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQob2JqZWN0LCBtX2dsb2JhbE9i
amVjdCwgcHJvcCwgZmlsdGVyZWRWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxh
c3QoKSsrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4
IGFjZDI5ZGVkODEzNTFmYjI4NGIyMTU5YWQ0N2E2MzFjMzQ5NGYxZGYuLjM0NzMyZTFjMmJmMzZm
ZTVkNzk3N2MxYmRlMjVjZGFlZDYzYWM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKQEAgLTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhh
c1Byb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBw
cm9wZXJ0CiB9CiAKIC8vIEVDTUEgOC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CkBAIC0xOTk5LDggKzE5OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAog
ICAgIGJvb2wgcHJvcGVydHlJc1ByZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0
KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNl
bnQpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSAmJiB2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90
LnNldE5vbmNvbmZpZ3VyYWJsZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CiAgICAgICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRl
ZmVycmVkV2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVyCiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92
ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10gKGNvbnN0IEdD
U2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkg
eyB9KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmpl
Y3QtPm1fYnV0dGVyZmx5ICYmICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0
cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNs
b3Quc2V0SGl0KG9mZnNldCk7CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAmJiB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0
eSgpICYmICFzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAg
ICAgICB0aGlzT2JqZWN0LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmVJRCgpLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBp
bnZhbGlkT2Zmc2V0OwogICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNl
dCgpID09IGludmFsaWRPZmZzZXQpOwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXIKIAogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwot
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwMzAsOCArMjAzNSwxMCBAQCBib29sIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIAotICAgIGlmIChp
ID4gTUFYX0FSUkFZX0lOREVYKQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb20odm0sIGkpKTsKKyAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpKSwgc2xvdCk7CisgICAgfQogICAgIAogICAgIHN3aXRjaCAo
dGhpc09iamVjdC0+aW5kZXhpbmdNb2RlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzoKQEAgLTM2MjUsNyArMzYzMiw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3Bl
cnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAg
ICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkgY2hhbmdpbmcgdGhlIGF0dHJpYnV0
ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNE
ZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNj
cmlwdG9yKSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBv
YmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3Zl
cnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgICAgICB9CkBAIC0zNjQxLDcg
KzM2NDksOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgICAgIGlmICghb2JqZWN0KQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50
KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CkBAIC0zNjY1LDcgKzM2NzQsOCBAQCBib29sIHZh
bGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFv
YmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdD
dXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CkBAIC0zNzE4LDcgKzM3MjgsOCBAQCBi
b29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqCiAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsK
IAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwogICAgIHVuc2lnbmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVz
T3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3Nv
cihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRycyB8IFByb3Bl
cnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAppbmRleCBlYzYzMDBlYTliOTcyY2U5YmEwZmFkODE4MjU3YWZiMjBkODJhMmVkLi42
OTNiZGJiOTk3ZDY0NDIwODA2NTFjMjdlZGRlN2IwODhhMTQxNTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
bGFzc0luZm8uaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJE
T01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3Qu
aCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC02MjMsNyArNjI0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0Owog
ICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCkgY29uc3Q7
CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3h5LmNwcAppbmRleCA5YzQ3OTM0ZTRhM2Q5MTk5ZmE5ODQyZGQwNTJjZTg4ZDI0MTUyYWMx
Li5kMGJiYzJjNWEyZDIyMTkxMjdjZDk5YjMwMjA5MzA4ODcyMTIzYjVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIGJvb2wg
SlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhv
ZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3Qt
PnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxk
VGhyb3cpOwogfQogCi1ib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5
Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShn
bG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJn
ZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0K
IAogYm9vbCBKU1Byb3h5Ojppc0V4dGVuc2libGUoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aAppbmRleCAzNTFlNjY4ZDI1OTBkOWI5N2M4ZjRiYmEyYmZmYjQwMGRiM2YyMTA5Li41YmU3YmYw
ZDJlNWE4YjMyYzc5NGMwYjI1ODk1Nzk4ZmM1ZjllZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm94eS5oCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuY3BwCmluZGV4IDYzMGUxYjc4YmIyMDZlN2FmNjE3YzNjNjgyYzM0ZjVlMTc1NWY1
ZDUuLjEyNWY2YzMxNTBlOTZhZWNkNTM3NDczMWZkYThkOWE3YmFmYmEyNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3Bw
CkBAIC00NCwxMyArNDQsMTMgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7CiB9CiAKLWJvb2wgSlNTeW1ib2xUYWJsZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N5bWJvbFRhYmxlT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3lt
Ym9sVGFibGVPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUo
KS0+Y29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTU3lt
Ym9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYzdjMWUyMGE2NTQ3
NmJjNzA2OGVlNjNkZWQ5OGIzMzVkZjczNmIyMS4uYjU2OGU4ZjkyYTk4M2ZiNGNjMjAzYTdhMDYy
MTgwYWU0ZmU1OTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdl
dCgpOyB9CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3ltYm9sVGFibGUoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTeW1ib2xUYWJsZU9iamVjdCwgbV9zeW1ib2xUYWJsZSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRl
eCBiNjUyMDIyMWE4MTU5OGZmZWYyYTVlMTRhODBmZDRlNTRkYzY5YzZlLi5iMDdlMGEwMjkzMzI4
MjYxMDM2ZjQxMTA2ZWVlZTllNWY5MGM2NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC02ODUsMTIgKzY4NSwxMiBAQCBib29sIFByb3h5
T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb3h5T2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBQcm94
eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1
dG8gcGVyZm9ybURlZmF1bHREZWxldGUgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgIEpTT2Jq
ZWN0KiB0YXJnZXQgPSB0aGlzT2JqZWN0LT50YXJnZXQoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdl
dC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1l
dGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH07CiAgICAgcmV0dXJuIHRoaXNP
YmplY3QtPnBlcmZvcm1EZWxldGUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1E
ZWZhdWx0RGVsZXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5oCmluZGV4IDE3Y2EyOWZiMGEzZmRkYmE3MWViNjgyNDljMDk5Y2EyOGEzZDYyZWQuLmVl
NWJkOTA1OGNmYTgxOGE0Njc0YTUyMmJmNjBhMmNhMDllYWMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAg
c3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIHByZXZl
bnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9v
bCBpc0V4dGVuc2libGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNDZkY2I3NTA2ZGE1
NzBlNGM5N2ViOTNhMDljMDA0ODFhNTE1MzgyNy4uMWNlMWI0YzMzYWFmMWE0NWRmMDcyNDFmNGRk
MzBjNjdkNjdhMmViYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuY3BwCkBAIC03MSwxMiArNzEsMTIgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
ICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDVlOTllYjM4
YjcxM2E5NDI2MzcxOTFhODlmMGI3Yzk2YzVmYmI3MTQuLjg1N2NhMmU3MmFmMzQwZWFlMzY1NzAx
ZDU1Y2EwN2VkODNlMGIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3Jl
Z0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0gKG1fcmVnRXhwQW5kTGFzdEluZGV4
SXNOb3RXcml0YWJsZUZsYWcgfCBsYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyk7CiAgICAgfQog
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2
YWxBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2
YWxBY3RpdmF0aW9uLmNwcAppbmRleCA1MTU3NTI3NjVlY2IwMmQxOWMwNDBlOWYyMWI5NjQ5Zjc1
MTdiOTQ3Li41MWRiYzY3YzU3ZjgxNTYxZmE3OGQxOTRlZmFmMDQ5YzA3YThhZDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFs
QWN0aXZhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlCiB7CiB9CiAK
LWJvb2wgU3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKaW5kZXggY2Rj
YzIxYjdlNWZhN2IxMDk2YjI2ZDE4NzA3NGNiZjE3ZWI4M2MyOS4uMjQxNTQ1ZTgxNjkzNjJiZjY5
MjBhOTE5YjhmZTBmZGJiN2ExMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHNjb3BlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NzdiOWNhZmIzZmEwMDhmMGY3MDU2OGI2ZGI2ZjRhMTUx
ODZkMDZlLi40ODZkZDkyNzNiNzUwNThhNDdmNzY5YTNmY2Y4Nzc1ZTY5MGNkMzk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTEyNSw3
ICsxMjUsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAotYm9vbCBTdHJp
bmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU3RyaW5nT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwpAQCAtMTM0LDcgKzEzNCw3
IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0
LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBhMzQwNTgxNzg5
MzRkODUyNTBhY2IzYTNlNGRhMzUyZjIyNzg2NTIzLi42OWYyNmI3ZDcyNGJiZWY3MzIzMzE5NDdl
ODBiN2M3ZmFmY2Y4ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBlZGE0NDZiZmJlMjY3YWIwMWI4NTJlMTVmZGU5Yzlj
MzBlNmY1OGU2Li42MzY5NGYwYzRhZGQxYmE0ZWI3NGRiYWQyNjFkNzAwM2U4MjczZTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTU0MCw4ICs1
NDAsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKLSAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQs
IGRlZmVycmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwg
b2Zmc2V0KTsKICAgICBpZiAobmV3U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0
dXJlOwogCkBAIC01NDksMTYgKzU0OCwxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogICAg
ICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpOwogfQog
Ci1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0
aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJh
bnNpdGlvbldhdGNocG9pbnRGaXJlKikKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9w
ZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9w
ZXJ0eU9mZnNldCYgb2Zmc2V0KQogewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgp
KTsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAKLSAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVzOwotICAgIHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwot
CiAgICAgY29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IGZhbHNlOworICAgIG9mZnNldCA9IGlu
dmFsaWRPZmZzZXQ7CiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3Ry
dWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1
dGVzLCBpc0FkZGl0aW9uKSkgewogICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5z
aXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9u
T2Zmc2V0KCk7CkBAIC01NjgsMTEgKzU2NCwzMCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJv
cGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQorewor
ICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVzID0gMDsKKyAgICBpZiAoc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1l
LnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsK
K30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHko
cHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVy
ZS0+bV9sb2NrKTsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0
aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zm
c2V0KTsKK30KKwogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNp
dGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkp
OwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVy
cmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZy
b21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7Cisg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSkg
IT0gaW52YWxpZE9mZnNldCk7CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0gMDsKICAgICBm
b3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9IHNfbWF4VHJh
bnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZpb3VzSUQoKSkKQEAgLTEyMDMsNyArMTIxOCw3IEBA
IFJlZjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUg
dmFsdWUsIGJvb2wmIHNhd1BvbHlQcm90CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KFJhd1BvaW50ZXIodGhpcyksICI6WyIs
IGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRl
cih0aGlzKSwgIjpbIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihpZCgpKSks
ICIsICIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKICAgICAKICAgICBDb21tYVBy
aW50ZXIgY29tbWE7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCmluZGV4IDUyY2QzYzcxZDkyMGYyZjhhOTdiNDYwYjkwZTBlYzcwZDVkNzExYWYuLmFlMjBh
ZTk2YmE0MDMyZjZhYTFmOTRiZTNjMTc0Yjc2M2M3M2ZhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJD
bGFzc0luZm8uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVs
ZXRlUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAtMTkxLDcgKzE5Miw4IEBAIHB1
YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0
dXJlKiByZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNl
dCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIp
OwotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlz
dGluZ1N0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZz
ZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRy
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYp
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlz
dGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNp
dGlvbihWTSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlLCBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBT
dHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBu
dWxscHRyKTsKQEAgLTQ3Nyw2ICs0NzksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIGJv
b2wgaGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7CisgICAgYm9vbCBtYXlI
YXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3Q7CiAgICAgCiAgICAg
Ym9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKIApAQCAtNzE2LDYgKzcxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZz
ZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9t
RXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKIAogICAgIC8vIFRoaXMgd2lsbCByZXR1cm4g
dGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0eSB0YWJsZSwgdGhhdCBwcm9w
ZXJ0eSB0YWJsZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3RydWN0dXJlcyB0aGF0IHdlIHZp
c2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0dXJucyBhCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggMGNkOThkNTJh
Y2M3ZjcxNGMwNWIxNTNlMDgxMzllNDkxY2Q4Y2Y4Yy4uZmUyODU4NzQwOTRkYWMzMDcwNzVkMmM3
NjFlMjMyMmE0NjAxNzVmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjI0LDEwICsyMjQsMjMgQEAgaW5saW5lIGJvb2wgU3Ry
dWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqIGNlbGwpIGNvbnN0CiAgICAg
CiAgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUo
KSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4ganNDYXN0PGNv
bnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBXYXN0ZWZ1bFR5cGVkQXJy
YXk7CiB9CiAKK2lubGluZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5nSGVhZGVyKGJv
b2wmIG11c3RDaGVja0NlbGwpIGNvbnN0Cit7CisgICAgbXVzdENoZWNrQ2VsbCA9IGZhbHNlOwor
ICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUo
bV9ibG9iLnR5cGUoKSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtdXN0Q2hlY2tD
ZWxsID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW5saW5lIGJvb2wgU3RydWN0dXJl
OjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0KQogewogICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSAm
JiBnbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDlhN2Y0OWExNDA1M2EwODI3ZGJhZTM1
MmQyOGY1MDM2MDdmZjZjZDcuLjRlZjI5ZWQ3NzY4OGRjMTc5Mzg4YjcxMGYxNGU0MzYxOGVjZjll
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTU1
Niw3ICs1NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKKyAgICBz
dGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogICAg
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0yODUw
LDYgKzI4NTAsMTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25HZXRDb25jdXJyZW50bHkoSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworCisgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4odm0sIHRhcmdldCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4oZnVuY3Rpb24tPmFyZU5hbWVBbmRMZW5ndGhPcmlnaW5hbCh2bSkpKTsKK30K
Kwogdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgRG9sbGFy
Vk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTI5ODMsNiArMjk5Miw4IEBAIHZvaWQgSlNE
b2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0
U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QiLCBKU0RvbGxhclZNSGVscGVyOjpmdW5jdGlvbkdldFN0
cnVjdHVyZVRyYW5zaXRpb25MaXN0LCAxKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImdldENvbmN1
cnJlbnRseSIsIGZ1bmN0aW9uR2V0Q29uY3VycmVudGx5LCAyKTsKIAorICAgIGFkZEZ1bmN0aW9u
KHZtLCAiaGFzT3duTGVuZ3RoUHJvcGVydHkiLCBmdW5jdGlvbkhhc093bkxlbmd0aFByb3BlcnR5
LCAxKTsKKwogICAgIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90
U3RhdHVzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0
aG91dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
anNOdWxsKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaCBi
L1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggY2I4ZDNiYjAzMDUyODkxMDhhOGQ4ODFm
MDAyMzE0Njg0MzJmYWNmMC4uNDU4NWIxMDBhYzdkYTk0ODIxNGFkOGM4ZmZiYjIxOTRhYWM3MGVk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9TcGVjdHJ1bS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lk
IGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAgICB7CisgICAgICAg
IExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgaWYgKCFjb3VudCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OkFkZFJl
c3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CkBAIC01OCw2ICs1OSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5KSBjb25zdAogICAg
IHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBjb25zdF9pdGVyYXRv
ciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQo
KSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjYsOCArNjgsNiBAQCBwdWJsaWM6CiAgICAg
CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICAK
LSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KLSAgICBpdGVy
YXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJl
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgCkBAIC05OCw2ICs5OCw3
IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZyb20gbG93ZXN0LWNv
dW50IHRvIGhpZ2hlc3QtY291bnQuCiAgICAgVmVjdG9yPEtleUFuZENvdW50PiBidWlsZExpc3Qo
KSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBW
ZWN0b3I8S2V5QW5kQ291bnQ+IGxpc3Q7CiAgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IgaXRl
ciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikKICAgICAgICAgICAgIGxpc3QuYXBw
ZW5kKEtleUFuZENvdW50KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpKTsKQEAgLTEwNiwxNyArMTA3
LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQogICAgIAotICAgIHZv
aWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9tYXAuY2xlYXIoKTsKKyAg
ICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHJlbW92
ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgICAgIG1fbWFwLnJlbW92ZUlmKFsmZnVuY3Rvcl0gKHR5cGVuYW1lIEhh
c2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBwYWlyKSB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5rZXksIHBhaXIudmFsdWUp
KTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAKIHByaXZhdGU6CisgICAgbXV0YWJsZSBM
b2NrIG1fbG9jazsKICAgICBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPiBtX21hcDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRl
eCAyMDUwNmY4ZWNmYWM2NTNlNTVhZDA0ODFkZGE1NjBmNWZkNzJhNTRkLi5mN2E4OTU1N2VkNTZh
Y2VmOTEzYTRhMWY2ZDcyNDY3NTJlMTRjZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zMTQsMTMgKzMxNCwxMyBAQCBib29s
IEpTRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAK
LWJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiti
b29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHBy
b3BlcnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlv
bkN1c3RvbS5jcHAKaW5kZXggMWVmMDZjMjZlZTI1MmRlNjY4YzFkZWRlOTFjNWRkZjZhMGRkZmRl
NS4uODRiOWExM2UxOWVhMTg5ZGYzMDc0NzYwNjVkZDM3M2U1MWU0ZjY1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE2MywxMyAr
MTYzLDEzIEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1CiAgICAgcmV0dXJuIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwogfQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0xvY2F0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRl
bGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCiAgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLndpbmRvdygpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBlMmVlZGZkNWIwYzVhYTcxODcw
ZGE3NjU0Mzk3ZTM1Yjk5YTgyY2FjLi4wY2I2N2VmMjljNjJiZjhjYzQ0NmEwZWNlMzFjOWZlNTM1
MTU3YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURP
TVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dDdXN0b20uY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgSlNSZW1vdGVET01X
aW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNW
YWx1ZSwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUpCitib29sIEpTUmVtb3RlRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCAwM2RkOWMxNjFhODM5OTEyZDQzOTM0MmQyNjViYzVmZDE1YjZhNDE2Li5iN2NkMWZjYTQz
OTljZTg5OTZhYWE2ZWNhNzk1MDczNmMwNTMyMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTMwMSw3ICsxMzAxLDcg
QEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKICAgICAjIFRoaXMgaW1wbGVtZW50cyBodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlbGV0
ZSBmb3IgdGhlCiAgICAgIyBmb3IgdGhlIGRlbGV0ZVByb3BlcnR5IG92ZXJyaWRlIGhvb2suCiAK
LSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJv
b2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4i
KTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpz
Q2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgc3Vi
IEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKIAogICAgICMgRklYTUU6IEluc3RlYWQgb2YgY2FsbGlu
ZyBkb3duIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSwgcGVyaGFwcyB3ZSBzaG91bGQgaW1wbGVt
ZW50CiAgICAgIyB0aGUgcmVtYWluZWQgb2YgdGhlIGFsZ29yaXRobSBvdXJzZWx2ZXMuCi0gICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
Y2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGws
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogfQogCkBAIC0yNjk2LDcgKzI2OTYsNyBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKICAgICB9CiAKICAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNEZWxldGVQ
cm9wZXJ0eSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xv
dCYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkKTtcbiIpOwogICAgIH0KIApAQCAtNDMyNCw3ICs0MzI0LDggQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVc
IiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90O1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAg
IH0KQEAgLTc1MTIsNyArNzUxMyw4IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0
aG9kcwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke3J1bnRpbWVFbmFi
bGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1l
XCIpKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdu
b3JlQ29uZmlndXJhYmxlKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxu
Iik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRl
eCBiNWVhNTQ4ZTFkMTI3MmUxODZkYjk0NGNlNjE5ODUwZjRmZDJlODA4Li5lNjMzMjM5ZGFlZmNl
ZjA0MDljOGI0NjNiODcwZjY2YjgxMDVkNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNl
dHRpbmcuY3BwCkBAIC0xMzcsNyArMTM3LDggQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5h
YmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRp
b24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCkBAIC0xNDUsNyArMTQ2LDggQEAg
dm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpLCBzdHJs
ZW4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA4MGZhZjM1MTA1NDdhMmFk
ZTc3Y2I3ZWM5NWIyOTE5MmQ5MDFhYTQ5Li5lZjY2MDMzNGUzMTgxYjY3ZGU1MjRiM2QzNWRmMTY1
NjRmNjU2YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBA
IC0xMDgsNyArMTA4LDggQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiYVNlY3JldEF0dHJp
YnV0ZSIpLCBzdHJsZW4oImFTZWNyZXRBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZs
YXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggYmZmNGMzYjA5ZGE1OTQxYmZmNzFkY2RiYjM4NTI1
NDhhMDBjM2YxZC4uODc4M2UxNWMyODEzNzY2MzRmZGM3NWRlZmZjODVkZGE5NjU0ODlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKQEAgLTE5
MCwxNCArMTkwLDE0IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvCiAgICAgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVy
cmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9w
ZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAppbmRleCAwZWE0YmIxMWI4
NjA1MzAxMTY1N2ZkNmVhNjNmMjQ2ZDRkODJlNTBhLi4xMzhkNGMxOGY4ZjQ2YmMzNDMzMTA5YmQw
MzIzOTU2MzdkMGFjMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBK
U0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6
SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwCmluZGV4IDc5NGQ1OTc2ZjEzZjA3MThiNGNlZTUxNjMzODMwY2NkMzBm
MWMzMzMuLjU3OWYyYTBlNmE4YzdhOTI1NTYxOWQ4NDQ1MjZiYThkZGIyZGFhOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcApA
QCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwKICAgICBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3Qg
PSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKj4oY2VsbCk7CiAg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCA3OTFiZTE4MmViMWIz
Njk2OTIxZGU5NzY5NTI3MjlmMGI0ZjBiMzRhLi4wNTVkM2RmOTIzODE4YzAwNzY3ZjE4OTVkZjY3
MjVmNWJjMGVkZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25N
b2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmNwcAppbmRleCBiMzM3NmUzYTlmZTUyYjhhMGE2ZDNkNDA1YTZhYWZlYzQx
YmNmMDg3Li4yNTAyM2EzMWExNDY0MjI4N2EwYjFiNTBkZGY0ZGY0NjE5ZGRmMjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTE5
Niw3ICsxOTYsNyBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTRwogICAgIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
cywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamUKICAgICAgICAgaW1wbC5uYW1lZERlbGV0ZXIocHJvcGVydHlOYW1lVG9TdHJp
bmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICByZXR1
cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCmlu
ZGV4IDU0ZTAyNTQ3OGUxZGMzOTkwNzA3MzNlNDk5YjAxNjMxNDkwMTI0OWUuLmE4NThhMjcxNTRi
ZDNjNjM2NGZjNDVhNjQ3ZmY0MmI2YjQ3MjUwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Qzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IGU4ZDk3NDE5YWZhNWQ5YWU2
OGRhMDRlYTU0MWVhYmY1MGQ0Nzg3MzYuLmY2ZjM2NmUyMjJlNDE0NGE3NGI2Mzc1NGZiZDA3ODk4
Zjk4YjY2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpA
QCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAgICAgaWYgKGlzVmlz
aWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHJldHVybiBpbXBsLmRl
bGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAg
ICAgfQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyLmgKaW5kZXggYTk5NDViYWZjNjExNDNlNTc2ZmZkNjBmZWM4ZWVl
Njk2NGI5ZjAzMC4uMmZlYThkOTBmNGY0YTE4NDJjOGUxOTJhZjM1ZDg1YzdkMTg2ODllMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVy
YXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxs
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCmluZGV4IDExMDBhYTNjZWMwYjFlMTBmNzkwNzMwYWY1MTMwOTcwMDYwMGI5
NWUuLjFmYjNmMWJlYThkYWYyZjBkMDllMjk2YzU4N2ZmZTA0NzA4NjNmZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAKQEAgLTE1Nyw0NSArMTU3LDUyIEBAIHZvaWQgSlNUZXN0Tm9kZVByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0g
dHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNhbGN1bGF0ZVNlY3JldFJlc3Vs
dCIpLCBzdHJsZW4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZ2V0U2VjcmV0Qm9vbGVh
biIpLCBzdHJsZW4oImdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQog
ICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAg
ICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRl
c3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiZW50cmllcyIpLCBzdHJsZW4oImVudHJpZXMiKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJrZXlzIiksIHN0cmxlbigia2V5cyIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQo
KSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInZhbHVlcyIpLCBzdHJsZW4oInZhbHVlcyIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVu
YWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZvckVhY2giKSwgc3RybGVuKCJmb3JFYWNo
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCmluZGV4IDRjMTA3MTAxMzEwOWI1ZmVlY2I0MzI1NzE0ODQwNjkyZDg5MDZmMjEuLmY1Njg0
MzI0YTY2N2JhOTZkZTc1MzYwODE4NzNkMjUyMGFhOGU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xOTg0
LDE0ICsxOTg0LDE2IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iCiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7
CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
U3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgog
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIiksIHN0cmxl
bigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Jmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMjM0Nyw5MCAr
MjM0OSwxMDQgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIiksIHN0cmxl
bigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCEod29ybGRGb3JE
T01PYmplY3QoKnRoaXMpLnNvbWVXb3JsZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQiKSwgc3Ry
bGVuKCJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAg
IGlmICghd29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNvbWVXb3JsZCgpKSB7CiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigid29ybGRTcGVjaWZpY01ldGhvZCIpLCBzdHJsZW4oIndvcmxkU3BlY2lmaWNNZXRo
b2QiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkgewogICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNhbGN1bGF0ZVNlY3Jl
dFJlc3VsdCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdldFNlY3JldEJvb2xl
YW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1Nl
Y3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJl
R2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
I2VuZGlmCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIiksIHN0cmxlbigi
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9u
YWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dvcmtlckZ1bmN0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4
dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmFsbG93c01lZGlhRGV2aWNlcygpKSkgewogICAgICAgICBoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oIm1lZGlhRGV2aWNlcyIpLCBzdHJsZW4oIm1lZGlhRGV2aWNlcyIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghKGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKXx8IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5oYXNTZXJ2aWNlV29y
a2VyU2NoZW1lKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigic2VydmljZVdvcmtlcnMiKSwgc3Ry
bGVuKCJzZXJ2aWNlV29ya2VycyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJs
ZWQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0
dXJlMUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lQXR0
cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJl
RW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicnVudGltZUNvbmRpdGlvbmFsbHlSZWFk
V3JpdGVBdHRyaWJ1dGUiKSwgc3RybGVuKCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0
dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSwgc3RybGVu
KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGlt
ZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0
aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlF
eHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICAvLyBBZGRpbmcgYmFjayBhdHRyaWJ1dGUsIGJ1
dCBhcyByZWFkb25seSwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHJlYWQtd3JpdGUgdmFyaWFudCBhYm92
ZS4gCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRl
c3RGZWF0dXJlRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5k
ZXggZmVlYmRlZjdiYzQ1ZTk4YzkzMDhmZGZiZGUxMTBiOTlmZGRkY2EyYy4uMzJjMTNiOWViNDA3
MDgzNWViMjU4MzcxOTZkNzgzMjU4YWM1OTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNv
YmplY3QuY3BwCkBAIC0zOTEsOCArMzkxLDkgQEAgYm9vbCBfTlBOX1JlbW92ZVByb3BlcnR5KE5Q
UCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAorICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAg
aWYgKGktPmlzU3RyaW5nKCkpCi0gICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmll
ckZyb21OUElkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3RyaW5nKCkpKTsKKyAg
ICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iai0+
aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSksIHNsb3QpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
b2JqLT5pbXAsIGxleGljYWxHbG9iYWxPYmplY3QsIGktPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDIyZjBiOGQ5ZDhm
YWU0YTc5YzZiNjMxZTkzNWNiNmFkYzdkOTRmZmYuLmRiYzZkM2IxZTE5ZjljMjFkOWI2MGMxN2Vk
ZmY5NzE2MDA2N2MwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3Jp
cHRPYmplY3QubW0KQEAgLTQ1Nyw4ICs0NTcsOSBAQCAtICh2b2lkKXJlbW92ZVdlYlNjcmlwdEtl
eTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgSlNDOjpEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKIAotICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCBTdHJpbmcoa2V5KSkpOworICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmcoa2V5KSksIHNsb3QpOwogCiAgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0Nv
bnNvbGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5oCmluZGV4IDVlZDIxZjEzNGVmNGFhYjVkYzBjNTVhNDVkZTZhNjNkMjdjNmJl
MmUuLjYyMjk2MzY4ZWJiOTBjNTBiOWRlN2ZhMDc4MmM5YzZmYTI4NTkxOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKICAgICBib29s
IHRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCopIGNvbnN0OyAvLyBGSVhNRTogQ3VycmVudGx5IHRo
aXMgaXMgYnJva2VuIGJlY2F1c2Ugbm9uZSBvZiB0aGUgc3VwZXJjbGFzc2VzIGFyZSBtYXJrZWQg
dmlydHVhbC4gV2UgbmVlZCB0byBzb2x2ZSB0aGlzIGluIHRoZSBsb25nZXIgdGVybS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCAxOWVkMTljYmM3YWUz
ZWU0Njc3OTZiMTAzY2JmZTc2MTYwOWFkNzMwLi42ZTg3N2QyZWI3ZjQ0ZDAzYTI4ZTE3MTA4M2Jk
M2QwZjBiYjk4ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgQ2FsbFR5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpn
ZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4g
Q2FsbFR5cGU6Okhvc3Q7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gZmFs
c2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggNGQyOTdj
NzBkNmIxYjZjMWFmODhmOTE0YmU4NWY2MGRmMDNjYzliMS4uZWMzNTg4ZmM1NjU5NTUzZjUyNzI4
M2M1OGE3MzU4MDIxMzI5YWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0
dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpbmRleCwgdmFsdWUpOwogfQogCi1ib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFJ1
bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXggZmNmNWUzM2ZiMTE0MDE4NTEw
Nzk5MzBmYmQxMTc2MTM1NDUyYzdlNi4uMjk4MTJhNjZkNmYwMTI0ZTM4MzYyNWY5NTYwMTljYTMz
YmMzYmQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAotICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lKTsKICAgICAKICAgICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2FycmF5LT5nZXRMZW5ndGgoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5jcHAKaW5kZXggYTAzNmI2NjYyZDQ4NzJmNjhkYzUyNjQ1YmExYWYyYmExNTMzMDMy
ZC4uOWQ1ZDYwZGVmMzU3NTRiZTFlMGUwNjIwZTQxZWRiOThlZmUzOWVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBS
dW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFJ1bnRpbWVP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKQorYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAgICAvLyBD
YW4gbmV2ZXIgcmVtb3ZlIGEgcHJvcGVydHkgb2YgYSBSdW50aW1lT2JqZWN0LgogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKaW5kZXggNmNiZjdi
Zjc5NmIwYTg5NDA0Yjk0MjI3NWQ2NTFlNjBlNzMyNDU4Mi4uM2MxMGQ4YmQ1MGYzYjdkYWE0ODQy
MjE0YjllMDRmMDQzYWZkZjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
OworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1
ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRleCAyZWZiMjI1MjNm
OTIxZTkyYWJkMDIxNmViMGNkMWZmZDEwMDM2MmJlLi4wNWQxMjkyOTM5NTgyZjA0YzQzMmQzMGMx
NDJkYmE1ZGFhMGJmMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIGJv
b2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBKU05Q
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU05QT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCktPmRlbGV0
ZVByb3BlcnR5KGxleGljYWxHbG9iYWxPYmplY3QsIG5wSWRlbnRpZmllckZyb21JZGVudGlmaWVy
KHByb3BlcnR5TmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCmluZGV4IDg1NTg4OTQ5YTMwNjA0YzY5Zjc3
Y2NjM2Y2MGU1NDY5NzdmZmFjNmQuLjQ4MDNjMGJjNTcxZjk3N2RkYzI3MjJiYmFiOTZiNmQyN2My
YTljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKTsKIAogICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCos
IE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAzNmYyOGVl
NmZiMDEwMmQ4YzE3NzEzYzYwOGI2MTRlYWY4NWRkYjc2Li44YjlmY2RmMzA4NTJkMWQyMjJhNWIz
YmQ1OTA2ZGE0YmFmZTQzYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMjI5LDggKzIyOSw5IEBA
IGJvb2wgTlBKU09iamVjdDo6cmVtb3ZlUHJvcGVydHkoTlBJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSkKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fanNPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaWRlbnRpZmllcik7CisKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkobV9q
c09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllciwgc2xvdCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2pzT2JqZWN0LT5oYXNQcm9wZXJ0eShsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSkpIHsKICAgICAgICAgICAgIHNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KaW5kZXggMzAzMmFmYTI4MGZhOTI3ZDg3NzMyMGViODFjYmQ5MDcxMDI1NTk3ZS4uMTJj
ZTQwOWM1NDNjMjI4ODIyNzcxOWIyZDQxMDhiZjJhODc5ZDQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTE0MSw4ICsxMTQxLDkgQEAgYm9vbCBOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJlbW92ZVByb3BlcnR5KHVpbnQzMl90IG9iamVjdElE
LCBjb25zdCBJZGVudGkKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNDZhNzU1YWQ5ZjkzMmIxYjUxNzI5Y2E0MDZmYzRmMThlOTdlMjc1Li5hNTg0NTU2
YTJjMDg3NzE0N2NkOTQ1MWIzYjhjMDU0NDE0MjU0YTAzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTAy
LTIxICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWZyb20tcHJvdG90eXBlLWNoYWluLmpzOgorICAgICAgICAoZGVsZXRlLkMucHJvdG90eXBlLnop
OgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hl
LXBvbHltb3JwaGljLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3Nl
cnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQu
bm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdFBvbHltb3JwaGljRGVs
QnlWYWwubWFrZUZvbzYpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2Vy
dF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAg
IChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgor
ICAgICAgICAoYXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9Jbmxp
bmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2Vy
dC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRf
dGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RD
YWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6Cisg
ICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRl
c3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVh
YmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hl
YWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanM6
CisgICAgICAgICogc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanM6IEFkZGVk
LgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3Nl
cnRfbmVxKToKKyAgICAgICAgKGFzc2VydF90aHJvd3MpOgorICAgICAgICAobm9JbmxpbmUuYXNz
ZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2Vy
dF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAgICAgIChub0lu
bGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9Jbmxp
bmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwubWFr
ZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxl
dGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxl
dGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQu
dGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNz
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVs
ZXRlSW5kZXgubWFrZUZvbzUpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleCk6CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRl
SW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlWYWwubWFrZUZvbzYpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxldGVCeVZhbC5tYWtl
Rm9vNyk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC50ZXN0Qmln
aW50RGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdEJpZ2ludERlbGV0ZUJ5VmFs
LnRlc3RTeW1ib2xEZWxldGVCeVZhbC5tYWtlRm9vOCk6CisgICAgICAgIChub0lubGluZS50ZXN0
QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJvbERlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RTeW1ib2xEZWxldGVCeVZhbC50ZXN0T2JqRGVsZXRlQnlWYWwubWFrZUZvbzkpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLnRlc3RPYmpEZWxldGVCeVZh
bCk6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdC5tYWtl
Rm9vMTApOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iakRlbGV0ZUJ5VmFsLnRlc3RTdHJpY3Qp
OgorICAgICAgICAobm9JbmxpbmUudGVzdFN0cmljdC50ZXN0T3ZlcnJpZGUuYXJyLmopOgorICAg
ICAgICAobm9JbmxpbmUudGVzdFN0cmljdC50ZXN0T3ZlcnJpZGUpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdE92ZXJyaWRlKToKKwogMjAyMC0wMi0xOSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgQ29tcHV0ZWQgUHJvcGVydGllcyB3aXRoIGluY3Jl
bWVudCBzb21ldGltZXMgcHJvZHVjZXMgaW5jb3JyZWN0IHJlc3VsdHMKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFp
bi5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3Rv
dHlwZS1jaGFpbi5qcwppbmRleCA0OWEzMWI3ZjI0N2MxYmQwYWNhODJjYjIyZGYyMGU4ZjFiZjYx
YmRkLi41NGJiYTgyZTY5OWM2MmNjY2E4OTQ1MTZlNjJiN2U2Y2ExZjUxMjAyIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUt
Y2hhaW4uanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZy
b20tcHJvdG90eXBlLWNoYWluLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIHNraXAgaWYgJG1vZGVs
ID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJlc3MtdGVz
dC5weQorLy9AIHNraXAgaWYgJG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCiBmdW5jdGlvbiBhc3Nl
cnQoYikgewogICAgIGlmICghYikKICAgICAgICAgdGhyb3cgbmV3IEVycm9yOwpAQCAtMjgsNyAr
MjgsNyBAQCBmdW5jdGlvbiBkb1Rlc3QoelZhbCkgewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAot
Zm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkgewogICAgIGNvbnN0IFggPSB7IGkgfQogICAgIEMucHJvdG90eXBlLnogPSBYCiAgICAg
ZG9UZXN0KFgpCkBAIC0zNiw3ICszNiw3IEBAIGZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7
CiAKIGRlbGV0ZSBDLnByb3RvdHlwZS56CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwOyArK2kp
IHsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDAwMDsgKytpKSB7CiAgICAgZ2V0Wih7ejogaX0p
CiAgICAgZG9UZXN0KHVuZGVmaW5lZCkKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3Jw
aGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE2Yjg2ZDU1YTE5ZjljMDllNTBkZTFiZDU2Mzk0ZGE1MTBlNGM3
NDkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJv
cGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCBz
a2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdhdGNoLworCitmdW5jdGlvbiBDKHByb3ApIHsKKyAg
ICB0aGlzW3Byb3BdID0gNAorICAgIGRlbGV0ZSB0aGlzW3Byb3BdCit9Citub0lubGluZShDKQor
CitmdW5jdGlvbiBmb28obywgcHJvcCkgeworICAgIGRlbGV0ZSBvW3Byb3BdCit9Citub0lubGlu
ZShmb28pCisKK2Z1bmN0aW9uIEYocHJvcCkgeworICAgIHRoaXNbcHJvcF0gPSA0CisgICAgZm9v
KHRoaXMsIHByb3ApCit9Citub0lubGluZShGKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDsgKytpKSB7CisgICAgbmV3IEMoImZvbzEiKQorICAgIG5ldyBGKCJmb28xIikKKyAgICBuZXcg
QygiZm9vMiIpCisgICAgbmV3IEYoImZvbzIiKQorICAgIG5ldyBDKCJmb28zIikKKyAgICBuZXcg
RigiZm9vMyIpCisgICAgbmV3IEMoImZvbzQiKQorICAgIG5ldyBGKCJmb280IikKKyAgICBuZXcg
QygiZm9vNSIpCisgICAgbmV3IEYoImZvbzUiKQorICAgIG5ldyBDKCJmb282IikKKyAgICBuZXcg
RigiZm9vNiIpCisgICAgbmV3IEMoImZvbzciKQorICAgIG5ldyBGKCJmb283IikKKyAgICBuZXcg
QygiZm9vOCIpCisgICAgbmV3IEYoImZvbzgiKQorICAgIG5ldyBDKCJmb285IikKKyAgICBuZXcg
RigiZm9vOSIpCisgICAgbmV3IEMoImZvbzEwIikKKyAgICBuZXcgRigiZm9vMTAiKQorfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1j
YWNoZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUt
Y2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwODYzYzY0MWE5YTc5ZGVjOWZlMTQ3YTk1YTgzZWVjNzNm
ZjNjOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSwzNSBAQAorLy9AIHNraXAgaWYgJG1v
ZGVsID1+IC9eQXBwbGUgV2F0Y2gvCisKK2Z1bmN0aW9uIEMoKSB7CisgICAgdGhpcy54ID0gNDsK
KyAgICBkZWxldGUgdGhpcy54Cit9Citub0lubGluZShDKQorCitmdW5jdGlvbiBEKCkgeworICAg
IGRlbGV0ZSB0aGlzLngKK30KK25vSW5saW5lKEQpCisKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAg
ZGVsZXRlIG8ueAorfQorbm9JbmxpbmUoZm9vKQorCitmdW5jdGlvbiBFKCkgeworICAgIHRoaXMu
eCA9IDQKKyAgICBmb28odGhpcykKK30KK25vSW5saW5lKEUpCisKK2Z1bmN0aW9uIEYoKSB7Cisg
ICAgZm9vKHRoaXMpCit9Citub0lubGluZShGKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDAwOyArK2kpIHsKKyAgICBuZXcgQworICAgIG5ldyBECisgICAgbmV3IEUKKyAgICBuZXcgRgor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtl
ZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwppbmRleCA3Nzk1ZGM1ODE1
NzhlNGMzOTgxYzIyYWM4NzZjNDU1NDEzZTY0ZDNjLi5hOTM5YWFlM2FjOGFjY2MyMjE0ZGQ3ZTdk
ODAyNDQyMWE4MTY0NWQ5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcworKysgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5q
cwpAQCAtMjQsNSArMjQsNSBAQCBmdW5jdGlvbiBkb1Rlc3QoKSB7CiB9CiBub0lubGluZShkb1Rl
c3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDAwMDA7ICsraSkgZG9UZXN0KCkKK2ZvciAobGV0
IGkgPSAwOyBpIDwgNTAwMDAwMDsgKytpKSBkb1Rlc3QoKQogCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5zaXRpb24uanMgYi9K
U1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5zaXRpb24u
anMKaW5kZXggNDAzYzdjMDljYzEyM2YzYjE4NTQ2ODBiNmMxN2RkNDU2YTVkZWYzMS4uYTRiYTFl
NDRkYWM4YTlhMzMxZGUwM2IwNTM1ZTM5MjQ5M2U2NWMxMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9z
dHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlv
bi5qcwpAQCAtMTIsNiArMTIsOSBAQCBmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKICAgICBp
ZiAoYSA9PT0gYikKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAi
ICsgYSArICIgIT09ICIgKyBiKTsKIH0KK25vSW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2Vy
dF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCiAKIGZ1bmN0aW9uIHNkKG9iaikgewogICAgIGxl
dCBkYXRhID0gJHZtLmdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0KG9iaikKQEAgLTMxLDYgKzM0
LDggQEAgZnVuY3Rpb24gc2lkKG9iaikgewogICAgIGxldCBkYXRhID0gc2Qob2JqKQogICAgIHJl
dHVybiBkYXRhW2RhdGEubGVuZ3RoLTFdLmlkCiB9Citub0lubGluZShzZCkKK25vSW5saW5lKHNp
ZCkKIAogZnVuY3Rpb24gdGVzdERlbGV0ZUlzTm90VW5jYWNoZWFibGUoaSkgewogICAgIGxldCBm
b28gPSB7fQpAQCAtNjIsNiArNjcsNyBAQCBmdW5jdGlvbiB0ZXN0RGVsZXRlSXNOb3RVbmNhY2hl
YWJsZShpKSB7CiAgICAgYXNzZXJ0X2VxKCR2bS5nZXRDb25jdXJyZW50bHkoZm9vLCAiYmFyIitp
KSwgMSkKICAgICBhc3NlcnQoZm9vWyJiYXIiICsgaV0gPT09IDEpCiB9Citub0lubGluZSh0ZXN0
RGVsZXRlSXNOb3RVbmNhY2hlYWJsZSkKIAogZnVuY3Rpb24gdGVzdENhbk1hdGVyaWFsaXplRGVs
ZXRlcyhpKSB7CiAgICAgbGV0IGZvbyA9IHt9CkBAIC0xMDAsNiArMTA2LDggQEAgZnVuY3Rpb24g
dGVzdENhbk1hdGVyaWFsaXplRGVsZXRlcyhpKSB7CiAgICAgYXNzZXJ0X2VxKGRhdGFbZGF0YS5s
ZW5ndGgtMl0ucHJvcGVydHksICJiYXIiICsgaSkKIH0KIAorbm9JbmxpbmUodGVzdENhbk1hdGVy
aWFsaXplRGVsZXRlcykKKwogZnVuY3Rpb24gdGVzdENhbkZsYXR0ZW4oaSkgewogICAgIGxldCBm
b28gPSB7fQogICAgIGZvciAobGV0IGo9MDsgajw1MDA7ICsraikgewpAQCAtMTMxLDYgKzEzOSw3
IEBAIGZ1bmN0aW9uIHRlc3RDYW5GbGF0dGVuKGkpIHsKICAgICAgICAgICAgIGFzc2VydF9lcSh2
YWwsIHVuZGVmaW5lZCkKICAgICB9CiB9Citub0lubGluZSh0ZXN0Q2FuRmxhdHRlbikKIAogZnVu
Y3Rpb24gdGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSgpIHsKICAgICBPYmplY3QucHJvdG90eXBl
Lmdsb2JhbFByb3BlcnR5ID0gNDIKQEAgLTE3NSw2ICsxODQsNyBAQCBmdW5jdGlvbiB0ZXN0RGVs
ZXRlV2l0aElubGluZUNhY2hlKCkgewogCiAgICAgZG9UZXN0KHVuZGVmaW5lZCkKIH0KK25vSW5s
aW5lKHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUpCiAKIHRlc3REZWxldGVXaXRoSW5saW5lQ2Fj
aGUoKQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5l
LWNhY2hlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYzUzZTAxMjE2ZGYwYzNmOGU2MmE2OTg0ZWZiMmE0YjdmY2Y2OTI3Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1j
YWNoZS5qcwpAQCAtMCwwICsxLDU0NiBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlQmlnSW50PXRy
dWUiKQorCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpOworfQorCitmdW5j
dGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiArIGIpOworfQorCitm
dW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsK
KyAgICB0cnkgeworICAgICAgICBmdW4oKQorICAgIH0gY2F0Y2ggeworICAgICAgICB0aHJldyA9
IHRydWUKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KQorfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9J
bmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25vSW5saW5lKGFzc2VydF90
aHJvd3MpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0
aW9uIG1ha2VGb28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0g
MQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICBy
ZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28u
YmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisg
ICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMwor
ICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCkK
KworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAgIGZ1bmN0aW9uIG1h
a2VGb28yKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAg
ICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKyAgICAgICAgcmV0
dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKworICAgIGFyciA9IG5ldyBB
cnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBh
cnJbal0gPSBtYWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28u
YmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisg
ICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMwor
ICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeVZh
bCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpIHsKKyAgICBmdW5j
dGlvbiBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXog
PSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJh
ciwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAg
IH0KKyAgICBub0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtl
Rm9vMygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhm
b28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAg
YXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNz
ZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFz
c2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28p
KQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRl
c3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxl
dGVCeUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAgICAgICAgbGV0IGZv
byA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0
ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUp
CisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2JhcicsIHsKKyAgICAg
ICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAgICAgICB9
KTsKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAg
YXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAgYXNzZXJ0X2VxKGZv
by5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1h
a2VGb280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkKKyAgICB9CisKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJy
W2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShP
YmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAg
ICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9
PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5l
KHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKworZnVuY3Rpb24gdGVzdERlbGV0ZUluZGV4
KCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb281KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAg
ICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZm9vWzBdID0g
MjMKKyAgICAgICAgZm9vWzFdID0gMjUKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFy
LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvb1sxXSwgdHJ1ZSkKKyAgICAgICAg
ZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZSht
YWtlRm9vNSkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNSgpCisgICAgfQorCisg
ICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkK
KyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBq
XSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQo
ISgiYmFyIiBpbiBmb28pKQorICAgICAgICBhc3NlcnRfZXEoZm9vWzBdLCAyMykKKyAgICAgICAg
YXNzZXJ0X2VxKGZvb1sxXSwgdW5kZWZpbmVkKQorICAgICAgICBmb29bMV0gPSAxCisgICAgICAg
IGFzc2VydF9lcShmb29bMV0sIDEpCisgICAgfQorfQorbm9JbmxpbmUodGVzdERlbGV0ZUluZGV4
KQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7CisgICAgZnVuY3Rpb24g
bWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bImJheiIraV0g
PSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bImJheiIraV0KKyAg
ICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vNikKKworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5s
ZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkKKyAgICAgICAgZm9v
LmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWci
ICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBh
c3NlcnQoISgiYmF6IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1v
cnBoaWNEZWxCeVZhbCkKKworZnVuY3Rpb24gdGVzdEJpZ2ludERlbGV0ZUJ5VmFsKCkgeworICAg
IGZ1bmN0aW9uIG1ha2VGb283KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9v
WzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXSA9IDEKKyAgICAgICAg
Zm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1sxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwbl0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGlu
ZShtYWtlRm9vNykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNygpCisgICAgfQor
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9
IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRf
ZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiAr
IGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RCaWdpbnREZWxl
dGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdFN5bWJvbERlbGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0
IHN5bWJvbCA9IFN5bWJvbCgnZm9vJyk7CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vOCgpIHsKKyAg
ICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0gMQorICAgICAgICBhc3Nl
cnQoIShTeW1ib2woJ2ZvbycpIGluIGZvbykpCisgICAgICAgIGFzc2VydChzeW1ib2wgaW4gZm9v
KQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5bWJvbF0KKyAgICAg
ICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOCkKKworICAgIGFyciA9
IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBhcnJbal0gPSBtYWtlRm9vOCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2Vy
dChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5n
dGgsIDEpCisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAgICAgICBmb28uYmFn
ID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBq
XSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2Vy
dCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U3ltYm9sRGVsZXRl
QnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RPYmpEZWxldGVCeVZhbCgpIHsKKyAgICBjb25zdCBzeW1i
b2wgPSB7IGk6ICJmb28iIH07CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vOSgpIHsKKyAgICAgICAg
bGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0gMQorICAgICAgICBhc3NlcnQoc3lt
Ym9sIGluIGZvbykKKyAgICAgICAgYXNzZXJ0KCEoeyBpOiAiZm9vIiB9IGluIGZvbykpCisgICAg
ICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQorICAgICAgICByZXR1
cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb285KQorCisgICAgYXJyID0gbmV3IEFy
cmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFy
cltqXSA9IG1ha2VGb285KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyAr
K2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5i
YXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkK
KyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisg
ICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMwor
ICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RPYmpEZWxldGVCeVZhbCkKKwor
ZnVuY3Rpb24gdGVzdFN0cmljdCgpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5jdGlv
biBtYWtlRm9vMTAoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0g
MQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXos
IHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAgIHZhbHVl
OiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOworICAgICAg
ICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBmb28uZm9vYmFyKQorICAgICAgICBhc3NlcnRf
ZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9Jbmxp
bmUobWFrZUZvbzEwKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28xMCgpCisgICAg
fQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZv
byA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3Nl
cnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09
IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWci
ICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citu
b0lubGluZSh0ZXN0U3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0T3ZlcnJpZGUoKSB7CisgICAgYXJy
ID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGFycltqXSA9IGZ1bmN0aW9uKCkgeyB9CisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFz
T3duTGVuZ3RoUHJvcGVydHkoYXJyW2pdKSwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGFycltqXS5s
ZW5ndGgKKyAgICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNPd25MZW5ndGhQcm9wZXJ0eShhcnJbal0p
LCBmYWxzZSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlz
KGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAg
ICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29b
ImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAg
ICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdE92ZXJy
aWRlKQorCitmdW5jdGlvbiB0ZXN0Tm9uT2JqZWN0KCkgeworICAgIGZ1bmN0aW9uIGRlbGV0ZUl0
KGZvbykgeworICAgICAgICBhc3NlcnQoZGVsZXRlIGZvby5iYXopCisgICAgICAgIHJldHVybiBm
b28KKyAgICB9CisgICAgbm9JbmxpbmUoZGVsZXRlSXQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXko
NTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pd
ID0geyBiYXo6IGogfQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoImJheiIgaW4g
Zm9vKQorICAgICAgICBkZWxldGVJdChmb28pCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZv
bykpCisgICAgfQorCisgICAgYXNzZXJ0KGRlbGV0ZUl0KCJiYXoiKSA9PSAiYmF6IikKKyAgICBk
ZWxldGVJdChTeW1ib2woImhpIikpCit9Citub0lubGluZSh0ZXN0Tm9uT2JqZWN0KQorCitmdW5j
dGlvbiB0ZXN0Tm9uT2JqZWN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1
bmN0aW9uIGRlbGV0ZUl0KGZvbykgeworICAgICAgICBhc3NlcnQoZGVsZXRlIGZvb1siYmF6Il0p
CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUoZGVsZXRlSXQpCisKKyAg
ICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgYXJyW2pdID0geyBiYXo6IGogfQorICAgIH0KKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAg
ICBhc3NlcnQoImJheiIgaW4gZm9vKQorICAgICAgICBkZWxldGVJdChmb28pCisgICAgICAgIGRl
bGV0ZUl0KDUpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorCisgICAg
YXNzZXJ0KGRlbGV0ZUl0KCJiYXoiKSA9PSAiYmF6IikKKyAgICBkZWxldGVJdChTeW1ib2woImhp
IikpCisKKyAgICBsZXQgZm9vID0ge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAn
YmF6JywgeworICAgICAgdmFsdWU6IDQyLAorICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAg
IH0pOworICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlSXQoZm9vKSkKK30KK25vSW5saW5l
KHRlc3ROb25PYmplY3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RFeGNlcHRpb25VbndpbmQoKSB7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rpb24gbXV0YXRlVGhlbShhLGIsYyxkLGUs
ZixnLGgsaSkgeworICAgICAgICBnLmkgPSA0MgorICAgIH0KKyAgICBub0lubGluZShtdXRhdGVU
aGVtKQorCisgICAgZnVuY3Rpb24gZGVsZXRlSXQoZm9vKSB7CisgICAgICAgIGxldCBjYXVnaHQg
PSBmYWxzZQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgYSA9IHsgaTogMSB9Cisg
ICAgICAgICAgICB2YXIgdiA9IHsgaTogMTAgfQorICAgICAgICAgICAgdmFyIGIgPSB7IGk6IDEw
MCB9CisgICAgICAgICAgICB2YXIgYyA9IHsgaTogMTAwMCB9CisgICAgICAgICAgICB2YXIgZCA9
IHsgaTogMTAwMDAgfQorICAgICAgICAgICAgdmFyIGUgPSB7IGk6IDEwMDAwMCB9CisgICAgICAg
ICAgICB2YXIgZiA9IHsgaTogMTAwMDAwMCB9CisgICAgICAgICAgICB2YXIgZyA9IHsgaTogMTAw
MDAwMDAgfQorICAgICAgICAgICAgdmFyIGggPSB7IGk6IDEwMDAwMDAwMCB9CisgICAgICAgICAg
ICB2YXIgaSA9IHsgaTogMTAwMDAwMDAwMCB9CisKKyAgICAgICAgICAgIG11dGF0ZVRoZW0oYSxi
LGMsZCxlLGYsZyxoLGkpCisKKyAgICAgICAgICAgIGRlbGV0ZSBmb29bImJheiJdCisKKyAgICAg
ICAgICAgIGEgPSBiID0gYyA9IGQgPSBlID0gZiA9IGcgPSBoID0gaQorICAgICAgICB9IGNhdGNo
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcShhLmksIDEpCisgICAgICAgICAgICBhc3NlcnRfZXEo
aS5pLCAxMDAwMDAwMDAwKQorICAgICAgICAgICAgYXNzZXJ0X2VxKGcuaSwgNDIpCisgICAgICAg
ICAgICBjYXVnaHQgPSB0cnVlCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNhdWdodAorICAg
IH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgMTAw
MDAwOyArK2opIHsKKyAgICAgICAgYXNzZXJ0KCFkZWxldGVJdCh7IGosIGJhejogNSB9KSkKKyAg
ICB9CisKKyAgICBsZXQgZm9vID0ge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAn
YmF6JywgeworICAgICAgdmFsdWU6IDQyLAorICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQorICAg
IH0pOworCisgICAgYXNzZXJ0KGRlbGV0ZUl0KGZvbykpCit9Citub0lubGluZSh0ZXN0RXhjZXB0
aW9uVW53aW5kKQorCitmdW5jdGlvbiB0ZXN0VERaKCkgeworICAgIGRlbGV0ZSBmb28ueAorICAg
IGxldCBmb28gPSB7IHg6IDUgfQorfQorbm9JbmxpbmUodGVzdFREWikKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisgICAg
dGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVC
eUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorICAgIHRlc3REZWxldGVJ
bmRleCgpCisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKKyAgICB0ZXN0QmlnaW50RGVs
ZXRlQnlWYWwoKQorICAgIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpCisgICAgdGVzdFN0cmljdCgp
CisgICAgdGVzdE92ZXJyaWRlKCkKKyAgICB0ZXN0Tm9uT2JqZWN0KCkKKyAgICB0ZXN0Tm9uT2Jq
ZWN0U3RyaWN0KCkKKyAgICBhc3NlcnRfdGhyb3dzKHRlc3RURFopCit9CisKK3Rlc3RFeGNlcHRp
b25VbndpbmQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391594</attachid>
            <date>2020-02-24 16:17:14 -0800</date>
            <delta_ts>2020-02-25 13:30:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200224161713.patch</filename>
            <type>text/plain</type>
            <size>221126</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjZkMjI0OTFkZTk3ZjU3ZTU4MGNjNDYzZDgyNGVjMmQ0MGY3NWY2Li41MzlhYmEyMzg3M2JiYzIx
NGRiODg0NTZmZjg4NmI5YzEwZGRjZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMy45MDk2eCBmYXN0
ZXIKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYyAgZGVm
aW5pdGVseSAxLjUyMzl4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90
b3R5cGUtY2hhaW4gICAgICAobmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxl
dGVQcm9wZXJ0eUZvcktleSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFt
ZU1hdGNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlBy
b3BlcnR5Q2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50
Q2VsbCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6bmV3U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5o
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6
CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVh
YmxlSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAg
KiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3Vt
ZW50czo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFi
bGVNaXNzKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1
cmFibGUpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3Mg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJh
YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNo
aW5nKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1
bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAg
IChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6Cisg
ICAgICAgIChKU0M6OnZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5Lmg6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAq
IHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0
aFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgor
CiAyMDIwLTAyLTI0ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbSlNDXSAzMi1iaXRzIGRlYnVnIGJ1aWxkIGJyb2tlbiBhZnRlciByMjU3MjEyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQw
N2EzOGFiMDA3YTUzNmRlYTA5NGE0NTNiZjgwMzY0MDZlMTRmOWYuLjY0MDZhOGRlM2MyMzU2ZjM5
ZDMxZDUwNTk3ZDRiNzNmNDRjZDBmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDItMjEg
IEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElu
bGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgorICAgICAgICAoV1RGOjpTcGVj
dHJ1bTo6YWRkKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCBjb25zdCk6CisgICAgICAg
IChXVEY6OlNwZWN0cnVtOjpidWlsZExpc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1
bTo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6cmVtb3ZlSWYpOgorICAgICAgICAo
V1RGOjpTcGVjdHJ1bTo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
ZW5kKTogRGVsZXRlZC4KKwogMjAyMC0wMi0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFNocmluayBTdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZTViODZlY2U1ZWYxYzYzOWM5NGQ3YTBmNzgxODJhYTExNDBkY2Y5Li4xYWM1MzA3MjBiYWI1YzNh
NmMzNTFlZjI0NmYxZDExMGVmZGYwM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIw
MjAtMDItMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisg
ICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZW1v
dGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCByZW1vdmVXZWJTY3Jp
cHRLZXk6XSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAg
ICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdl
L3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAqIGJy
aWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1l
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0
Lmg6CisKIDIwMjAtMDItMjQgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB1cGRhdGVPYmplY3RC
YWNraW5nU3RvcmVdIHNob3VsZCByZXR1cm4gdGhlIGJhY2tpbmcgb2JqZWN0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBhNWM2NDE1YWZjY2Y2NmRiNGI2MTRmMTAxYTQ2ZjNhNTljYjI1YjFhLi5jMDNmZDUxYjRlNTky
OGUxOTFjN2ExNTA1Yzc4YjUyZWI3NTQ0NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIwLTAyLTIxICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIw
LTAyLTI0ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBVc2Ugb25lIHRlbGVtZXRyeSBkZWNvcmF0aW9uIGZvciBlYWNoIHNhbmRib3ggcnVsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDhmNTA3YTQ5YjRjZjczODc4ZDMwY2YyNzJm
NzQzZWNmZmE3MmU2N2QuLjVhZmFkNDBmZjdiNGNmNDhkNDg4ZGZlMTVkNzUzN2Y4OWQyZGRhMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMi0y
MSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAg
SW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OnJlbW92ZVByb3BlcnR5KToKKwogMjAyMC0wMi0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgaW5jbHVkZSBtaXN0YWtlcyBhbmQgbWFrZSBz
b21lIGNvZGluZyBzdHlsZSB0d2Vha3MgdG8gV2ViS2l0IGFuZCBXZWJLaXRUZXN0UnVubmVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDAzNGIz
NTdjMDczOGUzNDkxMjU4ODU4ZDcwNjk4OWZlZmNiNDgzM2QuLjkyY2E5MjQ3Nzk2MmJjMDRjN2E4
ZWI4NmExZjQxNWQyYjE4N2YzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAK
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkKTsKIAogICAgIHN0YXRpYyBib29sIGN1c3RvbUhhc0luc3RhbmNlKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggY2Q1MTFiZmQy
ODRhMDEzMjUyYTY0MDVhNjcwN2FhZDEzN2ExYmNjYi4uNGJlYzMzYTcyZGMyODQ3N2E2MTM1NmZk
YjkyMGE0NzY4NjJlZDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTM3Myw3ICszNzMsNyBAQCBib29sIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYgogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgotYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQxOCw3
ICs0MTgsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KQEAgLTQyNiw3ICs0MjYsOCBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
YwogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgSlNDYWxsYmFja09i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7Ci0gICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsK
KyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyZW50PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApp
bmRleCBmN2Y5ZGFiM2YyOGFkYzBlYWJiMmJkZThiMjUwNjc3MmFkMjVmZmNlLi45ZGY4NzhlNTg4
ZmEyYWVmMDYyMmFjNjk1ODc4MWFiZTY3YTM3ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNDc5LDcgKzQ3OSw4IEBAIGJvb2wgSlNPYmplY3REZWxl
dGVQcm9wZXJ0eUZvcktleShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpT
VmFsdWVSCiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2Vw
dGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAg
ICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtNTM0LDcgKzUzNSw4IEBAIGJvb2wgSlNPYmplY3REZWxldGVQ
cm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVm
IHByCiAKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAKLSAgICBib29s
IHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsKKyAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZS0+aWRlbnRpZmllcigmdm0pLCBzbG90KTsKICAgICBoYW5kbGVFeGNlcHRpb25JZk5l
ZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFlNDI3YzMwYzUxMTYzZWRkOWYxMDZk
NDJmOTVlMDlkMDJiZTljNC4uNzU1NmU5NTZmYzYzMmY3ZTJiOWQwZTFhZGJmN2NhODFmOGU4ZjA0
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODE1LDYgKzgxNSw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGlt
ZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAogICAgIHJ1
bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKKyAgICBydW50aW1lL0RlbGV0ZVByb3Bl
cnR5U2xvdC5oCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaAogICAgIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmNDJjMmFlOGZlNTkyYmY2ZDY4Mjg1Mzg5
NzZkMGNmNmRhNmRiMWYuLmZiNzQ1NjUxN2Y4Zjc0YzY5ZjFjOWQ1YmRjMjAyYzRmNmU0NDE4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDYgKzExNzgsNyBAQAogCQk3
MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAxMUFG
REJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFGREJFQTIw
MDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0
ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTczRTM3OTk0
MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1
IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1OTNDODk4QkU3MTRBNjRCRTkz
QTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0RCAvKiBXYXNtQ29udGV4
dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAwNTJE
N0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzk3MSw2ICszOTcyLDcgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5
NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzM0QjY1NTQyM0Y0
QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3Ro
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3Ro
Lmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5n
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VMb29w
U3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1
bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODQsNiArNzA4Niw3IEBACiAJ
CQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAogCQkJ
CUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJMTY5
OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovLAor
CQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLywK
IAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAqLywK
IAkJCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggKi8sCiAJ
CQkJMEZFMDUwMEQxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5jcHAg
Ki8sCkBAIC05MjA5LDYgKzkyMTIsNyBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAv
KiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0QzQ1
RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVy
dHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkgLyog
RGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBCQkZEMDBB
OERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3
QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDY2Miw3ICsxMDY2Niw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1dGVz
ID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJCQlE
ZWZhdWx0QnVpbGRTeXN0ZW1UeXBlRm9yV29ya3NwYWNlID0gT3JpZ2luYWw7CiAJCQkJTGFzdFN3
aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGRlZjY3
NTI5MzlhZTU0OWQ4MTliNTZlODQwMzQ0MDg1OTgzYjU5ZmUuLjdjYWI5YzFiMDNiOTUzNmEwZWNl
NzI3ZDZjNTEzNjIyN2FhYzg3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTczLDYgKzczLDggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNz
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0xl
bmd0aDoKQEAgLTEwNiw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjMs
NiArMTI1LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJl
LCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKK3N0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCisgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQodm0pKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAg
ICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVs
b3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdTdHJ1Y3R1
cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisgICAgICAg
IGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsg
fSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2
ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgp
IGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEg
YnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRpZmll
ci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFj
ZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5
IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBjb25zdAog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlv
bjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAg
ICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAg
ICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpu
ZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0
LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoK
ICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgor
ICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAg
ICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAt
NDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9y
PEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBDdXN0b21B
Y2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAg
Y2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoKICAgICBj
YXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBj
YXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5UHJv
dG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJh
bnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50
ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0dXJlKQog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAo
bV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6
OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogCiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVyZS0+cHJl
dmlvdXNJRCh2aXNpdG9yLnZtKCkpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0
YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAg
ICAgdmFsdWVSZWdzLApAQCAtMTg5Niw2ICsxOTMzLDcxIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGNhc2UgRGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxv
Y2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwor
ICAgICAgICBhbGxvY2F0b3IubG9jayhiYXNlR1BSKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2so
c2NyYXRjaEdQUik7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNo
cG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1
cmUoKS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGJh
c2VHUFIgIT0gdmFsdWVSZWdzLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gc2Ny
YXRjaEdQUik7CisgICAgICAgIEFTU0VSVCh2YWx1ZVJlZ3MuZ3ByKCkgIT0gc2NyYXRjaEdQUik7
CisKKyAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVz
ZXJ2ZWRTdGF0ZSA9CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3Rl
cnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFj
ZTo6Tm9FeHRyYVNwYWNlKTsKKworICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAg
ICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5k
ZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNh
Y2hlIHRoaXMgY2FzZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNj
ZWxsLgorICAgICAgICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5LgorICAgICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2Vs
bCk7CisgICAgICAgIC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0
aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3Vs
ZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFz
SW5kZXhpbmdIZWFkZXI7CisKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVl
UmVncyk7CisKKyAgICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZs
eSkgeworICAgICAgICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwg
dmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgYmFzZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJ
bmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAg
ICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAg
ICBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAg
ICBvZmZzZXRJbklubGluZVN0b3JhZ2UobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7
CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3Ms
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNl
dEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisK
KyAgICAgICAgdWludDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
bmV3U3RydWN0dXJlKCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOworCisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1
ZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3Jl
UmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBz
dGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZTogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKGZhbHNlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRl
LnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlz
czogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUp
LCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmluZGV4IGE3Njc3NjdiZmM2MDM0OGRjNzU5M2E2ODRh
M2Q2NDAyZDU2ZjcxNTkuLmEzNDc5ZDE2MDFhNmNkOTc3Nzk0MGFkNDU1YTMzODM3ZTZlM2I3NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUs
NiArODUsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAg
ICAgIExvYWQsCiAgICAgICAgIFRyYW5zaXRpb24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAg
RGVsZXRlTm9uQ29uZmlndXJhYmxlLAorICAgICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBs
YWNlLAogICAgICAgICBNaXNzLAogICAgICAgICBHZXRHZXR0ZXIsCkBAIC0xNDUsOSArMTQ4LDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0
ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxw
dHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0KCksIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gPSBudWxs
cHRyKTsKIAotICAgIC8vIFRoaXMgY3JlYXRlIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBmb3IgdHJh
bnNpdGlvbnMuCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUo
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLAorICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8o
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogCkBAIC0xNTcsNyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQor
ICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAg
ICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRChtX3N0cnVjdHVyZS0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CkBAIC0xNjUsNyAr
MTcwLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpOwogICAgICAgICBy
ZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAxMzI0MDljMGE0
NTEwYmRmYThlY2UzM2I3NDM0NzE2MDJkN2IwZTc5Li5iMTY2YzMwYzE4YTUyM2E3NjI1ZjM5YWY2
Yjc4OTUwNjdhYTVmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc5NSw2ICs3OTUsMTUgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZSkK
ICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmludCgiVHJh
bnNpdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6
CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICAgICAgb3V0LnByaW50KCJE
ZWxldGVOb25Db25maWd1cmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNz
Q2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVNaXNzIik7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlJlcGxhY2U6CiAgICAgICAgIG91dC5w
cmludCgiUmVwbGFjZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA2MTc4NzM3Zjlm
OGE5Y2QwYjZkZGFkNTdmMWNmMTJlZmU0ZmNhNzA1Li45NmExYmFlY2JlNGNiYmI3NmRiZGVkYTgw
NTY1YTJjNTk4NjU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Niw2ICsyNzYsMTIgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CisgICAgICAgIHJl
c2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgorICAgICAgICByZXNldERl
bEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZGRjZTg1ZWMwMjU1NTc2
YzllMzQ1MWY2NDczNmQxMmMzODk0MjgwMy4uYjU3NWJkZDIxNjE5YzJkZmU0ZjE4MmZhZWQ5MGYy
NjhlOWUyNjE5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU1LDcgKzU1LDkgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBl
IDogaW50OF90IHsKICAgICBHZXRCeVZhbCwKICAgICBQdXQsCiAgICAgSW4sCi0gICAgSW5zdGFu
Y2VPZgorICAgIEluc3RhbmNlT2YsCisgICAgRGVsZXRlQnlJRCwKKyAgICBEZWxldGVCeVZhbAog
fTsKIAogZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCmluZGV4IDI2ZTI4MjkzOWU5YWNh
ODg2NWMyMjE3NzNjMmE0MWUwMjgwOTRkZGEuLjQ4YjViODZmYTRiOWU4NjVlYTQ4ZGM5OWE0OTNi
ZDk0OGQwNzRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJTY29wZS5jcHAKQEAgLTEyOSwxNCArMTI5LDE0IEBAIGJvb2wgRGVidWdnZXJTY29wZTo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0o
KSktPnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogfQogCi1ib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nh
c3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsK
ICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2Nv
cGUoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+
dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52
bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCiB2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmY0Y2UxYjFk
YTRiNTc5MGRlOGFkOTg4YTcxZjYwMmNkZjI2MTY3NC4uNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlh
MWEyMTQ5Nzc1ZWRkODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJTY29wZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDdm
ZmEzOGU2NmQyZTA4ZDc0NTk4OWJkNjEyOWRiZWFhMGZhMGQwN2IuLmU5N2RlMTBmNmY0Y2RjMTVi
YWVmYjEwYjdlYzYwNjI4Mjc4MzU5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMTYxOCw2ICsxNjE4LDIyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6IHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRT
cGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBEZWxldGVCeUlkOiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCeUlkRmx1c2g6IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBkb25lIGluIHRoZSBCeXRlQ29kZVBhcnNlciBiYXNlZCBvbiByZWFkaW5nIHRoZQpAQCAtMjUx
OCw4ICsyNTM0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoK
ICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoK
LSAgICAgICAgY2FzZSBEZWxldGVCeUlkOgotICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAg
ICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAgIGNhc2UgSXNFbXB0eToKICAgICAg
ICAgY2FzZSBJc1VuZGVmaW5lZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKaW5kZXggZTNlMjA4ZDJkYTFjZDczOWJmYWNjOGMzNGM1NDk3Y2M1NjJkYjkz
Ni4uMzg3MTU5MTc4OTAzMTIwYTYxMjY0NWU0YTIzNDM1MTNiYTVkYmVmNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTI0Niw2ICsyNDYsOCBA
QCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBsaW5rQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgbGlua0J1ZmZlcik7CisgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9kZWxCeUlkcywgbGlua0J1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNo
ZXMobV9kZWxCeVZhbHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5j
ZU9mcywgbGlua0J1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAppbmRleCA0ODgwODc0YzI4NWFiN2Q0NDdlYjg5M2E2ZThiNGJiZjAxMDczMWQ0Li4y
ZmI2YWQ4ZjYyZjk1YTI2ZTZjZGI4MjZhYTZkMWNkNjdmMTk0N2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xOTEsNyArMTkxLDE3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fcHV0QnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxK
SVRQdXRCeUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQotICAgIAorCisgICAg
dm9pZCBhZGREZWxCeUlkKGNvbnN0IEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhH
ZW5lcmF0b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9kZWxCeUlkcy5hcHBlbmQoSW5s
aW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZERlbEJ5VmFsKGNvbnN0IEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBn
ZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIG1fZGVsQnlW
YWxzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+KGdlbiwg
c2xvd1BhdGgpKTsKKyAgICB9CisKICAgICB2b2lkIGFkZEluc3RhbmNlT2YoY29uc3QgSklUSW5z
dGFuY2VPZkdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCiAgICAg
ewogICAgICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5z
dGFuY2VPZkdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwpAQCAtMzQ4LDYgKzM1OCw4IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3I+LCA0PiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgVmVjdG9yPElubGluZUNhY2hl
V3JhcHBlcjxKSVRHZXRCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlWYWxzOwogICAgIFZlY3Rv
cjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4sIDQ+IG1fcHV0QnlJZHM7
CisgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeUlkR2VuZXJhdG9yPiwgND4g
bV9kZWxCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yPiwgND4gbV9kZWxCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxK
SVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2luQnlJZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hl
V3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiwgND4gbV9pbnN0YW5jZU9mczsKICAgICBW
ZWN0b3I8SlNDYWxsUmVjb3JkLCA0PiBtX2pzQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDE3YmEyYjJmZjM1YTRmYWYwMTFh
MzIyOTczZTc5NjllN2I0N2U1N2EuLjAyZThkMDY4MDc5MGM1OTc2N2E0OTA1Zjc3NmY2ZmYxYjFi
MTE5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0xMTQ1LDQzICsxMTQ1LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluQnlWYWwoTm9kZSogbm9kZSkKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdz
LnBheWxvYWRHUFIoKSwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKLXsKLSAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotCi0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotCi0gICAgdmFsdWUudXNlKCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSkpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNzZWRC
b29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5v
ZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFs
dWVSZWdzKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQotICAgIGJh
c2UudXNlKCk7Ci0gICAga2V5LnVzZSgpOwotCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywga2V5UmVncyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKLQotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGN1cnJlbnRTY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBlY2Zj
OTAzOTBiNjg3NDg2MDhjZTFkMGMwZjA5MjViZTI3ODgzMzQyLi4wODNlNjg0ZGY5MTI0YzlkZDQx
MTNjNDI3NGE2YjY1ZjEyYjMwYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQyNzgsNiArNDI3OCw0MyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnKQogewogfQogCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQoreworICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1
ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisK
KyAgICB2YWx1ZS51c2UoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKSkpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICB1
bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFs
KE5vZGUqIG5vZGUpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICBKU1ZhbHVlUmVncyBi
YXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0g
a2V5LmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KworICAgIGJhc2UudXNlKCk7CisgICAga2V5LnVzZSgpOworCisgICAgZmx1c2hSZWdpc3RlcnMo
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJl
Z3MpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFu
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKK30K
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUmFuZG9tKE5vZGUqIG5vZGUpCiB7
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAzNzI4Yjg1M2ZhYmFiMjhi
ZjQ0NTRjOTUwNTRmY2Y1N2M0NWJkNTRjLi5iMDdjYjI1NzVkMTA2Mjc3OGQ0ZWIwNzRkZmM1ZmE2
MTY2M2RkOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKQEAgLTU0MzksNiArNTQzOSw4OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaW5nQ29kZVBvaW50QXQoTm9kZSogbm9kZSkKICAgICBpbnQzMlJlc3VsdChz
Y3JhdGNoMUdQUiwgbV9jdXJyZW50Tm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUt
PmNoaWxkMSgpKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIGF1dG8qIHByb3Bl
cnR5ID0gaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3By
KCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgIGlmIChuZWVk
c1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOworCisgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxp
bmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJ
VERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCByZXN1bHRH
UFIsIHNjcmF0Y2hHUFIpOworCisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBwcm9w
ZXJ0eSk7CisKKyAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCit7CisgICAgc3BlY3VsYXRlKG5vZGUs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwor
CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJh
c2UuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVS
ZWdzKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9k
ZS0+Y2hpbGQxKCksIFNwZWNDZWxsKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+
Y2hpbGQyKCksIFNwZWNDZWxsKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hJZk5vdENlbGwoa2V5UmVncykpOworCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5y
ZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQo
Y29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lz
dGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9y
IGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywga2V5UmVncywgcmVzdWx0R1BSLCBzY3Jh
dGNoR1BSKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIGtleVJlZ3MpOwor
CisgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAgdW5ibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGF0ZUdldChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDRiZWJlZjIxYWEwZDQxMGFjMDhjYWIxMjgzNTE4YTkyMjJl
ODQ0OGIuLjgwMzYzOTA3YjllMTcyODMyNzViMjdhNjk1MzMxOGRjNGU2N2I1OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTUxNDQsMjAg
KzUxNDQsMTY4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0
dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxEZWxCeUtpbmQg
a2luZCwgdHlwZW5hbWUgU3Vic2NyaXB0S2luZD4KKyAgICB2b2lkIGNvbXBpbGVEZWxCeShMVmFs
dWUgYmFzZSwgU3Vic2NyaXB0S2luZCBzdWJzY3JpcHRWYWx1ZSkKKyAgICB7CisgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDsKKyAgICAgICAgaWYgY29uc3RleHByIChraW5kID09
IERlbEJ5S2luZDo6Tm9ybWFsKSB7CisgICAgICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0
Y2hwb2ludChJbnQ2NCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShiYXNlLCBWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwor
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFs
dWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKHN1YnNjcmlwdFZhbHVlLCBWYWx1ZVJlcDo6U29tZUxhdGVSZWdp
c3RlcikpOworICAgICAgICB9CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BT
Y3JhdGNoUmVnaXN0ZXJzID0gMTsKKworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KKyAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50
Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKKworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAg
ICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQorICAgICAgICAgICAgICAg
ICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKworICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0PiBleGNlcHRpb25zID0KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxl
LT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOworICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgICAgICAgICAgICAg
YXV0byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIHJldHVybkdQUiA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoYmFzZS5ncHIoKSAhPSByZXR1cm5HUFIpOworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
LmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChy
ZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CisKKyAgICAg
ICAgICAgICAgICBjb25zdGV4cHIgYXV0byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IFsmXSAoKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5v
cm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAg
IH0oKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gc3Vic2NyaXB0ID0gWyZdIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFs
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihzdWJzY3JpcHRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zWzJdLmdwcigpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBh
cmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFtc1sy
XS5ncHIoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhw
YXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0geworICAg
ICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlJZEdlbmVyYXRv
cj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm5HUFIsIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIHJl
dHVybkdQUiwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wKCkpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
ZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRo
KAorICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJl
Z2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhD
YWxsKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZm
ZXIsIGxpbmtCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIHNldEJvb2xlYW4o
bV9vdXQubm90WmVybzY0KHBhdGNocG9pbnQpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVE
ZWxldGVCeUlkKCkKICAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
ICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
YXV0byB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCldOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIG1fb3V0
LmNvbnN0SW50UHRyKHVpZCkpKSk7CisgICAgICAgIExWYWx1ZSBiYXNlOworCisgICAgICAgIHN3
aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNl
OiB7CisgICAgICAgICAgICBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7Cisg
ICAgICAgICAgICBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERG
R19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBjb21waWxlRGVsQnk8RGVsQnlLaW5kOjpOb3JtYWw+
KGJhc2UsIG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV0p
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKCkKICAgICB7Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0
KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlWYWwsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGJhc2UsIHN1YnNjcmlwdCkpKTsKKyAgICAgICAgTFZhbHVlIGJhc2U7CisgICAgICAg
IExWYWx1ZSBzdWJzY3JpcHQ7CisKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSkgeworICAgICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgICAgIGJhc2UgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIGJhc2UgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwg
IkJhZCB1c2Uga2luZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIENl
bGxVc2U6IHsKKyAgICAgICAgICAgIHN1YnNjcmlwdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVW50eXBl
ZFVzZTogeworICAgICAgICAgICAgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb21waWxlRGVsQnk8RGVs
QnlLaW5kOjpOb3JtYWxCeVZhbD4oYmFzZSwgc3Vic2NyaXB0KTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlQXJyYXlQdXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5k
ZXggNWQzMDkyOGY0YTg1YjRhZGU0NDRjNDNmNWFkZGYyMzE3ZjQyNjViNy4uOTA0MGRmMzgyMDc2
NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2YzE0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0
YXRzLmgKQEAgLTcwLDcgKzcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oUHV0QnlJ
ZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQdXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAg
ICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXAotICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkK
KyAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpIFwKKyAgICBtYWNybyhEZWxCeVJlcGxhY2VXaXRo
SnVtcCkgXAorICAgIG1hY3JvKERlbEJ5UmVwbGFjZVdpdGhHZW5lcmljKQogCiBjbGFzcyBJQ0V2
ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAwOTFjNGY3ODJh
MDc4NGZjNDUyNWVkMjA3OTY5Y2QxYjc4NzQ0ZTg2Li5jNmU2MWI4OWJmOWExYTE5NWMzZTgzODY0
YzFjYTE3ODQwOGE1YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01MDAsNiAr
NTAwLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5
SWRXaXRoVGhpc0luZGV4ID0gMDsKICAgICBtX3B1dEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbkJ5
SWRJbmRleCA9IDA7CisgICAgbV9kZWxCeVZhbEluZGV4ID0gMDsKKyAgICBtX2RlbEJ5SWRJbmRl
eCA9IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlv
bkluZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKQEAgLTU4MCw2ICs1ODIs
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGly
ZWN0OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKKyAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2RlbF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zdWIpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9mcm9tX3Njb3BlKQpAQCAtODc1LDYgKzg3OSw4
IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNo
ZXMobV9nZXRCeVZhbHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyht
X2dldEJ5SWRzV2l0aFRoaXMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX3B1dEJ5SWRzLCBwYXRjaEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9k
ZWxCeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlW
YWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBw
YXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0
Y2hCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3YjQ0MDc0OTYzMzM2ZmNi
ODk0MWViZDA1YjU5NzMxMjlhOWU4NjU1Li42NzE2NjYxZGY0ZmFjZWE1ZWZlZDVmNTEwODFmMDU5
YjZkMjUzZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUwMCw3ICs1MDAsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmls
ZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC05MTMs
NiArOTE1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0
aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1
dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5l
cmF0b3I+IG1faW5CeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVERlbEJ5SWRHZW5lcmF0b3I+IG1f
ZGVsQnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZh
bHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiBtX2luc3RhbmNlT2Zz
OwogICAgICAgICBWZWN0b3I8QnlWYWxDb21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlv
bkluZm87CiAgICAgICAgIFZlY3RvcjxDYWxsQ29tcGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxh
dGlvbkluZm87CkBAIC05MzQsNiArOTM4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVu
c2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNp
Z25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5C
eUlkSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5kZXgg
eyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsKICAg
ICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggeyBVSU5UX01BWCB9OwogICAg
ICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgVUlOVF9NQVggfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
aW5kZXggOTIwYjcyMDNlM2NmNGJmMDZlZWQ0NTczYTM5Y2I1NmJjY2E2NWQ1YS4uNDk2YWY4MjJh
YjljZTUzYzkzNjlhNmJmM2NkNDA1MWQwMDA5N2JlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTE2Miw2ICsx
NjIsNjYgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKSSBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93
UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGlt
aXplOwogfQogCitKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3Jh
dGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8t
Pmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAgIEFTU0VSVChiYXNlLnBheWxvYWRH
UFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRH
UFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9h
ZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OworI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1Yklu
Zm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIoKTsKKyNlbmRpZgorICAgIG1f
c3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7Cit9CisKK3ZvaWQgSklURGVs
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sK
KyAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9kb25lID0g
aml0LmxhYmVsKCk7Cit9CisKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAor
ICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBB
U1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXpl
KAorICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc2xvd1BhdGhKdW1wLm1fanVtcC5sYWJlbCgpKSk7Cit9CisKK0pJ
VERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykK
K3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOworICAgIEFT
U0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQpOworICAgIG1fc3R1YkluZm8tPmJhc2VH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsKKyNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRh
Z0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgor
ICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7Cit9CisKK3ZvaWQg
SklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQoreworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2Rv
bmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6
ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7Cisg
ICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5h
bGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX3Nsb3dQYXRoSnVtcC5tX2p1bXAubGFiZWwoKSkpOworfQor
CiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAppbmRleCBiZmI5MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li45ZWU0Y2Ey
YzUwMGEzN2Y4MjJmYjY1NGNjNzljNjhkNTU1M2Y1MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xNDIsNiArMTQy
LDU0IEBAIHByaXZhdGU6CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCitjbGFzcyBKSVRE
ZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAg
dXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVERl
bEJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKKyAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1Bh
dGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5r
QnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZl
cik7CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJp
dmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsK
K307CisKK2NsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IgeworICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1
YmxpYzoKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVREZWxCeUlkR2Vu
ZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQ
YXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5t
X2p1bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYg
ZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisg
ICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6Cisg
ICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCiBj
bGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJs
aWM6CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBlMzYyNjczMjVjNzRhZTIyZjg2MThlYTllMmFk
MDAyZTQ4ZGM2MzM0Li43YmRmMWY3MzJiZjRlMDVkOWI4NTY5NmVmNDY4NDdmM2I1NjEwNzZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIxNDIs
NyArMjE0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2VuZXJpYyhnbG9iYWxPYmplY3Qs
IGluZGV4LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkp
KSk7CiB9CiAgICAgCi1zdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUgYmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yMTUwLDMx
ICsyMTUwLDUxIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICghYmFzZU9iaikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKSk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
VWlkKHZtLCB1aWQpLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
VW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9
CiAKLQotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNS
ZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVCeUlkKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlk
KSkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VW
YWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRlQnlJZChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgdWlkKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGlmICghcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpKQor
ICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xv
dCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgKnN0dWJJbmZvLCBEZWxC
eUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gZGVsZXRlQnlJZChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSks
IHVpZCk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIGRlbGV0ZUJ5
SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpLCB1aWQpOwogfQogCi1zdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVl
IGJhc2UsIEpTVmFsdWUga2V5KQorc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUga2V5KQogewogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE5MCw3ICsyMjEwLDcgQEAg
c3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgIGVsc2UgewogICAgICAgICBJZGVudGlmaWVyIHBy
b3BlcnR5ID0ga2V5LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VP
YmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eSk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90
KTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlm
ICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
CkBAIC0yMTk4LDIwICsyMjE4LDQyIEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYKICAgICByZXR1
cm4gY291bGREZWxldGU7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXkpCitzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkp
KSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKworICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFz
ZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpOworCisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeVZh
bChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKwor
ICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0Nh
Y2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkgfHwgIXBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmco
dm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAg
ICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1
ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3Jt
YWxCeVZhbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEtleSkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBkZWxl
dGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSk7CisgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRTdWJzY3JpcHQpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBj
dXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3RWYWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjIxMGM1YTA3MzQxOTY4M2Q2MGVh
OGM0OGNkNDNlZWZmODJhMzAwYy4uNjAwZmNhMjlkYzIwMzg1ZGM1MDIyMjgwMjU0MTEyY2FjMzFk
Njg0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI1
MSwxMCArMjUxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVk
UHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZfSU5URVJO
QUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jl
c3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdl
dCkgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlW
YWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QpIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgSlNP
YmplY3QqIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldFBOYW1lcyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRl
eCBhYmY1MmY3MTNlOGFhMGFmYjVlODA1YzdjZjNmMWQzODgzNzFjMmY2Li4yYmEwZmE2ODQ4YmNl
ODI5YWNkNjQxOTA1ZjA1ZjRiZDU0ZGNiZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMzg3LDkgKzM4NywzOSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIGludCBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJl
Z1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOworICAg
IEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZWdUMCwgcmVnVDIpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
KyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZGVsQnlJZHMuYXBw
ZW5kKGdlbik7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fY29kZUJsb2NrLT5pZGVudGlm
aWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmltcGwoKTsKKworICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwg
cmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBk
c3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIG1f
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgdWlk
KTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCisg
ICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpA
QCAtMzk4LDkgKzQyOCw0MiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9
IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7
CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKKyAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocHJvcGVydHksIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDAsIHByb3BlcnR5KTsKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDAs
IHJlZ1QyKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKKwor
ICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wRGVsQnlWYWw+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2Rl
Lm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAg
IFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisKKyAgICBK
SVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4Kytd
OworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCByZWdUMSk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpT
UmVzdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
cmVnVDAsIHJlZ1QxKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpT
VmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFs
dWVSZWdzKHJlZ1QwKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDVjYzdkZjlj
NTQxODljN2NiM2Q0MDkxYjVjNGY0YzhiZGFlZWYxNGMuLmI2NjlkZDhiN2FkMjZkM2Y3N2Q5Njg2
ZGU2MDgzNDM0ZjM2ZGJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTIzLDcgKzEyMyw5IEBAIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGludCBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEs
IHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdCwg
ZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2st
PmlkZW50aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qs
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzMsOSAr
MTM1LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3Bl
cnR5OwogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywg
cmVnVDIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwg
ZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxw
dHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikp
OworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsK
IH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9Cit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpIHsgfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCmluZGV4IDA4Njk2YjFmM2E0OGZjYWI2N2RmZGYxZDA4MTkyNWUzNGQ5MWI3
NjUuLmYxYmI2YTA0YTYzYjJiYjAxN2U4MmQ3ZmZiMzQ5MTRhNThkNTA4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNjQxLDcgKzY0MSw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxv
Y2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKKyAgICAgICAgICAgICAgICBuZXdD
YXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBpZGVudCwg
b2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkg
ewogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewpAQCAtNzM0LDYg
KzczNCw3MyBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHBy
b3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCitzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisK
KyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlKTsKKyAg
ICAgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSB8fCAhb2xkU3RydWN0dXJlLT5wcm9wZXJ0
eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKKworICAgICAgICBpZiAoIXNsb3QuaXNDYWNoZWFibGVEZWxldGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBuZXdDYXNlOworCisgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKKyAgICAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5l
d09mZnNldCk7CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUt
PnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAg
ICAgQVNTRVJUKG5ld09mZnNldCA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAg
IEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQodm0pID09IG9sZFN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0
aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQpKTsKKyAgICAgICAgICAg
IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywgQ2FjaGVh
YmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3
U3RydWN0dXJlKTsKKyAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkgeworICAgICAgICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKKyAgICAgICAg
ICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vz
c0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0
eU5hbWUpLCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzLCBDYWNoZWFibGVJZGVudGlm
aWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxs
cHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nh
c2UobG9ja2VyLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CisK
KyAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIHByb3Bl
cnR5TmFtZSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJT
dHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1
cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVM
YXRlcjsKK30KKwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1
ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQp
Cit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisg
ICAgaWYgKHRyeUNhY2hlRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VW
YWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZl
VXBPbkNhY2hlKSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdl
bmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgcHJv
cGVydHlOYW1lKSk7CisgICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAg
ICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7
CisgICAgfQorfQorCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpT
T2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwKICAgICBib29sIHdhc0ZvdW5k
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
QEAgLTEzOTEsNiArMTQ1OCwxNSBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
IH0KIAordm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIGlmIChraW5kID09IERlbEJ5
S2luZDo6Tm9ybWFsKQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplKTsKKyAgICBlbHNlCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkIHJlc2V0UGF0
Y2hhYmxlSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXgg
NmYwZjI2NDExZWNkZWExOTJiNzA2MjEwZThhOTk0NGJiNGY5ZmUzOS4uYzFkOTk1OWFkYWZkMzY1
NzYyZTg5MTc5YWIzYzBlZWQ2NmU1ODdkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKQEAgLTQxLDkgKzQxLDE1IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBEaXJlY3QK
IH07CiAKK2VudW0gY2xhc3MgRGVsQnlLaW5kIHsKKyAgICBOb3JtYWwsCisgICAgTm9ybWFsQnlW
YWwKK307CisKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJik7
CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUs
IENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
UHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKK3ZvaWQgcmVw
YXRjaERlbEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90
JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0
YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1
ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxp
bmtGb3IoVk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVj
dCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpAQCAtNTMs
NiArNTksNyBAQCB2b2lkIHVubGlua0ZvcihWTSYsIENhbGxMaW5rSW5mbyYpOwogdm9pZCBsaW5r
UG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZv
JiwgQ2FsbFZhcmlhbnQpOwogdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsK
IHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlvbkNh
bGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2Fs
bGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggYjkxMWVlMjc4MjYyNjZjNzNmNzZlMDk1NTQyYWRjNjU5MjUwOGM2ZS4u
MGU2MjMzNmRkMDNlZTEwZjdiOGY5N2I2N2NmMzQ2MGFiMjdkZTc0MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC05MjUsNyArOTI1LDgg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wRGVsQnlJZD4oKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJvb2wgY291bGREZWxldGUg
PSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
LCBzbG90KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikp
OwpAQCAtMTEwOCw3ICsxMTA5LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Rl
bF9ieV92YWwpCiAgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhdXRv
IHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAg
ICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICB9CiAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGZm
YjNlYjlkMDA1Y2Y2ZmQwOGZmZDJiYjg4YjlkNTg3YmFlZDBmZjYuLjEwN2I1ZDYwNzIwMzcwNTFm
NmE3YzFlOWNiMGMxNWYyNjU4OTc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaApAQCAtNDIsNiAr
NDIsNyBAQCBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVhYmxlSWRlbnRpZmllcihj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogCiBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Q2FjaGVhYmxlSWRlbnRpZmllcihKU0NlbGwqIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJU
KGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoaWRlbnRpZmllcikpOwogICAgIHNldENlbGxCaXRz
KGlkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCmluZGV4IGZlNmM2YjdkODRjNDdlZGVlMTFhYWMxMWY2NDg0YTcyZDQxN2JjNDYuLjdhNTli
OGZkYjBjMjJjY2JiZDI4ZDgwMzFkYThhMTdlZTA1MzcyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCkBAIC01OSw3ICs1OSw3IEBAIHN0cnVjdCBNZXRob2RU
YWJsZSB7CiAgICAgdXNpbmcgUHV0QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwogICAgIFB1dEJ5SW5kZXhGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5U
UlkocHV0QnlJbmRleCk7CiAKLSAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyID0g
Ym9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHVz
aW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgRGVsZXRl
UHJvcGVydHlGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZGVsZXRlUHJvcGVydHkpOwog
CiAgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IGM0Zjc0YzBjMzkwODg5
MDE0ODVlZTNkMmIxZDVmNWFhYWMxOWQ4N2QuLjhkZGQ5OGExYmZiMGZlYzE1YTdkNzMyYWNjM2My
Y2VmODVkMDQwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xv
bmVkQXJndW1lbnRzLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRz
OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50
LCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBpZGVudCkKK2Jvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIENsb25lZEFyZ3VtZW50cyogdGhpc09iamVj
dCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CkBAIC0yMjksNyArMjI5LDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpCiAg
ICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vzc2FyeShnbG9iYWxP
YmplY3QpOwogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiB9CiAKIGJvb2wgQ2xvbmVk
QXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKaW5kZXggZmQzYTI3YmY3MzU1NGQ1
ZWU0YTZlMzFkMGJhMGNhZDE1NzYwNWZmNS4uMDBjNTM0NzU2MDVhNzNiMmIzZWIzOGQzY2Y4MTMy
ODgzNGZmMWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xv
bmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAKICAgICBi
b29sIHNwZWNpYWxzTWF0ZXJpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApp
bmRleCAwZTJiYzNhMjcxOWMyYTkzNTNlN2Q3NTIxYTg3OWJkMTJkNzQwMDY5Li4xZGU4MjM5NTA5
ZTBjOGQ3YTU2YTMyNDE0ZmZlOGE3NGE5Yjc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTk4NSw3ICs5ODUsOCBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgY291bGRE
ZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNs
b3QpOwogICAgIH0KICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGFkNmY2YjQ4MDBlZjU3ODU2MWNhZWRjOWRkYmJjODJmMjUzMmU2MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCkBA
IC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgorI2luY2x1
ZGUgIlByb3BlcnR5U2xvdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK2NsYXNzIERlbGV0
ZVByb3BlcnR5U2xvdCB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIDogdWludDhfdCB7IFVuY2Fj
aGVhYmxlLCBEZWxldGVIaXQsIENvbmZpZ3VyYWJsZURlbGV0ZU1pc3MsIE5vbmNvbmZpZ3VyYWJs
ZSB9OworCisgICAgRGVsZXRlUHJvcGVydHlTbG90KCkKKyAgICAgICAgOiBtX29mZnNldChpbnZh
bGlkT2Zmc2V0KQorICAgICAgICAsIG1fY2FjaGVhYmlsaXR5KENhY2hpbmdBbGxvd2VkKQorICAg
ICAgICAsIG1fdHlwZShVbmNhY2hlYWJsZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRD
b25maWd1cmFibGVNaXNzKCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IENvbmZpZ3VyYWJsZURl
bGV0ZU1pc3M7CisgICAgfQorCisgICAgdm9pZCBzZXROb25jb25maWd1cmFibGUoKQorICAgIHsK
KyAgICAgICAgbV90eXBlID0gTm9uY29uZmlndXJhYmxlOworICAgIH0KKworICAgIHZvaWQgc2V0
SGl0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IERlbGV0
ZUhpdDsKKyAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgYm9vbCBpc0Nh
Y2hlYWJsZURlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgbV90eXBlICE9
IFVuY2FjaGVhYmxlOyB9CisgICAgYm9vbCBpc0RlbGV0ZUhpdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBEZWxldGVIaXQ7IH0KKyAgICBib29sIGlzQ29uZmlndXJhYmxlRGVsZXRlTWlzcygp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDb25maWd1cmFibGVEZWxldGVNaXNzOyB9CisgICAg
Ym9vbCBpc05vbmNvbmZpZ3VyYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBOb25jb25m
aWd1cmFibGU7IH0KKworICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBkaXNhYmxl
Q2FjaGluZygpCisgICAgeworICAgICAgICBtX2NhY2hlYWJpbGl0eSA9IENhY2hpbmdEaXNhbGxv
d2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0FsbG93ZWQ7IH0KKworICAgIFByb3BlcnR5
T2Zmc2V0IG1fb2Zmc2V0OworICAgIENhY2hlYWJpbGl0eVR5cGUgbV9jYWNoZWFiaWxpdHk7Cisg
ICAgVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjE4MjFk
NTU2YTNkNDA0NDkzNjc1ZWFlMjVmYTJlNDY2NzNlYzQzYS4uNjg1YzdhY2JjMTFjNjJkMjMzNzdk
MzJjNGRlOWEyMGI2NTg3OGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBFcnJvckNv
bnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU4KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JDb25zdHJ1Y3Rv
cjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgRXJyb3JDb25zdHJ1Y3Rvciog
dGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CkBAIC05NSw3ICs5
NSw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQpCiAgICAgICAgIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKIAotICAgIHJl
dHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgK
aW5kZXggOTNkNTI3MTQ4NmY2NmZkZTc1M2U0OWE0MDE2ZjE2ODM4ZTk3NTcyMS4uOWE1YTQ2MzIx
YjNkYmI3NjRjMmExYjUyMWQ5MjY4ZjhkMTQzNTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaApAQCAtNDksNyArNDksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEVycm9yUHJvdG90eXBlKik7CiAK
ICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKIHByaXZhdGU6CiAgICAgRXJyb3JDb25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBmZDQ4YmJmMzRjMzA0MzBkMmU3MGRlNTc0OThlOWI1
MWU2YWMyNDRkLi4xZDUwY2QxNzRmYzQ3ZDkyMjE3MTg4ZTMyNWZmNTdhZThkMTViODFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAt
Mjk3LDEyICsyOTcsMTIgQEAgYm9vbCBFcnJvckluc3RhbmNlOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKLWJvb2wgRXJyb3JJbnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgRXJyb3JJbnN0YW5jZSogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckluc3RhbmNlKj4o
Y2VsbCk7CiAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVFcnJvckluZm9JZk5lZWRlZCh2bSwg
cHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5oCmluZGV4IGYxZmFjNTk2ODJkOWUwMjY1MDhjYjRmZjhjOWIyNjdiNGVl
NzZlODcuLjQwMDYwOGQwOGE4MzRjZDMxZTYxMmU3M2FiNTMxY2IwYTNjYTExZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKQEAgLTk5LDcgKzk5
LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGdldFN0cnVjdHVyZVByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
LCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICB2
b2lkIGNvbXB1dGVFcnJvckluZm8oVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4IGNlMTBmN2ZlNDg3M2U0YTQ3YmUxNDFl
MjU1NjlhZDY0OGFmZjlkMjguLjQ3MTIxNjczMDM2NDgyOGZlMjc3MGUyMzQ4NjlhY2U3MDkwOGQx
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1
bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1l
bnRzLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGdldE93
blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IGI4Mzdl
YzFiYjQzMGY2ZDU4YjFkNWIxMTVkYTUxM2M1YmNjMGJmNTMuLmE1YTllY2IzMjJhMjBkYThmZTI0
MzNmZmQ1NDdhNzhhZmM2MDJjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtMTM5LDggKzEzOSwxMCBA
QCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBybwogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1
aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwg
c2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgcmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4KQEAgLTE1OCw3ICsxNjAsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUeXBlPgotYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBpZGVudCkKK2Jvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBUeXBlKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC0xNzUsNyArMTc3LDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCiAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgKmluZGV4KSk7CiAKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3Qp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggMDM0ODdmNjFlMGYyZmM3NTFiYTcwM2I3MGNh
MzZkMDIyMjE2MzRkZS4uNjAxZjFlNDlmMTVjZDUwMWEwZTBhNzVlZTI4NTA2ZjMyYjBkYjNhMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIHNldFBy
b3RvdHlwZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxz
ZTsgfQogCiBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9nZXR0ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDZkMDc1OTE3MTFl
ZWRiYzI4ZTBlNGRhNzg0OTgyMmFiOGQ2NmY1ZDEuLmJjZTM2NTVhMzE5MmVhMjkwZmU3ZjA0MDgy
NGEzODg2ZjZiMDQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKLWJvb2wgSlNBcnJheTo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fy
cmF5Kj4oY2VsbCk7CkBAIC0zMTQsNyArMzE0LDcgQEAgYm9vbCBKU0FycmF5OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnQK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFyZUtleXNGb3JRU29ydChjb25zdCB2b2lk
KiBhLCBjb25zdCB2b2lkKiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CmluZGV4IDMxMTY1YjVmZjQ5MjU0Y2MxYTZjNDc5MDJiNzkxMGFjNGE3ZDliZmYuLmNkYzM5YjUx
MmQ3ZWUzYTE1Y2YxYWVjMmUwYTJkOTNkOWFhYWQwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKQEAgLTE4Miw3ICsxODIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBmZTAxODBkZDYwYzNk
MWJiNjBmOGI1MzNiMTg2MDU4ZWVhZDgxYjc1Li41ODZhZjNmYWIzNzk1MmUzZmRlMWNlNDcwYzk5
YWIxZWRjNGE3NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXNzZW1ibHlI
ZWxwZXJzOworY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90OwogY2xhc3MgSlNCaWdJbnQ7CiBjbGFz
cyBDYWxsRnJhbWU7CiBjbGFzcyBKU0NlbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcAppbmRleCAyNzEzNTJiMjE3NDcwMzU2ZGY0MDNmZGQ5Y2RlNjBkZWY4ODgxNjA3
Li4wZTY3Zjg2Njc2ZDU4NjVhYTg4ZjA0ZjM1YWRhNzQzMjFlMDJjZjA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTEyNiwxMCArMTI2LDEwIEBAIGJvb2wg
SlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgaWRlCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudGlm
aWVyKQorYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGds
b2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllcik7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2Jh
bE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
aWRlbnRpZmllciwgc2xvdCk7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBp
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBkNTY1
NmY4YmZkZmY2MzI5OTJhYzFkYTQ1MWUzNWMxYTU0OGQ0NjdlLi44YTQ4NTBhNmVhMDM4OTc3MzBi
OGVhZjE0Y2JhZjU2NDNlNDc1ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaApAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXRCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBib29sIHB1dElubGluZShKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggMTQ2YTkxMzJkNDczNTI0MmMxMDZlNjU1
NjQ3NzhlMTdlZDdiYWI4Yy4uMWIyNTUyM2M5OGZiYjA5ZTM3ZjhhNDc0MzE5YmY3NmMzMmQ4YThi
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAg
LTE1Miw3ICsxNTIsNyBAQCBib29sIEpTRGF0YVZpZXc6OmRlZmluZU93blByb3BlcnR5KAogfQog
CiBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAotICAgIEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAg
ICBKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0RhdGFWaWV3Kj4oY2VsbCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBKU0RhdGFWaWV3
OjpkZWxldGVQcm9wZXJ0eSgKICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPmJ5dGVPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBKU0RhdGFWaWV3OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmgKaW5kZXggODY0MTBlNjFhZDdlOTFkODJhNjdlOTdlZmJiNGYzMmYxYmMxMmU3OC4u
OThhOGNjOGIzOThmZmRkN2ExYzk0YmU2NTdmNjU1ZTZjYzdiOWY3MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaApAQCAtNzIsNyArNzIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCmluZGV4IGVlODVlZTA2NDZjOWRkYWY5ZTZlOTdhZjE3YjlmOWMwMzc3ZDE4
ZTAuLjhiOGQ1MDY1MzZlNTNmOTI4YmMzNjlkMmViZmQ1YTYzMGIwODZiODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01ODYsNyArNTg2LDcg
QEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKIH0KIAotYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCitib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02MTcsNyArNjE3
LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3AKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgIH0KICAgICAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogfQog
CiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCBhZGRkZTJh
YzAzYTQxMGM3MDhhNzkzNGI1YTVkMDY4OWNhMWZmYWNkLi4xOGFiNDc1NDNmZDc4Mjk3OGFmZWE5
NzJjOGM5YWM2ZDg3MDJjYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGYwOGY4NTI0NjliZWZkNmM1YWQ0
M2FmMmE1MDA5MmJlZWZlMmIzOWEuLjNiN2JiZGU3NjVjZTFjMzU2NTUwZWNkNThiNzdmZWQ5ZDYx
MDZmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggMGNhZmJkMjc2Y2Y3NGQwYzg1ZWY4
YmU3ZGJlNDAzZDNjNzY0YjM0Mi4uNThmYmI1NzU2MmI3MTAwNzllNjUxNDBmN2UwOWU3MDgwNDhm
YTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQzOCw3ICs0MzgsNyBAQCBi
b29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWZpbmVPd25Qcm9wZXJ0eSgK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAotICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKyAgICBKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtNDUwLDcgKzQ1MCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmRlbGV0ZVByb3BlcnR5KAogICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkBAIC00ODQsNyArNDg0
LDggQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KAogICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKLSAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShj
ZWxsLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOwor
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bSh2bSwgcHJvcGVydHlOYW1lKSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggYjNjOTgwYTQ2NjJhZWVlYTEyNDBhNTY2YzVkNGExOGE5Mjg3MWY3ZS4uMGY4OTAz
MDBiZWI3ODRjNzE3OWE4NzNmYWNmY2IyYTg0ZDBjOWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTMxNCw3ICsxMzE0LDgg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgIG1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIG1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIGFkZEds
b2JhbFZhcihwcm9wZXJ0eU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKaW5kZXggZjM0NWM1MDI3YWJh
OTQwODQ0NzFlMzFiN2I4ZDdlZTJhMmY4ODcxMy4uOTc0YjkyYjU0ZTFhMzM4MzE2OWRlZmFiMmE5
YTdkZGU2NDZkYTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcApAQCAtMTI3LDEzICsxMjcsMTMgQEAgYm9vbCBK
U0xleGljYWxFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGUKICAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0T3duRGF0YVByb3Bl
cnR5KGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAK
LWJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IGQwMTNiNTFlZmEyOTdlYmYwM2Nh
NDI0MDAxN2E2N2FjYzEzYjkzOTcuLjA1ZTRlNjVjMmRkNDkzZmY3YTRlMzFhNDgyNmI3MGMyNTBj
NTc5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCmluZGV4
IGZlYjU1MTA4NzQ4MDM5MGQzNDA5ZTZjYWE5NDgwMGI3MjlmN2M3M2QuLjg1OGE5NDJmZTczNTVj
ZjhjMTE4MDVhOGQwNWUwNjUzZjhhMjE4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcg
QEAgYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKIH0KIAotYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9
PSBBYnN0cmFjdE1vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCmluZGV4IGRhZWFiNjYyZmMwNGRhYmRkMjZk
MTQxNDVmMzZlYjE3ZTI3OTJhNzkuLjAxMzBmODdmYjk4YmIyYTgyZGFhMjlhNTk2MzUyZTcxOWJi
N2VmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKIHByaXZhdGU6
CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1i
b2xUYWJsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCmluZGV4IDJiZGIxMzA1ZWIwYzRiZTk2MDgwNjVi
ZDM0ODU5YzdhZjE0OGIyYTEuLjFmYzZhMjY1YjhjYTY1YWQxMTkwMmY1ZDAxM2VkNjVkODY1NjE4
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTE5OSwxMiArMTk5LDEyIEBAIGJvb2wgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRlbGV0ZS1w
CiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9s
KCkpCi0gICAgICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAogICAgIHJldHVybiAhdGhpc09iamVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5
TmFtZS51aWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAppbmRleCA4ZWVmNjIxZTNiODRmYTY2MjhjZmEy
ZjgxNGRhNjI4ZjA2Nzg3ZDFkLi44MTEzNjRkZDE3YTEzZTdlZmJmY2YxYzllMjg2MzBlMjQyYTcx
MjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcAppbmRleCBkMGQxNzIxY2YxZGViODMzZjljYjAxZTJiZjMyMWIwNmVkNDE5NmM5Li5l
ZGEyZDYyMzUwOTllZDMwMWJiMGFlMTE0NTE0ZjMyZTE1NGNiNjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtNzU5LDkgKzc1OSwxMCBAQCBO
RVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAg
ICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAgICAgICAgICAgICAg
ICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIob2JqZWN0LCBqc1N0cmluZyh2
bSwgcHJvcC5zdHJpbmcoKSksIG91dFZhbHVlKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVl
LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9wKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3AsIHNsb3QpOworICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0
KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3AsIGZpbHRlcmVkVmFsdWUsIHNsb3QpOwogICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAg
ICAgICAgaW5kZXhTdGFjay5sYXN0KCkrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCAzYTUxMjFkNjlkZmI0ZmIyZmI5Zjg4NWNhN2ZmM2ZlNTVjMDRk
ZDgwLi42YjBlNzZmMWMxZWUyNTY2NGRjMjc4ODQyNjRjYmRiZGI0ZGI2ZmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xOTcyLDcgKzE5NzIsNyBA
QCBib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgcHJvcGVydAogfQogCiAvLyBFQ01BIDguNi4yLjUKLWJvb2wgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTk5OSw4ICsxOTk5LDEwIEBAIGJvb2wgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVyCiAKICAgICBib29sIHByb3BlcnR5SXNQcmVzZW50ID0gaXNWYWxpZE9m
ZnNldChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSk7CiAgICAg
aWYgKHByb3BlcnR5SXNQcmVzZW50KSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06
OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKQorICAgICAgICBpZiAoYXR0
cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlICYmIHZtLmRlbGV0ZVByb3Bl
cnR5TW9kZSgpICE9IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSkg
eworICAgICAgICAgICAgc2xvdC5zZXROb25jb25maWd1cmFibGUoKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOwog
CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC0yMDA4
LDcgKzIwMTAsOSBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgICAgICAgICAgb2Zmc2V0
ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0
eU5hbWUsIFtdKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0NlbGxMb2NrZXImLCBQcm9wZXJ0eU9m
ZnNldCwgUHJvcGVydHlPZmZzZXQpIHsgfSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
c3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKLSAg
ICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSAmJiAhc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmpl
Y3QpKSB7CisgICAgICAgICAgICBzbG90LnNldEhpdChvZmZzZXQpOworICAgICAgICAgICAgaWYg
KCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJl
KHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRl
cih0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1
dHRlcmZseSk7CiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNl
dEJ1dHRlcmZseSh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7CiAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAgICAgICAgICAgICBBU1NF
UlQoc3RydWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKQEAgLTIwMjAsNyAr
MjAyNCw4IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAKICAgICAgICAgaWYgKG9mZnNldCAh
PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgdGhpc09iamVjdC0+bG9jYXRpb25Gb3JPZmZz
ZXQob2Zmc2V0KS0+Y2xlYXIoKTsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHNsb3Quc2V0
Q29uZmlndXJhYmxlTWlzcygpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDMwLDggKzIw
MzUsMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihj
ZWxsKTsKICAgICAKLSAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpKSk7CisgICAgaWYgKGkgPiBNQVhf
QVJSQVlfSU5ERVgpIHsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSksIHNsb3QpOworICAg
IH0KICAgICAKICAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nTW9kZSgpKSB7CiAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CkBAIC0zNjI1LDcgKzM2MzIsOCBAQCBib29s
IHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqCiAgICAgLy8gQSBnZW5lcmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5
IGNoYW5naW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CiAgICAgaWYg
KGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3VycmVu
dC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYgb2JqZWN0KSB7Ci0gICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBwdXREZXNj
cmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRl
c2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsK
ICAgICAgICAgfQpAQCAtMzY0MSw3ICszNjQ5LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Kgog
ICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihnbG9iYWxP
YmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJp
YnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQpAQCAtMzY2
NSw3ICszNjc0LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihn
bG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9y
LmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQpA
QCAtMzcxOCw3ICszNzI4LDggQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlw
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KgogCiAgICAgR2V0dGVy
U2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnZXR0ZXIsIHNldHRlcik7CiAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICB1bnNpZ25lZCBhdHRycyA9
IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAgIG9i
amVjdC0+cHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRl
clNldHRlciwgYXR0cnMgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNjUxMTYwYmUwYjAxNzg3MGNlOTA5
NmJmOTJhNTVkY2YwZTZjZGJiZS4uNmJkYTllMWUwN2U3OThmYjkyMzQ4Mzc3MmYwN2I3ZjZjZGMw
MTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiQ3VzdG9tR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVk
ZSAiRGVsZXRlUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIklu
ZGV4aW5nSGVhZGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAtNjIzLDcgKzYy
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBib29sIGhhc093blByb3BlcnR5KEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQpIGNvbnN0OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKaW5kZXggOWM0NzkzNGU0YTNkOTE5OWZh
OTg0MmRkMDUyY2U4OGQyNDE1MmFjMS4uZDBiYmMyYzVhMmQyMjE5MTI3Y2Q5OWIzMDIwOTMwODg3
MjEyM2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKQEAg
LTkxLDEwICs5MSwxMCBAQCBib29sIEpTUHJveHk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHRoaXNP
YmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWZpbmVP
d25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU1Byb3h5OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50
YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNQcm94eTo6aXNFeHRlbnNpYmxlKEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmgKaW5kZXggMzUxZTY2OGQyNTkwZDliOTdjOGY0YmJhMmJm
ZmI0MDBkYjNmMjEwOS4uNWJlN2JmMGQyZTVhOGIzMmM3OTRjMGIyNTg5NTc5OGZjNWY5ZWY4YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaApAQCAtOTMsNyArOTMsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIFBy
b3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCA2MzBlMWI3OGJiMjA2ZTdh
ZjYxN2MzYzY4MmMzNGY1ZTE3NTVmNWQ1Li4xMjVmNmMzMTUwZTk2YWVjZDUzNzQ3MzFmZGE4ZDlh
N2JhZmJhMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIHZvaWQgSlNTeW1ib2xU
YWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwogfQog
Ci1ib29sIEpTU3ltYm9sVGFibGVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNTeW1ib2xUYWJsZU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRo
aXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6
OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAogdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCmluZGV4IGM3YzFlMjBhNjU0NzZiYzcwNjhlZTYzZGVkOThiMzM1ZGY3MzZiMjEuLmI1Njhl
OGY5MmE5ODNmYjRjYzIwM2E3YTA2MjE4MGFlNGZlNTkwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogCiAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQogICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlN5bWJvbFRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3ltYm9sVGFibGVP
YmplY3QsIG1fc3ltYm9sVGFibGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggYjY1MjAyMjFhODE1OThmZmVmMmE1ZTE0YTgwZmQ0ZTU0
ZGM2OWM2ZS4uYjA3ZTBhMDI5MzMyODI2MTAzNmY0MTEwNmVlZWU5ZTVmOTBjNjY2MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNjg1LDEy
ICs2ODUsMTIgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBQ
cm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgUHJveHlPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UHJveHlP
YmplY3QqPihjZWxsKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0RGVsZXRlID0gWyZdICgpIC0+
IGJvb2wgewogICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpc09iamVjdC0+dGFyZ2V0KCk7
Ci0gICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSkt
PmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxl
dGVQcm9wZXJ0eSh0YXJnZXQsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9OwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wZXJmb3JtRGVsZXRlKGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdERlbGV0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAppbmRleCAxN2NhMjlmYjBhM2ZkZGJhNzFlYjY4
MjQ5YzA5OWNhMjhhM2Q2MmVkLi5lZTViZDkwNThjZmE4MThhNDY3NGE1MjJiZjYwYTJjYTA5ZWFj
MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKQEAg
LTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
ICAgICBzdGF0aWMgYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgc3RhdGljIGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
Y3BwCmluZGV4IDQ2ZGNiNzUwNmRhNTcwZTRjOTdlYjkzYTA5YzAwNDgxYTUxNTM4MjcuLjFjZTFi
NGMzM2FhZjFhNDVkZjA3MjQxZjRkZDMwYzY3ZDY3YTJlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIGJv
b2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xv
dChvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotYm9vbCBS
ZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgUmVnRXhwT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sYXN0SW5kZXgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuaAppbmRleCA1ZTk5ZWIzOGI3MTNhOTQyNjM3MTkxYTg5ZjBiN2M5NmM1ZmJiNzE0Li44
NTdjYTJlNzJhZjM0MGVhZTM2NTcwMWQ1NWNhMDdlZDgzZTBiMTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgbV9yZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyA9
IChtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnIHwgbGFzdEluZGV4SXNOb3RX
cml0YWJsZUZsYWcpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdl
bmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKaW5kZXggNTE1NzUyNzY1ZWNi
MDJkMTljMDQwZTlmMjFiOTY0OWY3NTE3Yjk0Ny4uNTFkYmM2N2M1N2Y4MTU2MWZhNzhkMTk0ZWZh
ZjA0OWMwN2E4YWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBTdHJpY3RFdmFs
QWN0aXZhdGlvbjo6U3RyaWN0RXZhbEFjdGl2YXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNTY29wZQogewogfQogCi1ib29sIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgU3Ry
aWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBmYWxz
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2
YWxBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oCmluZGV4IGNkY2MyMWI3ZTVmYTdiMTA5NmIyNmQxODcwNzRjYmYxN2ViODNj
MjkuLjI0MTU0NWU4MTY5MzYyYmY2OTIwYTkxOWI4ZmUwZmRiYjdhMTAwNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzY29wZTsKICAgICB9CiAK
LSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDc3YjljYWZiM2Zh
MDA4ZjBmNzA1NjhiNmRiNmY0YTE1MTg2ZDA2ZS4uNDg2ZGQ5MjczYjc1MDU4YTQ3Zjc2OWEzZmNm
ODc3NWU2OTBjZDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0
aW9uKSk7CiB9CiAKLWJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCitib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihj
ZWxsKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcgogICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBp
ZiAoaW5kZXggJiYgdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRl
eC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgdW5zaWduZWQgaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKaW5kZXggYTM0MDU4MTc4OTM0ZDg1MjUwYWNiM2EzZTRkYTM1MmYyMjc4NjUyMy4uNjlm
MjZiN2Q3MjRiYmVmNzMyMzMxOTQ3ZTgwYjdjN2ZhZmNmOGQ0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNjRjODAwYjYx
OWE0OTc5NWFlYjBlMTQzNWQzYmI3ZjQ0NzEwOWViNy4uODMyY2U0NGFiZTRjYWFhNmI3NDJmZjlh
YjBlYzYwMGM3NDc2NDkwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCkBAIC01MzksOCArNTM5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZE5l
d1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm8KIAog
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9m
ZnNldCYgb2Zmc2V0LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSog
ZGVmZXJyZWQpCiB7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoCi0gICAgICAgIHZtLCBzdHJ1Y3R1cmUs
IHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZlcnJlZCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUgPSByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CiAgICAgaWYgKG5ld1N0cnVjdHVyZSkKICAg
ICAgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKIApAQCAtNTQ4LDE2ICs1NDcsMTMgQEAgU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQcm8KICAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBv
ZmZzZXQsIGRlZmVycmVkKTsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopCitTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
SW1wbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwog
Ci0gICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzKTsKLQogICAgIGNvbnN0ZXhwciBib29sIGlzQWRkaXRpb24gPSBm
YWxzZTsKKyAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgIGlmIChTdHJ1Y3R1cmUqIGV4
aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHByb3Bl
cnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcywgaXNBZGRpdGlvbikpIHsKICAgICAgICAgdmFsaWRh
dGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0aW5n
VHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5n
VHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNTY3LDExICs1NjMsMzEgQEAgU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZShWTSYgdm0sIFN0cnUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7
CisgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CisgICAgaWYgKHN0cnVjdHVyZS0+Z2V0Q29u
Y3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcykgPT0gaW52YWxpZE9mZnNl
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIG9mZnNldCk7Cit9CisKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0
JiBvZmZzZXQpCit7CisgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CisgICAgaWYgKHN0cnVj
dHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSwgYXR0cmlidXRlcykgPT0g
aW52YWxpZE9mZnNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ29uY3VycmVudEpT
Q2VsbExvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5jZWxsTG9jaygpKTsKKyAgICByZXR1cm4gcmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUs
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKwogU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7
CisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogICAgIEFTU0VSVCghc3RydWN0
dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQoc3RydWN0dXJlLT5p
c09iamVjdCgpKTsKLSAgICBBU1NFUlQoIVN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0LCBkZWZlcnJlZCkpOworICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShwcm9wZXJ0eU5h
bWUudWlkKCkpICE9IGludmFsaWRPZmZzZXQpOwogCiAgICAgaW50IHRyYW5zaXRpb25Db3VudCA9
IDA7CiAgICAgZm9yIChhdXRvKiBzID0gc3RydWN0dXJlOyBzICYmIHRyYW5zaXRpb25Db3VudCA8
PSBzX21heFRyYW5zaXRpb25MZW5ndGg7IHMgPSBzLT5wcmV2aW91c0lEKHZtKSkKQEAgLTEyMDMs
NyArMTIxOSw3IEBAIFJlZjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0cnVjdHVyZVNo
YXBlKEpTVmFsdWUgdmFsdWUsIGJvb2wmIHNhd1BvbHlQcm90CiAKIHZvaWQgU3RydWN0dXJlOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KFJhd1BvaW50ZXIo
dGhpcyksICI6WyIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKKyAgICBvdXQucHJp
bnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZv
aWQqPihpZCgpKSksICIsICIsIGNsYXNzSW5mbygpLT5jbGFzc05hbWUsICIsIHsiKTsKICAgICAK
ICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCmluZGV4IDUzODQ0YjkxYTZlZTlmMTQ2Y2Y4NDRkZDAwNTc1OGU2ZmNj
NzQ2MzUuLjMyMGE0N2E3YjgzNDU5YTJiOGQ5N2IyMWQ0NDU3YTE4MWFhMjhlZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisj
aW5jbHVkZSAiRGVsZXRlUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAtMTkyLDcg
KzE5Myw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJl
KiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBz
dGF0aWMgU3RydWN0dXJlKiByZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJv
dG90eXBlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlLCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5z
aXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSogPSBudWxscHRyKTsKQEAgLTUzMCw2ICs1MzIsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIAogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7Cisg
ICAgYm9vbCBtYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3Q7
CiAgICAgCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKIApAQCAtODExLDYgKzgxNCw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwo
U3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywg
UHJvcGVydHlPZmZzZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKIAogICAgIC8vIFRoaXMg
d2lsbCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0eSB0YWJs
ZSwgdGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3RydWN0dXJl
cyB0aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0dXJucyBhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5k
ZXggMjNkNzhmY2I5MTQyZjk1MDI3YmQ3MjdmODVjNGJkMTdmMGM5MTczMi4uM2RjMTdiNzMzNTk5
NGU4M2UxMTEwMmQwZTllY2FiMGQ2ZTQ5ODA1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjUyLDEwICsyNTIsMjMgQEAgaW5s
aW5lIGJvb2wgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqIGNlbGwp
IGNvbnN0CiAgICAgCiAgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUo
bV9ibG9iLnR5cGUoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1
cm4ganNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBXYXN0
ZWZ1bFR5cGVkQXJyYXk7CiB9CiAKK2lubGluZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4
aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0Cit7CisgICAgbXVzdENoZWNrQ2Vs
bCA9IGZhbHNlOworICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5
VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtdXN0Q2hlY2tDZWxsID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW5saW5lIGJv
b2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoKSAmJiBnbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDhiODQ2YmE1OWE1
MTNmOGFjNDVjY2Q2MGIyMjcyNTA4ZTFiYjcyYTguLjkxMjFiYzY2MDg5NGQyOTZmYmZhNGUwZDI4
Yzc4YTE4NmFmYTVhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JB
U0ggYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSkKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CkBAIC0yODUwLDYgKzI4NTAsMTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHkoSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNPYmplY3QqIHRhcmdldCA9IGFzT2JqZWN0KGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHRhcmdldCk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZnVuY3Rpb24tPmFyZU5hbWVBbmRMZW5ndGhPcmlnaW5h
bCh2bSkpKTsKK30KKwogdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7
CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTI5ODMsNiArMjk5Miw4
IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIGFkZEZ1bmN0
aW9uKHZtLCAiZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QiLCBKU0RvbGxhclZNSGVscGVyOjpm
dW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0LCAxKTsKICAgICBhZGRGdW5jdGlvbih2
bSwgImdldENvbmN1cnJlbnRseSIsIGZ1bmN0aW9uR2V0Q29uY3VycmVudGx5LCAyKTsKIAorICAg
IGFkZEZ1bmN0aW9uKHZtLCAiaGFzT3duTGVuZ3RoUHJvcGVydHkiLCBmdW5jdGlvbkhhc093bkxl
bmd0aFByb3BlcnR5LCAxKTsKKwogICAgIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91
dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqZWN0RG9pbmdTaWRl
RWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwganNOdWxsKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
U3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggY2I4ZDNiYjAzMDUy
ODkxMDhhOGQ4ODFmMDAyMzE0Njg0MzJmYWNmMC4uNDU4NWIxMDBhYzdkYTk0ODIxNGFkOGM4ZmZi
YjIxOTRhYWM3MGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBlIGNvdW50ID0gMSkKICAg
ICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgaWYgKCFjb3VudCkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVy
VHlwZT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CkBAIC01OCw2
ICs1OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBDb3VudGVyVHlwZSBnZXQoY29uc3QgVCYga2V5
KSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBj
b25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9
PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjYsOCArNjgsNiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXpl
KCk7IH0KICAgICAKLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7
IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIGNvbnN0
X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIGNv
bnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgCkBA
IC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGEgbGlzdCBvcmRlcmVkIGZy
b20gbG93ZXN0LWNvdW50IHRvIGhpZ2hlc3QtY291bnQuCiAgICAgVmVjdG9yPEtleUFuZENvdW50
PiBidWlsZExpc3QoKSBjb25zdAogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2sp
OwogICAgICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGxpc3Q7CiAgICAgICAgIGZvciAoY29uc3Rf
aXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikKICAgICAgICAg
ICAgIGxpc3QuYXBwZW5kKEtleUFuZENvdW50KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpKTsKQEAg
LTEwNiwxNyArMTA3LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgY2xlYXIoKSB7IG1fbWFwLmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFy
KCkKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9tYXAu
Y2xlYXIoKTsKKyAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAg
ICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAgICBM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fbWFwLnJlbW92ZUlmKFsmZnVuY3Rvcl0g
KHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBwYWly
KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5rZXks
IHBhaXIudmFsdWUpKTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAKIHByaXZhdGU6Cisg
ICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPiBtX21h
cDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAppbmRleCA0ZTAwOWZlZDZiZDBlMzExNTdjNjY0MDljN2IzNWZjYzdlZmYyMzIzLi5h
MzBjZWQxOWY4ZmMzZTJlNmQzYzQ0MTViNGE3NzlhNTBjOTBjOGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zMTIsMTMgKzMx
MiwxMyBAQCBib29sIEpTRE9NV2luZG93OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5k
ZXgodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRU
aHJvdyk7CiB9CiAKLWJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNET01XaW5kb3cqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93
IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggMWVmMDZjMjZlZTI1MmRlNjY4YzFkZWRlOTFj
NWRkZjZhMGRkZmRlNS4uODRiOWExM2UxOWVhMTg5ZGYzMDc0NzYwNjVkZDM3M2U1MWU0ZjY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAK
QEAgLTE2MywxMyArMTYzLDEzIEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1CiAgICAgcmV0dXJu
IEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2
YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0xv
Y2F0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxsKTsKICAgICAvLyBP
bmx5IGFsbG93IGRlbGV0aW5nIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCiAgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3cobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLndpbmRvdygpLCBUaHJvd1NlY3VyaXR5
RXJyb3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBlMmVlZGZk
NWIwYzVhYTcxODcwZGE3NjU0Mzk3ZTM1Yjk5YTgyY2FjLi4wY2I2N2VmMjljNjJiZjhjYzQ0NmEw
ZWNlMzFjOWZlNTM1MTU3YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wg
SlNSZW1vdGVET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCwgSlNWYWx1ZSwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNSZW1vdGVE
T01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUpCitib29sIEpTUmVtb3RlRE9NV2luZG93OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIFZNJiB2bSA9IGxleGlj
YWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCAwM2RkOWMxNjFhODM5OTEyZDQzOTM0MmQyNjViYzVmZDE1YjZhNDE2
Li5iN2NkMWZjYTQzOTljZTg5OTZhYWE2ZWNhNzk1MDczNmMwNTMyMzllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTMw
MSw3ICsxMzAxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKICAgICAjIFRoaXMgaW1w
bGVtZW50cyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0t
b2JqZWN0LWRlbGV0ZSBmb3IgdGhlCiAgICAgIyBmb3IgdGhlIGRlbGV0ZVByb3BlcnR5IG92ZXJy
aWRlIGhvb2suCiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ7XG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiB0aGlz
T2JqZWN0ID0gKmpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwpAQCAtMTMyMSw3ICsx
MzIxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKIAogICAgICMgRklYTUU6IEluc3Rl
YWQgb2YgY2FsbGluZyBkb3duIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSwgcGVyaGFwcyB3ZSBz
aG91bGQgaW1wbGVtZW50CiAgICAgIyB0aGUgcmVtYWluZWQgb2YgdGhlIGFsZ29yaXRobSBvdXJz
ZWx2ZXMuCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTtcbiIp
OworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogfQogCkBAIC0yNjk2LDcgKzI2
OTYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9CiAKICAgICBpZiAoSW5zdGFuY2VPdmVy
cmlkZXNEZWxldGVQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0
ZVByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkKTtcbiIpOwogICAgIH0KIApAQCAtNDMyNCw3ICs0MzI0LDgg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgIH0KQEAgLTc1MTIsNyArNzUxMyw4IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVj
dG9ySGVscGVyTWV0aG9kcwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEk
e3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0
cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgfVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcAppbmRleCBiNWVhNTQ4ZTFkMTI3MmUxODZkYjk0NGNlNjE5ODUwZjRmZDJlODA4Li5l
NjMzMjM5ZGFlZmNlZjA0MDljOGI0NjNiODcwZjY2YjgxMDVkNzVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0xMzcsNyArMTM3LDggQEAgdm9pZCBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJsZWRCeVNl
dHRpbmdPcGVyYXRpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCkBAIC0xNDUs
NyArMTQ2LDggQEAgdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJp
YnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogICAgIGlm
IChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA4MGZh
ZjM1MTA1NDdhMmFkZTc3Y2I3ZWM5NWIyOTE5MmQ5MDFhYTQ5Li5lZjY2MDMzNGUzMTgxYjY3ZGU1
MjRiM2QzNWRmMTY1NjRmNjU2YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCkBAIC0xMDgsNyArMTA4LDggQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
YVNlY3JldEF0dHJpYnV0ZSIpLCBzdHJsZW4oImFTZWNyZXRBdHRyaWJ1dGUiKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkp
CiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggYmZmNGMzYjA5ZGE1OTQxYmZm
NzFkY2RiYjM4NTI1NDhhMDBjM2YxZC4uODc4M2UxNWMyODEzNzY2MzRmZGM3NWRlZmZjODVkZGE5
NjU0ODlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5jcHAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvCiAgICAg
SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3Qg
PSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBpZiAoaXNWaXNpYmxlTmFtZWRQ
cm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQ
cm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9Ci0gICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2Vs
bCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBK
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBp
bmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAppbmRl
eCAwZWE0YmIxMWI4NjA1MzAxMTY1N2ZkNmVhNjNmMjQ2ZDRkODJlNTBhLi4xMzhkNGMxOGY4ZjQ2
YmMzNDMzMTA5YmQwMzIzOTU2MzdkMGFjMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJh
dGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IDc5NGQ1OTc2ZjEzZjA3MThiNGNlZTUx
NjMzODMwY2NkMzBmMWMzMzMuLjU3OWYyYTBlNmE4YzdhOTI1NTYxOWQ4NDQ1MjZiYThkZGIyZGFh
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwKICAg
ICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8m
IHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
Kj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwpAQCAtMjA0
LDcgKzIwNCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAKICAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCA3
OTFiZTE4MmViMWIzNjk2OTIxZGU5NzY5NTI3MjlmMGI0ZjBiMzRhLi4wNTVkM2RmOTIzODE4YzAw
NzY3ZjE4OTVkZjY3MjVmNWJjMGVkZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6
RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiMzM3NmUzYTlmZTUyYjhhMGE2ZDNk
NDA1YTZhYWZlYzQxYmNmMDg3Li4yNTAyM2EzMWExNDY0MjI4N2EwYjFiNTBkZGY0ZGY0NjE5ZGRm
MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTRwogICAgIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVj
dCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqPihjZWxsKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamUKICAgICAgICAgaW1wbC5uYW1lZERlbGV0ZXIocHJvcGVy
dHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
dW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllci5oCmluZGV4IDU0ZTAyNTQ3OGUxZGMzOTkwNzA3MzNlNDk5YjAxNjMxNDkwMTI0OWUu
LmE4NThhMjcxNTRiZDNjNjM2NGZjNDVhNjQ3ZmY0MmI2YjQ3MjUwNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IGU4ZDk3
NDE5YWZhNWQ5YWU2OGRhMDRlYTU0MWVhYmY1MGQ0Nzg3MzYuLmY2ZjM2NmUyMjJlNDE0NGE3NGI2
Mzc1NGZiZDA3ODk4Zjk4YjY2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQorYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAg
ICAgaWYgKGlzVmlzaWJsZU5hbWVkUHJvcGVydHk8T3ZlcnJpZGVCdWlsdGluczo6Tm8+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHJl
dHVybiBpbXBsLmRlbGV0ZU5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSk7CiAgICAgfQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2Vs
bCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKaW5kZXggYTk5NDViYWZjNjExNDNlNTc2
ZmZkNjBmZWM4ZWVlNjk2NGI5ZjAzMC4uMmZlYThkOTBmNGY0YTE4NDJjOGUxOTJhZjM1ZDg1Yzdk
MTg2ODllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9
IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
OjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDExMDBhYTNjZWMwYjFlMTBmNzkwNzMwYWY1
MTMwOTcwMDYwMGI5NWUuLjFmYjNmMWJlYThkYWYyZjBkMDllMjk2YzU4N2ZmZTA0NzA4NjNmZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAKQEAgLTE1Nyw0NSArMTU3LDUyIEBAIHZvaWQgSlNUZXN0Tm9kZVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNhbGN1bGF0
ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICgh
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZ2V0
U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdldFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxl
ZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIp
LCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxl
ZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW50cmllcyIpLCBzdHJsZW4oImVudHJpZXMiKSk7
CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0
b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJrZXlzIiksIHN0cmxlbigia2V5cyIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVy
YXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0g
dHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInZhbHVlcyIpLCBzdHJsZW4oInZh
bHVlcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5k
b21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZvckVhY2giKSwgc3Ry
bGVuKCJmb3JFYWNoIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAg
ICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICB9CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVj
dCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDRjMTA3MTAxMzEwOWI1ZmVlY2I0MzI1NzE0ODQwNjkyZDg5
MDZmMjEuLmY1Njg0MzI0YTY2N2JhOTZkZTc1MzYwODE4NzNkMjUyMGFhOGU1MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC0xOTg0LDE0ICsxOTg0LDE2IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPYmpDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iCiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJl
RW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50
aW1lQXR0cmlidXRlU3RhdGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0
YXRpYyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH0KICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3Rh
dGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpKTsKICAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgJmdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICNlbmRpZgogfQpA
QCAtMjM0Nyw5MCArMjM0OSwxMDQgQEAgdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYg
KCEod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNvbWVXb3JsZCgpICYmIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVu
YWJsZWQiKSwgc3RybGVuKCJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJl
RW5hYmxlZCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogICAgIGlmICghd29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNvbWVXb3JsZCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigid29ybGRTcGVjaWZpY01ldGhvZCIpLCBzdHJsZW4oIndvcmxk
U3BlY2lmaWNNZXRob2QiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIpLCBzdHJsZW4oImNh
bGN1bGF0ZVNlY3JldFJlc3VsdCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4
dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZ2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oImdl
dFNlY3JldEJvb2xlYW4iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICghKGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxl
ZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
InRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiIpLCBzdHJsZW4oInRlc3RGZWF0dXJlR2V0U2Vj
cmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9u
IiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uIikpOwogICAg
ICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIiksIHN0cmxlbigiY29uZGl0
aW9uYWxseUV4cG9zZWRUb1dvcmtlckZ1bmN0aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlz
U2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFsbG93c01lZGlhRGV2aWNlcygpKSkgewog
ICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIm1lZGlhRGV2aWNlcyIpLCBzdHJsZW4oIm1lZGlhRGV2aWNlcyIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
ICAgIGlmICghKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKXx8IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5o
YXNTZXJ2aWNlV29ya2VyU2NoZW1lKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigic2VydmljZVdv
cmtlcnMiKSwgc3RybGVuKCJzZXJ2aWNlV29ya2VycyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiAgICAgaWYgKCEoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0
RmVhdHVyZUVuYWJsZWQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnRlc3RGZWF0dXJlMUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1l
UHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVk
QXRSdW50aW1lQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
I2VuZGlmCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicnVudGltZUNvbmRp
dGlvbmFsbHlSZWFkV3JpdGVBdHRyaWJ1dGUiKSwgc3RybGVuKCJydW50aW1lQ29uZGl0aW9uYWxs
eVJlYWRXcml0ZUF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNj
b3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
OwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkg
ewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1
dGUiKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlIikpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAg
aWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpLCBzdHJsZW4oImNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdu
b3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICAvLyBBZGRpbmcgYmFjayBh
dHRyaWJ1dGUsIGJ1dCBhcyByZWFkb25seSwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHJlYWQtd3JpdGUg
dmFyaWFudCBhYm92ZS4gCiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29i
amVjdC5jcHAKaW5kZXggZmVlYmRlZjdiYzQ1ZTk4YzkzMDhmZGZiZGUxMTBiOTlmZGRkY2EyYy4u
MzJjMTNiOWViNDA3MDgzNWViMjU4MzcxOTZkNzgzMjU4YWM1OTczMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC0zOTEsOCArMzkxLDkgQEAgYm9vbCBfTlBOX1JlbW92
ZVByb3BlcnR5KE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKICAgICAgICAgaWYgKGktPmlzU3RyaW5nKCkpCi0gICAgICAgICAgICBvYmotPmltcC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgaWRlbnRpZmllckZyb21OUElkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgaS0+c3Ry
aW5nKCkpKTsKKyAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iai0+aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRl
bnRpZmllcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSksIHNsb3QpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgob2JqLT5pbXAsIGxleGljYWxHbG9iYWxPYmplY3QsIGktPm51bWJlcigpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4
IDIyZjBiOGQ5ZDhmYWU0YTc5YzZiNjMxZTkzNWNiNmFkYzdkOTRmZmYuLmRiYzZkM2IxZTE5Zjlj
MjFkOWI2MGMxN2VkZmY5NzE2MDA2N2MwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTQ1Nyw4ICs0NTcsOSBAQCAtICh2b2lkKXJlbW92
ZVdlYlNjcmlwdEtleTooTlNTdHJpbmcgKilrZXkKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgSlND
OjpEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKIAotICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmcoa2V5KSkpOworICAgIFtzZWxmIF9pbXBd
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9pbXBdLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBTdHJpbmcoa2V5KSksIHNsb3Qp
OwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBhZGRF
eGNlcHRpb25Ub0NvbnNvbGUobGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5oCmluZGV4IDVlZDIxZjEzNGVmNGFhYjVkYzBjNTVhNDVk
ZTZhNjNkMjdjNmJlMmUuLjYyMjk2MzY4ZWJiOTBjNTBiOWRlN2ZhMDc4MmM5YzZmYTI4NTkxOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShj
b25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7
CiAKICAgICBib29sIHRvQm9vbGVhbihKU0dsb2JhbE9iamVjdCopIGNvbnN0OyAvLyBGSVhNRTog
Q3VycmVudGx5IHRoaXMgaXMgYnJva2VuIGJlY2F1c2Ugbm9uZSBvZiB0aGUgc3VwZXJjbGFzc2Vz
IGFyZSBtYXJrZWQgdmlydHVhbC4gV2UgbmVlZCB0byBzb2x2ZSB0aGlzIGluIHRoZSBsb25nZXIg
dGVybS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCAx
OWVkMTljYmM3YWUzZWU0Njc3OTZiMTAzY2JmZTc2MTYwOWFkNzMwLi42ZTg3N2QyZWI3ZjQ0ZDAz
YTI4ZTE3MTA4M2JkM2QwZjBiYjk4ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgQ2FsbFR5cGUgT2JqY0ZhbGxiYWNr
T2JqZWN0SW1wOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkK
ICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKLWJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSkKK2Jvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikKIHsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAK
aW5kZXggNGQyOTdjNzBkNmIxYjZjMWFmODhmOTE0YmU4NWY2MGRmMDNjYzliMS4uZWMzNTg4ZmM1
NjU5NTUzZjUyNzI4M2M1OGE3MzU4MDIxMzI5YWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgUnVudGltZUFycmF5Ojpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVB
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUpOwogfQogCi1ib29sIFJ1bnRpbWVB
cnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpCitib29sIFJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXggZmNmNWUz
M2ZiMTE0MDE4NTEwNzk5MzBmYmQxMTc2MTM1NDUyYzdlNi4uMjk4MTJhNjZkNmYwMTI0ZTM4MzYy
NWY5NTYwMTljYTMzYmMzYmQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5o
CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAKICAgICB1bnNpZ25lZCBnZXRMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5nZXRMZW5ndGgoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggYTAzNmI2NjYyZDQ4NzJmNjhkYzUyNjQ1YmEx
YWYyYmExNTMzMDMyZC4uOWQ1ZDYwZGVmMzU3NTRiZTFlMGUwNjIwZTQxZWRiOThlZmUzOWVlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0yMDAsNyArMjAw
LDcgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1i
b29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lKQorYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JikK
IHsKICAgICAvLyBDYW4gbmV2ZXIgcmVtb3ZlIGEgcHJvcGVydHkgb2YgYSBSdW50aW1lT2JqZWN0
LgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgK
aW5kZXggNmNiZjdiZjc5NmIwYTg5NDA0Yjk0MjI3NWQ2NTFlNjBlNzMyNDU4Mi4uM2MxMGQ4YmQ1
MGYzYjdkYWE0ODQyMjE0YjllMDRmMDQzYWZkZjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAppbmRl
eCAyZWZiMjI1MjNmOTIxZTkyYWJkMDIxNmViMGNkMWZmZDEwMDM2MmJlLi4wNWQxMjkyOTM5NTgy
ZjA0YzQzMmQzMGMxNDJkYmE1ZGFhMGJmMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcApAQCAtMzYxLDcg
KzM2MSw3IEBAIGJvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxKU05QT2JqZWN0Kj4o
Y2VsbCktPmRlbGV0ZVByb3BlcnR5KGxleGljYWxHbG9iYWxPYmplY3QsIG5wSWRlbnRpZmllckZy
b21JZGVudGlmaWVyKHByb3BlcnR5TmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCmluZGV4IDg1NTg4OTQ5
YTMwNjA0YzY5Zjc3Y2NjM2Y2MGU1NDY5NzdmZmFjNmQuLjQ4MDNjMGJjNTcxZjk3N2RkYzI3MjJi
YmFiOTZiNmQyN2MyYTljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0ds
b2JhbE9iamVjdCosIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApp
bmRleCAzNmYyOGVlNmZiMDEwMmQ4YzE3NzEzYzYwOGI2MTRlYWY4NWRkYjc2Li44YjlmY2RmMzA4
NTJkMWQyMjJhNWIzYmQ1OTA2ZGE0YmFmZTQzYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcApAQCAtMjI5
LDggKzIyOSw5IEBAIGJvb2wgTlBKU09iamVjdDo6cmVtb3ZlUHJvcGVydHkoTlBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fanNP
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmll
ciwgc2xvdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2pzT2JqZWN0LT5oYXNQcm9w
ZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSkpIHsKICAg
ICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAzMmFmYTI4MGZhOTI3ZDg3NzMyMGViODFjYmQ5MDcx
MDI1NTk3ZS4uMTJjZTQwOWM1NDNjMjI4ODIyNzcxOWIyZDQxMDhiZjJhODc5ZDQ5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTE0MSw4ICsxMTQxLDkg
QEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJlbW92ZVByb3BlcnR5KHVpbnQz
Ml90IG9iamVjdElELCBjb25zdCBJZGVudGkKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwog
ICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCAxNDZhNzU1YWQ5ZjkzMmIxYjUxNzI5Y2E0MDZmYzRmMThlOTdl
Mjc1Li5hNTg0NTU2YTJjMDg3NzE0N2NkOTQ1MWIzYjhjMDU0NDE0MjU0YTAzIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYz
IEBACisyMDIwLTAyLTIxICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNv
bT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRlIGJ5IGlkL3ZhbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVs
ZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzOgorICAgICAgICAoZGVsZXRlLkMu
cHJvdG90eXBlLnopOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6Cisg
ICAgICAgIChhc3NlcnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChub0lu
bGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEudGVzdFBv
bHltb3JwaGljRGVsQnlWYWwubWFrZUZvbzYpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5v
SW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLnRlc3RQb2x5bW9ycGhpY0RlbEJ5
VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToKKyAgICAg
ICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRk
ZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFz
c2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5h
c3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNz
ZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5v
SW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lu
bGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5t
YWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURl
bGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURl
bGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MubWFrZUZvbzQpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKToKKyAg
ICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1z
dHJ1Y3R1cmUuanM6CisgICAgICAgICogc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2Fj
aGUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6Cisg
ICAgICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKGFzc2VydF90aHJvd3MpOgorICAgICAgICAo
bm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5v
SW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6Cisg
ICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2Vy
dF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlWYWwubWFrZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RD
YWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28z
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVh
YmxlRW1wdHlEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0
eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURl
bGV0ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
TWlzcy50ZXN0RGVsZXRlSW5kZXgubWFrZUZvbzUpOgorICAgICAgICAobm9JbmxpbmUudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHltb3JwaGljRGVsQnlWYWwubWFrZUZvbzYpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxl
dGVCeVZhbC5tYWtlRm9vNyk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxC
eVZhbC50ZXN0QmlnaW50RGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdEJpZ2lu
dERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxldGVCeVZhbC5tYWtlRm9vOCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJvbERlbGV0ZUJ5VmFsKToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xEZWxldGVCeVZhbC50ZXN0T2JqRGVsZXRlQnlWYWwu
bWFrZUZvbzkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLnRlc3RP
YmpEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVz
dFN0cmljdC5tYWtlRm9vMTApOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iakRlbGV0ZUJ5VmFs
LnRlc3RTdHJpY3QpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN0cmljdC50ZXN0T3ZlcnJpZGUu
YXJyLmopOgorICAgICAgICAobm9JbmxpbmUudGVzdFN0cmljdC50ZXN0T3ZlcnJpZGUpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdE92ZXJyaWRlKToKKwogMjAyMC0wMi0xOSAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgQ29tcHV0ZWQgUHJvcGVydGll
cyB3aXRoIGluY3JlbWVudCBzb21ldGltZXMgcHJvZHVjZXMgaW5jb3JyZWN0IHJlc3VsdHMKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXBy
b3RvdHlwZS1jaGFpbi5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0
eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwppbmRleCA0OWEzMWI3ZjI0N2MxYmQwYWNhODJjYjIy
ZGYyMGU4ZjFiZjYxYmRkLi41NGJiYTgyZTY5OWM2MmNjY2E4OTQ1MTZlNjJiN2U2Y2ExZjUxMjAy
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJv
bS1wcm90b3R5cGUtY2hhaW4uanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCkBAIC0xLDQgKzEsNCBAQAotLy9AIHNr
aXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpz
Yy1zdHJlc3MtdGVzdC5weQorLy9AIHNraXAgaWYgJG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCiBm
dW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICghYikKICAgICAgICAgdGhyb3cgbmV3IEVycm9y
OwpAQCAtMjgsNyArMjgsNyBAQCBmdW5jdGlvbiBkb1Rlc3QoelZhbCkgewogfQogbm9JbmxpbmUo
ZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgewogICAgIGNvbnN0IFggPSB7IGkgfQogICAgIEMucHJvdG90eXBl
LnogPSBYCiAgICAgZG9UZXN0KFgpCkBAIC0zNiw3ICszNiw3IEBAIGZvciAobGV0IGk9MDsgaTwx
MDAwMDsgKytpKSB7CiAKIGRlbGV0ZSBDLnByb3RvdHlwZS56CiAKLWZvciAobGV0IGk9MDsgaTwx
MDAwMDAwOyArK2kpIHsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDAwMDsgKytpKSB7CiAgICAg
Z2V0Wih7ejogaX0pCiAgICAgZG9UZXN0KHVuZGVmaW5lZCkKIH0KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBo
aWMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNh
Y2hlLXBvbHltb3JwaGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2Yjg2ZDU1YTE5ZjljMDllNTBkZTFiZDU2
Mzk0ZGE1MTBlNGM3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBvbHltb3JwaGljLmpzCkBAIC0wLDAgKzEs
NDEgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdhdGNoLworCitmdW5jdGlvbiBD
KHByb3ApIHsKKyAgICB0aGlzW3Byb3BdID0gNAorICAgIGRlbGV0ZSB0aGlzW3Byb3BdCit9Citu
b0lubGluZShDKQorCitmdW5jdGlvbiBmb28obywgcHJvcCkgeworICAgIGRlbGV0ZSBvW3Byb3Bd
Cit9Citub0lubGluZShmb28pCisKK2Z1bmN0aW9uIEYocHJvcCkgeworICAgIHRoaXNbcHJvcF0g
PSA0CisgICAgZm9vKHRoaXMsIHByb3ApCit9Citub0lubGluZShGKQorCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgbmV3IEMoImZvbzEiKQorICAgIG5ldyBGKCJmb28x
IikKKyAgICBuZXcgQygiZm9vMiIpCisgICAgbmV3IEYoImZvbzIiKQorICAgIG5ldyBDKCJmb28z
IikKKyAgICBuZXcgRigiZm9vMyIpCisgICAgbmV3IEMoImZvbzQiKQorICAgIG5ldyBGKCJmb280
IikKKyAgICBuZXcgQygiZm9vNSIpCisgICAgbmV3IEYoImZvbzUiKQorICAgIG5ldyBDKCJmb282
IikKKyAgICBuZXcgRigiZm9vNiIpCisgICAgbmV3IEMoImZvbzciKQorICAgIG5ldyBGKCJmb283
IikKKyAgICBuZXcgQygiZm9vOCIpCisgICAgbmV3IEYoImZvbzgiKQorICAgIG5ldyBDKCJmb285
IikKKyAgICBuZXcgRigiZm9vOSIpCisgICAgbmV3IEMoImZvbzEwIikKKyAgICBuZXcgRigiZm9v
MTAiKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9w
ZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwODYzYzY0MWE5YTc5ZGVjOWZlMTQ3
YTk1YTgzZWVjNzNmZjNjOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSwzNSBAQAorLy9A
IHNraXAgaWYgJG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCisKK2Z1bmN0aW9uIEMoKSB7CisgICAg
dGhpcy54ID0gNDsKKyAgICBkZWxldGUgdGhpcy54Cit9Citub0lubGluZShDKQorCitmdW5jdGlv
biBEKCkgeworICAgIGRlbGV0ZSB0aGlzLngKK30KK25vSW5saW5lKEQpCisKK2Z1bmN0aW9uIGZv
byhvKSB7CisgICAgZGVsZXRlIG8ueAorfQorbm9JbmxpbmUoZm9vKQorCitmdW5jdGlvbiBFKCkg
eworICAgIHRoaXMueCA9IDQKKyAgICBmb28odGhpcykKK30KK25vSW5saW5lKEUpCisKK2Z1bmN0
aW9uIEYoKSB7CisgICAgZm9vKHRoaXMpCit9Citub0lubGluZShGKQorCitmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBuZXcgQworICAgIG5ldyBECisgICAgbmV3IEUK
KyAgICBuZXcgRgorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcwppbmRl
eCA3Nzk1ZGM1ODE1NzhlNGMzOTgxYzIyYWM4NzZjNDU1NDEzZTY0ZDNjLi5hOTM5YWFlM2FjOGFj
Y2MyMjE0ZGQ3ZTdkODAyNDQyMWE4MTY0NWQ5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qcworKysg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxl
LXN0cnVjdHVyZS5qcwpAQCAtMjQsNSArMjQsNSBAQCBmdW5jdGlvbiBkb1Rlc3QoKSB7CiB9CiBu
b0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDAwMDA7ICsraSkgZG9UZXN0
KCkKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgKytpKSBkb1Rlc3QoKQogCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5z
aXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJl
LXRyYW5zaXRpb24uanMKaW5kZXggNDAzYzdjMDljYzEyM2YzYjE4NTQ2ODBiNmMxN2RkNDU2YTVk
ZWYzMS4uYTRiYTFlNDRkYWM4YTlhMzMxZGUwM2IwNTM1ZTM5MjQ5M2U2NWMxMSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVjdHVyZS10cmFuc2l0
aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1
cmUtdHJhbnNpdGlvbi5qcwpAQCAtMTIsNiArMTIsOSBAQCBmdW5jdGlvbiBhc3NlcnRfbmVxKGEs
IGIpIHsKICAgICBpZiAoYSA9PT0gYikKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRp
b24gZmFpbGVkOiAiICsgYSArICIgIT09ICIgKyBiKTsKIH0KK25vSW5saW5lKGFzc2VydCkKK25v
SW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEpCiAKIGZ1bmN0aW9uIHNkKG9i
aikgewogICAgIGxldCBkYXRhID0gJHZtLmdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0KG9iaikK
QEAgLTMxLDYgKzM0LDggQEAgZnVuY3Rpb24gc2lkKG9iaikgewogICAgIGxldCBkYXRhID0gc2Qo
b2JqKQogICAgIHJldHVybiBkYXRhW2RhdGEubGVuZ3RoLTFdLmlkCiB9Citub0lubGluZShzZCkK
K25vSW5saW5lKHNpZCkKIAogZnVuY3Rpb24gdGVzdERlbGV0ZUlzTm90VW5jYWNoZWFibGUoaSkg
ewogICAgIGxldCBmb28gPSB7fQpAQCAtNjIsNiArNjcsNyBAQCBmdW5jdGlvbiB0ZXN0RGVsZXRl
SXNOb3RVbmNhY2hlYWJsZShpKSB7CiAgICAgYXNzZXJ0X2VxKCR2bS5nZXRDb25jdXJyZW50bHko
Zm9vLCAiYmFyIitpKSwgMSkKICAgICBhc3NlcnQoZm9vWyJiYXIiICsgaV0gPT09IDEpCiB9Citu
b0lubGluZSh0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZSkKIAogZnVuY3Rpb24gdGVzdENhbk1h
dGVyaWFsaXplRGVsZXRlcyhpKSB7CiAgICAgbGV0IGZvbyA9IHt9CkBAIC0xMDAsNiArMTA2LDgg
QEAgZnVuY3Rpb24gdGVzdENhbk1hdGVyaWFsaXplRGVsZXRlcyhpKSB7CiAgICAgYXNzZXJ0X2Vx
KGRhdGFbZGF0YS5sZW5ndGgtMl0ucHJvcGVydHksICJiYXIiICsgaSkKIH0KIAorbm9JbmxpbmUo
dGVzdENhbk1hdGVyaWFsaXplRGVsZXRlcykKKwogZnVuY3Rpb24gdGVzdENhbkZsYXR0ZW4oaSkg
ewogICAgIGxldCBmb28gPSB7fQogICAgIGZvciAobGV0IGo9MDsgajw1MDA7ICsraikgewpAQCAt
MTMxLDYgKzEzOSw3IEBAIGZ1bmN0aW9uIHRlc3RDYW5GbGF0dGVuKGkpIHsKICAgICAgICAgICAg
IGFzc2VydF9lcSh2YWwsIHVuZGVmaW5lZCkKICAgICB9CiB9Citub0lubGluZSh0ZXN0Q2FuRmxh
dHRlbikKIAogZnVuY3Rpb24gdGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSgpIHsKICAgICBPYmpl
Y3QucHJvdG90eXBlLmdsb2JhbFByb3BlcnR5ID0gNDIKQEAgLTE3NSw2ICsxODQsNyBAQCBmdW5j
dGlvbiB0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKCkgewogCiAgICAgZG9UZXN0KHVuZGVmaW5l
ZCkKIH0KK25vSW5saW5lKHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUpCiAKIHRlc3REZWxldGVX
aXRoSW5saW5lQ2FjaGUoKQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJv
cGVydHktaW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWlu
bGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzUzZTAxMjE2ZGYwYzNmOGU2MmE2OTg0ZWZiMmE0
YjdmY2Y2OTI3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDU0NiBAQAorLy9AIHJ1bkRlZmF1bHQoIi0t
dXNlQmlnSW50PXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYg
KCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIp
OworfQorCitmdW5jdGlvbiBhc3NlcnRfZXEoYSwgYikgeworICAgIGlmIChhICE9PSBiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiA9PT0gIiAr
IGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfbmVxKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIgIT09
ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmdW4pIHsKKyAgICBsZXQgdGhy
ZXcgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW4oKQorICAgIH0gY2F0Y2ggeworICAg
ICAgICB0aHJldyA9IHRydWUKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KQorfQorbm9JbmxpbmUo
YXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKK25vSW5s
aW5lKGFzc2VydF90aHJvd3MpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkg
eworICAgIGZ1bmN0aW9uIG1ha2VGb28oKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAg
ICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vLmJh
egorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28pCisKKyAg
ICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9
IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAg
IGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9v
KS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZv
by5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVn
IiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkgeworICAg
IGZ1bmN0aW9uIG1ha2VGb28yKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9v
LmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0K
KyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMikKKworICAg
IGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBhcnJbal0gPSBtYWtlRm9vMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9
IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAg
IGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9v
KS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZv
by5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVn
IiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFi
bGVEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgp
IHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAg
ICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShk
ZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0
dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMykKKworICAgIGFyciA9IG5ldyBB
cnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBh
cnJbal0gPSBtYWtlRm9vMygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShP
YmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEK
KyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAz
CisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgi
YmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgIH0KK30K
K25vSW5saW5lKHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RD
YWNoZWFibGVEZWxldGVCeUlkTWlzcygpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNCgpIHsKKyAg
ICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIg
PSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNz
ZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZv
by5iYXosIHRydWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2Jh
cicsIHsKKyAgICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxz
ZQorICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxz
ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uZm9vYmFyLCBmYWxzZSkKKyAgICAgICAg
YXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAg
IG5vSW5saW5lKG1ha2VGb280KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb280KCkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5i
YWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29b
ImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0K
K30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcykKKworZnVuY3Rpb24gdGVz
dERlbGV0ZUluZGV4KCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb281KCkgeworICAgICAgICBsZXQg
Zm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAg
ICAgZm9vWzBdID0gMjMKKyAgICAgICAgZm9vWzFdID0gMjUKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvb1sxXSwgdHJ1
ZSkKKyAgICAgICAgZGVsZXRlIGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAg
ICBub0lubGluZShtYWtlRm9vNSkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNSgp
CisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNv
bnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxl
bmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0
KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZv
by5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChm
b29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
ICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBhc3NlcnRfZXEoZm9vWzBdLCAy
MykKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgdW5kZWZpbmVkKQorICAgICAgICBmb29bMV0g
PSAxCisgICAgICAgIGFzc2VydF9lcShmb29bMV0sIDEpCisgICAgfQorfQorbm9JbmxpbmUodGVz
dERlbGV0ZUluZGV4KQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKSB7Cisg
ICAgZnVuY3Rpb24gbWFrZUZvbzYoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBm
b29bImJheiIraV0gPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29b
ImJheiIraV0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9v
NikKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwg
NTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vNigpCisgICAgfQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQor
CisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0
LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkK
KyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAg
ICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAz
KQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCkKKworZnVuY3Rpb24gdGVzdEJpZ2ludERlbGV0ZUJ5
VmFsKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb283KCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXSA9
IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1sxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbl0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0K
KyAgICBub0lubGluZShtYWtlRm9vNykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9v
NygpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAg
ICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2Vy
dCghKDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuIGluIGZvbykpCisg
ICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAg
IGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykK
KyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRl
c3RCaWdpbnREZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdFN5bWJvbERlbGV0ZUJ5VmFsKCkg
eworICAgIGNvbnN0IHN5bWJvbCA9IFN5bWJvbCgnZm9vJyk7CisKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vOCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0gMQor
ICAgICAgICBhc3NlcnQoIShTeW1ib2woJ2ZvbycpIGluIGZvbykpCisgICAgICAgIGFzc2VydChz
eW1ib2wgaW4gZm9vKQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5
bWJvbF0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOCkK
KworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vOCgpCisgICAgfQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisg
ICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0Lmtl
eXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
U3ltYm9sRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RPYmpEZWxldGVCeVZhbCgpIHsKKyAg
ICBjb25zdCBzeW1ib2wgPSB7IGk6ICJmb28iIH07CisKKyAgICBmdW5jdGlvbiBtYWtlRm9vOSgp
IHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1tzeW1ib2xdID0gMQorICAgICAg
ICBhc3NlcnQoc3ltYm9sIGluIGZvbykKKyAgICAgICAgYXNzZXJ0KCEoeyBpOiAiZm9vIiB9IGlu
IGZvbykpCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQor
ICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb285KQorCisgICAg
YXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGFycltqXSA9IG1ha2VGb285KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAg
YXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28p
Lmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZv
by5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVn
IiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RPYmpEZWxl
dGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdFN0cmljdCgpIHsKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICBmdW5jdGlvbiBtYWtlRm9vMTAoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAg
ICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVs
ZXRlIGZvby5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1
ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAg
ICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAg
IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBmb28uZm9vYmFyKQorICAg
ICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9
CisgICAgbm9JbmxpbmUobWFrZUZvbzEwKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisg
ICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VG
b28xMCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQor
ICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFz
c2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2Vy
dChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3Nl
cnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICB9Cit9Citub0lubGluZSh0ZXN0U3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0T3ZlcnJpZGUo
KSB7CisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IGZ1bmN0aW9uKCkgeyB9CisgICAgICAgIGFzc2Vy
dF9lcSgkdm0uaGFzT3duTGVuZ3RoUHJvcGVydHkoYXJyW2pdKSwgdHJ1ZSkKKyAgICAgICAgZGVs
ZXRlIGFycltqXS5sZW5ndGgKKyAgICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNPd25MZW5ndGhQcm9w
ZXJ0eShhcnJbal0pLCBmYWxzZSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2Vx
KE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQor
ICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpd
ID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdE92ZXJyaWRlKQorCitmdW5jdGlvbiB0ZXN0Tm9uT2JqZWN0KCkgeworICAgIGZ1bmN0
aW9uIGRlbGV0ZUl0KGZvbykgeworICAgICAgICBhc3NlcnQoZGVsZXRlIGZvby5iYXopCisgICAg
ICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUoZGVsZXRlSXQpCisKKyAgICBhcnIg
PSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgYXJyW2pdID0geyBiYXo6IGogfQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3Nl
cnQoImJheiIgaW4gZm9vKQorICAgICAgICBkZWxldGVJdChmb28pCisgICAgICAgIGFzc2VydCgh
KCJiYXoiIGluIGZvbykpCisgICAgfQorCisgICAgYXNzZXJ0KGRlbGV0ZUl0KCJiYXoiKSA9PSAi
YmF6IikKKyAgICBkZWxldGVJdChTeW1ib2woImhpIikpCit9Citub0lubGluZSh0ZXN0Tm9uT2Jq
ZWN0KQorCitmdW5jdGlvbiB0ZXN0Tm9uT2JqZWN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIGZ1bmN0aW9uIGRlbGV0ZUl0KGZvbykgeworICAgICAgICBhc3NlcnQoZGVsZXRl
IGZvb1siYmF6Il0pCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUoZGVs
ZXRlSXQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0geyBiYXo6IGogfQorICAgIH0KKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJb
al0KKworICAgICAgICBhc3NlcnQoImJheiIgaW4gZm9vKQorICAgICAgICBkZWxldGVJdChmb28p
CisgICAgICAgIGRlbGV0ZUl0KDUpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisg
ICAgfQorCisgICAgYXNzZXJ0KGRlbGV0ZUl0KCJiYXoiKSA9PSAiYmF6IikKKyAgICBkZWxldGVJ
dChTeW1ib2woImhpIikpCisKKyAgICBsZXQgZm9vID0ge30KKyAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoZm9vLCAnYmF6JywgeworICAgICAgdmFsdWU6IDQyLAorICAgICAgY29uZmlndXJhYmxl
OiBmYWxzZQorICAgIH0pOworICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlSXQoZm9vKSkK
K30KK25vSW5saW5lKHRlc3ROb25PYmplY3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RFeGNlcHRp
b25VbndpbmQoKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rpb24gbXV0YXRlVGhl
bShhLGIsYyxkLGUsZixnLGgsaSkgeworICAgICAgICBnLmkgPSA0MgorICAgIH0KKyAgICBub0lu
bGluZShtdXRhdGVUaGVtKQorCisgICAgZnVuY3Rpb24gZGVsZXRlSXQoZm9vKSB7CisgICAgICAg
IGxldCBjYXVnaHQgPSBmYWxzZQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgYSA9
IHsgaTogMSB9CisgICAgICAgICAgICB2YXIgdiA9IHsgaTogMTAgfQorICAgICAgICAgICAgdmFy
IGIgPSB7IGk6IDEwMCB9CisgICAgICAgICAgICB2YXIgYyA9IHsgaTogMTAwMCB9CisgICAgICAg
ICAgICB2YXIgZCA9IHsgaTogMTAwMDAgfQorICAgICAgICAgICAgdmFyIGUgPSB7IGk6IDEwMDAw
MCB9CisgICAgICAgICAgICB2YXIgZiA9IHsgaTogMTAwMDAwMCB9CisgICAgICAgICAgICB2YXIg
ZyA9IHsgaTogMTAwMDAwMDAgfQorICAgICAgICAgICAgdmFyIGggPSB7IGk6IDEwMDAwMDAwMCB9
CisgICAgICAgICAgICB2YXIgaSA9IHsgaTogMTAwMDAwMDAwMCB9CisKKyAgICAgICAgICAgIG11
dGF0ZVRoZW0oYSxiLGMsZCxlLGYsZyxoLGkpCisKKyAgICAgICAgICAgIGRlbGV0ZSBmb29bImJh
eiJdCisKKyAgICAgICAgICAgIGEgPSBiID0gYyA9IGQgPSBlID0gZiA9IGcgPSBoID0gaQorICAg
ICAgICB9IGNhdGNoIHsKKyAgICAgICAgICAgIGFzc2VydF9lcShhLmksIDEpCisgICAgICAgICAg
ICBhc3NlcnRfZXEoaS5pLCAxMDAwMDAwMDAwKQorICAgICAgICAgICAgYXNzZXJ0X2VxKGcuaSwg
NDIpCisgICAgICAgICAgICBjYXVnaHQgPSB0cnVlCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGNhdWdodAorICAgIH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAgIGZvciAobGV0IGog
PSAwOyBqIDwgMTAwMDAwOyArK2opIHsKKyAgICAgICAgYXNzZXJ0KCFkZWxldGVJdCh7IGosIGJh
ejogNSB9KSkKKyAgICB9CisKKyAgICBsZXQgZm9vID0ge30KKyAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoZm9vLCAnYmF6JywgeworICAgICAgdmFsdWU6IDQyLAorICAgICAgY29uZmlndXJhYmxl
OiBmYWxzZQorICAgIH0pOworCisgICAgYXNzZXJ0KGRlbGV0ZUl0KGZvbykpCit9Citub0lubGlu
ZSh0ZXN0RXhjZXB0aW9uVW53aW5kKQorCitmdW5jdGlvbiB0ZXN0VERaKCkgeworICAgIGRlbGV0
ZSBmb28ueAorICAgIGxldCBmb28gPSB7IHg6IDUgfQorfQorbm9JbmxpbmUodGVzdFREWikKKwor
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxl
RW1wdHlEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorICAg
IHRlc3REZWxldGVJbmRleCgpCisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKKyAgICB0
ZXN0QmlnaW50RGVsZXRlQnlWYWwoKQorICAgIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpCisgICAg
dGVzdFN0cmljdCgpCisgICAgdGVzdE92ZXJyaWRlKCkKKyAgICB0ZXN0Tm9uT2JqZWN0KCkKKyAg
ICB0ZXN0Tm9uT2JqZWN0U3RyaWN0KCkKKyAgICBhc3NlcnRfdGhyb3dzKHRlc3RURFopCit9CisK
K3Rlc3RFeGNlcHRpb25VbndpbmQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391680</attachid>
            <date>2020-02-25 13:30:19 -0800</date>
            <delta_ts>2020-02-25 14:16:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200225133018.patch</filename>
            <type>text/plain</type>
            <size>221203</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YTM4MjY3ZDFiZGNhOGM1NWNhOTkzNWE1ZGY5MzMxZjk5MTE0MTc4Li4zNDM4MDVmYzZjOGUzNWZi
MWJkODdhYjM5M2U0MTczMjhkOTg1NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMjQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMy45MDk2eCBmYXN0
ZXIKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYyAgZGVm
aW5pdGVseSAxLjUyMzl4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90
b3R5cGUtY2hhaW4gICAgICAobmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxl
dGVQcm9wZXJ0eUZvcktleSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFt
ZU1hdGNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlBy
b3BlcnR5Q2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50
Q2VsbCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6bmV3U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5o
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6
CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVh
YmxlSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAg
KiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3Vt
ZW50czo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFi
bGVNaXNzKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1
cmFibGUpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3Mg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJh
YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNo
aW5nKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1
bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAg
IChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6Cisg
ICAgICAgIChKU0M6OnZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5Lmg6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAq
IHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0
aFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgor
CiAyMDIwLTAyLTI0ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIExMSW50IHNob3VsZCBmYXN0IHBhdGggZm9yIGp0cnVlL2ZhbHNlIG9uIFN5bWJvbHMg
YW5kIE9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggNDA3YTM4YWIwMDdhNTM2ZGVhMDk0YTQ1M2JmODAzNjQwNmUxNGY5
Zi4uZTg1ZDdiNjBkZTczNmMwMzAxMTYxODM3NmIwZDNkMmE0ZGVmYzFjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMC0wMi0yNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6
CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJ1aWxkTGlzdCBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpy
ZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpiZWdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVkLgorCiAyMDIwLTAyLTIzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gU2hyaW5rIFN0cnVj
dHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGUwZWVjMWQyZWIzNzYyNzZkYjU4ZmMyZDE4NGY4ZDk4MmEwZjIz
ZTYuLmE1N2M4ZWJkMGQwN2U5M2I2YzJlOTBhMzVjZGI0N2FlOTYzMjc4ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NSBAQAorMjAyMC0wMi0yNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJh
dGVEZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxw
ZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1
bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2Fy
cmF5Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAyMC0wMi0yNCAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3Ig
dGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDQ5MDgxZWM5YjY1MGY4Mzdk
MzlkY2Y0ZTNkYjkyODNmYTIxNmMzMy4uMWMzNTZjZjBlNDcyNmUwMjc4YWYwZTk4NjU0OTA4OWFj
NjVhMGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yNCAgSnVzdGluIE1p
Y2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hl
IGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KToKKwogMjAyMC0wMi0yNCAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQ
SSBmb3IgdGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCA4ZjUwN2E0OWI0Y2Y3Mzg3OGQzMGNmMjcyZjc0M2VjZmZhNzJlNjdkLi5kMDdjOTU2
NWMwNmRlOTA2NjgzZGMyM2RkMGQ2OTZkZjEwMjEyNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMjQgIEp1c3RpbiBNaWNoYXVkICA8anVz
dGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkg
aWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0eSk6CisK
IDIwMjAtMDItMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBzb21lIGluY2x1ZGUgbWlzdGFrZXMgYW5kIG1ha2Ugc29tZSBjb2Rpbmcgc3R5bGUgdHdlYWtz
IHRvIFdlYktpdCBhbmQgV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAwMzRiMzU3YzA3MzhlMzQ5MTI1ODg1OGQ3MDY5
ODlmZWZjYjQ4MzNkLi45MmNhOTI0Nzc5NjJiYzA0YzdhOGViODZhMWY0MTVkMmIxODdmMzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMjAy
LDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAKICAgICBz
dGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IGNkNTExYmZkMjg0YTAxMzI1MmE2NDA1YTY3MDdhYWQx
MzdhMWJjY2IuLjRiZWMzM2E3MmRjMjg0NzdhNjEzNTZmZGI5MjBhNDc2ODYyZWQ3MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIH0KIAog
dGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00MTgsNyArNDE4LDcgQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2IKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBAIC00MjYs
NyArNDI2LDggQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9w
ZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggZjdmOWRhYjNmMjhhZGMwZWFi
YjJiZGU4YjI1MDY3NzJhZDI1ZmZjZS4uOWRmODc4ZTU4OGZhMmFlZjA2MjJhYzY5NTg3ODFhYmU2
N2EzN2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAg
LTQ3OSw3ICs0NzksOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlGb3JLZXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUgogICAgIGlmIChoYW5kbGVF
eGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1
czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgcmVzdWx0ID0g
anNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaWRlbnQpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIGJvb2wg
cmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVl
ZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUz
NCw3ICs1MzUsOCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcgogCiAgICAgSlNPYmplY3QqIGpz
T2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCi0gICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgYm9vbCByZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZt
KSwgc2xvdCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0
aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDkxZTQyN2MzMGM1MTE2M2VkZDlmMTA2ZDQyZjk1ZTA5ZDAyYmU5YzQuLjc1NTZl
OTU2ZmM2MzJmN2UyYjlkMGUxYWRiZjdjYTgxZjhlOGYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTgxNSw2ICs4MTUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmgKICAgICBy
dW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgKICAgICBydW50aW1lL0RlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oCisgICAgcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaAogICAgIHJ1bnRpbWUv
RGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhZjQyYzJhZThmZTU5MmJmNmQ2ODI4NTM4OTc2ZDBjZjZkYTZkYjFmLi5mYjc0NTY1
MTdmOGY3NGM2OWYxYzlkNWJkYzIwMmM0ZjZlNDQxODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTE3OCw2ICsxMTc4LDcgQEAKIAkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5
IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJB
QUY3Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUFGN0NDMUQw
RDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi87IH07CisJ
CTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczNEI2NTU0MjNGNEEzMzEw
MEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1NjUgLyogQjNS
ZWR1Y2VMb29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oICovOyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyogV2FzbUNvbnRleHRJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjc5
NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkwMDgxMzkxRTk1QThFQzAw
NTJEN0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5NzEsNiAr
Mzk3Miw3IEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0NCMUQw
RDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQzFEMEQzMThCMDA1
RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQ
cm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlUHJv
cGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTkzMjJFMEVG
NEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBwYXRoID0gYjMvQjNSZWR1Y2VM
b29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5OTUyMkUw
RUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgcGF0aCA9IGIz
L0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03MDg0LDYgKzcwODYsNyBAQAogCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJD
N0U4MiAvKiBEYXRlUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdF
ODIgLyogRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAv
KiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywKKwkJCQk3MzRCNjU1NDIzRjRBMzMxMDBB
MDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8sCiAJCQkJMEZFMDUwMEYxQUE5MDkxMTAw
RDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJMEZFMDUwMTAxQUE5MDkxMTAw
RDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDBEMUFBOTA5MTEwMEQz
M0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuY3BwICovLApAQCAtOTIwOSw2ICs5MjEyLDcg
QEAKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJCNzNCQjFERUY4NjQ1MDAy
QzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzM0QjY1
NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVh
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2NjIsNyArMTA2NjYsNiBA
QAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYXR0cmlidXRlcyA9IHsKLQkJCQlCdWlsZEluZGVwZW5k
ZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CiAJCQkJRGVmYXVsdEJ1aWxkU3lzdGVtVHlwZUZv
cldvcmtzcGFjZSA9IE9yaWdpbmFsOwogCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsK
IAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBkZWY2NzUyOTM5YWU1NDlkODE5YjU2ZTg0MDM0
NDA4NTk4M2I1OWZlLi43Y2FiOWMxYjAzYjk1MzZhMGVjZTcyN2Q2YzUxMzYyMjdhYWM4N2QwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC03
Myw2ICs3Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIERlbGV0ZU5vbkNv
bmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5ndGg6CkBAIC0xMDYsNyArMTA4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zm
c2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFp
bikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0
aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAtMTIzLDYgKzEyNSwyMiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBUcmFuc2l0aW9u
LCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAorICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKHZt
KSk7CisgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgb2xkU3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNo
ZSB0aGlzIGNhc2Ugc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgor
ICAgICAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2RlIGJlbG93LgorICAgICAgICBib29sIG1heU5l
ZWRUb0NoZWNrQ2VsbDsKKyAgICAgICAgbmV3U3RydWN0dXJlLT5tYXlIYXZlSW5kZXhpbmdIZWFk
ZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKKworICAgICAgICBpZiAobWF5TmVlZFRvQ2hlY2tDZWxs
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBEZWxldGUsIGlk
ZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworfQorCiBBY2Nlc3ND
YXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CkBAIC0yNjIsNiArMjgwLDkgQEAgYm9vbCBBY2Nlc3ND
YXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2goKSBjb25zdAogICAgIGNhc2UgTG9hZDoK
ICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBhIGJ5X3ZhbCBmb3IgdGhlc2UgcHV0cywg
YnV0IHdlIGRvIGNhcmUgYWJvdXQgdGhlIGlkZW50aWZpZXIuCiAgICAgY2FzZSBUcmFuc2l0aW9u
OgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAg
IGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlzczoKICAg
ICBjYXNlIEdldEdldHRlcjoKQEAgLTMwOSw2ICszMzAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJl
cXVpcmVzSW50MzJQcm9wZXJ0eUNoZWNrKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fdHlwZSkgewog
ICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6Cisg
ICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAg
IGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAt
MzU2LDYgKzM4MCw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6bmVlZHNTY3JhdGNoRlBSKCkgY29uc3QK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFRyYW5zaXRp
b246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6Cisg
ICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZTogCiAgICAgY2FzZSBNaXNzOgog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtNDQ3LDYgKzQ3NCw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6
Zm9yRWFjaERlcGVuZGVudENlbGwoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25z
dAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6CiAgICAgY2FzZSBMb2FkOgogICAgIGNh
c2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNh
c2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTQ5Miw2ICs1MjIsOSBAQCBib29sIEFj
Y2Vzc0Nhc2U6OmRvZXNDYWxscyhWTSYgdm0sIFZlY3RvcjxKU0NlbGwqPiogY2VsbHNUb01hcmtJ
ZkRvZXNDYWxscykgY29ucwogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6CiAgICAgICAg
IGRvZXNDYWxscyA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGVsZXRlOgorICAg
IGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBj
YXNlIExvYWQ6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKQEAgLTYxNCw2ICs2
NDcsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UoY29uc3QgQWNjZXNzQ2FzZSYgb3Ro
ZXIpIGNvbnN0CiAKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNh
c2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVs
ZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0
R2V0dGVyOgpAQCAtNjYzLDcgKzY5OSw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJwcm90b3R5cGUgYWNj
ZXNzIGNoYWluID0gIik7CiAgICAgICAgIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3Ry
dWN0dXJlKCksIG91dCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFu
c2l0aW9uKQorICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERl
bGV0ZSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50
ZXJEdW1wKHN0cnVjdHVyZSgpKSwgIiAtPiAiLCBwb2ludGVyRHVtcChuZXdTdHJ1Y3R1cmUoKSkp
OwogICAgICAgICBlbHNlIGlmIChtX3N0cnVjdHVyZSkKICAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKG1fc3RydWN0dXJlLmdldCgpKSk7CkBA
IC03MDUsNiArNzQxLDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhT
bG90VmlzaXRvciYgdmlzaXRvcikgY29uc3QKIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAg
Y2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgogICAgICAgICBpZiAodmlzaXRvci52
bSgpLmhlYXAuaXNNYXJrZWQobV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQodmlzaXRvci52bSgpKSkp
CiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fc3RydWN0dXJlLmdldCgp
KTsKICAgICAgICAgZWxzZQpAQCAtMTg1MSw3ICsxODg4LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAg
ICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoc3BpbGxTdGF0ZSwg
cmVzdWx0UmVnaXN0ZXJUb0V4Y2x1ZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkpIHsKICAgICAgICAg
ICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAgICAgIHZhbHVlUmVncywKQEAgLTE4OTYs
NiArMTkzMyw3MSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2xvd1BhdGguZW1w
dHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYXNlIERlbGV0ZTogeworICAg
ICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdp
c3RlcnMpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKKyAg
ICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2so
YmFzZUdQUik7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOworICAgICAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRh
dGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmlzUHJvcGVydHlEZWxldGlv
blRyYW5zaXRpb24oKSk7CisgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHZhbHVlUmVncy5ncHIo
KSk7CisgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIpOworICAgICAgICBBU1NF
UlQodmFsdWVSZWdzLmdwcigpICE9IHNjcmF0Y2hHUFIpOworCisgICAgICAgIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQorICAgICAgICAg
ICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisKKyAg
ICAgICAgYm9vbCBtYXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIGJvb2wgaGFzSW5kZXhpbmdI
ZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG1heU5lZWRUb0No
ZWNrQ2VsbCk7CisgICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2UgeWV0IHNvIHRo
YXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4KKyAgICAgICAgLy8gU2VlIFN0
cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eS4K
KyAgICAgICAgQVNTRVJUKCFtYXlOZWVkVG9DaGVja0NlbGwpOworICAgICAgICAvLyBDbGVhciB0
aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ugb3VyIHB1dCBjb2Rl
IGV4cGVjdHMgdGhpcy4KKyAgICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJC
dXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgc3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVhZGVyOworCisgICAg
ICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOworCisgICAgICAgIGlmIChz
aG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkpIHsKKyAgICAgICAgICAgIGppdC5u
dWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5wYXlsb2FkR1BSKCks
IGJhc2VHUFIpOworICAgICAgICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkg
eworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdz
LAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgICAgICAg
ICAgICAgYmFzZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpICsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LnN0b3Jl
VmFsdWUoCisgICAgICAgICAgICAgICAgdmFsdWVSZWdzLAorICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRJbkJ1dHRlcmZseShtX29mZnNldCkg
KiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHN0cnVj
dHVyZUJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KG5ld1N0cnVjdHVyZSgpLT5pZCgpKTsK
KyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihzdHJ1Y3R1cmVCaXRzKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICBqaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQ
UigpKTsKKworICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9wcGlu
ZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6IHsKKyAg
ICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihmYWxzZSksIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0ZU1pc3M6IHsKKyAgICAgICAgaml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0cnVlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIo
KSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICAgICAgCiAgICAgY2FzZSBBcnJheUxlbmd0aDogewogICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
c2NyYXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
aAppbmRleCBhNzY3NzY3YmZjNjAzNDhkYzc1OTNhNjg0YTNkNjQwMmQ1NmY3MTU5Li5hMzQ3OWQx
NjAxYTZjZDk3Nzc5NDBhZDQ1NWEzMzgzN2U2ZTNiNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgogICAg
IGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBMb2FkLAogICAgICAgICBUcmFu
c2l0aW9uLAorICAgICAgICBEZWxldGUsCisgICAgICAgIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwK
KyAgICAgICAgRGVsZXRlTWlzcywKICAgICAgICAgUmVwbGFjZSwKICAgICAgICAgTWlzcywKICAg
ICAgICAgR2V0R2V0dGVyLApAQCAtMTQ1LDkgKzE0OCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRP
ZmZzZXQsCiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBzdGQ6OnVuaXF1
ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+ID0gbnVsbHB0cik7CiAKLSAgICAvLyBUaGlzIGNy
ZWF0ZSBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgZm9yIHRyYW5zaXRpb25zLgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LAorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlv
bihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPik7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogICAgIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIApAQCAtMTU3LDcgKzE2Miw3
IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBU
cmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1
Y3R1cmUtPnByZXZpb3VzSUQobV9zdHJ1Y3R1cmUtPnZtKCkpOwogICAgICAgICByZXR1cm4gbV9z
dHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQpAQCAtMTY1LDcgKzE3MCw3IEBAIHB1YmxpYzoKIAogICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHJhbnNpdGlvbik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlv
biB8fCBtX3R5cGUgPT0gRGVsZXRlKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMTMyNDA5YzBhNDUxMGJkZmE4ZWNlMzNiNzQzNDcxNjAy
ZDdiMGU3OS4uYjE2NmMzMGMxOGE1MjNhNzYyNWYzOWFmNmI3ODk1MDY3YWE1ZjBjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
Y3BwCkBAIC03OTUsNiArNzk1LDE1IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBBY2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGUpCiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpU
cmFuc2l0aW9uOgogICAgICAgICBvdXQucHJpbnQoIlRyYW5zaXRpb24iKTsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlOgorICAgICAgICBvdXQucHJpbnQoIkRl
bGV0ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25D
b25maWd1cmFibGU6CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlTm9uQ29uZmlndXJhYmxlIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3M6CisgICAg
ICAgIG91dC5wcmludCgiRGVsZXRlTWlzcyIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBB
Y2Nlc3NDYXNlOjpSZXBsYWNlOgogICAgICAgICBvdXQucHJpbnQoIlJlcGxhY2UiKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNjE3ODczN2Y5ZjhhOWNkMGI2ZGRhZDU3ZjFjZjEyZWZl
NGZjYTcwNS4uOTZhMWJhZWNiZTRjYmJiNzZkYmRlZGE4MDU2NWEyYzU5ODY1NTIyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCkBAIC0yNzYsNiArMjc2LDEyIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrKQogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAg
ICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpEZWxldGVCeUlEOgorICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRo
aXMsIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpEZWxldGVCeVZhbDoKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBE
ZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAg
IGRlcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCmluZGV4IGRkY2U4NWVjMDI1NTU3NmM5ZTM0NTFmNjQ3MzZkMTJjMzg5NDI4
MDMuLmI1NzViZGQyMTYxOWMyZGZlNGYxODJmYWVkOTBmMjY4ZTllMjYxOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01
NSw3ICs1NSw5IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAgR2V0QnlW
YWwsCiAgICAgUHV0LAogICAgIEluLAotICAgIEluc3RhbmNlT2YKKyAgICBJbnN0YW5jZU9mLAor
ICAgIERlbGV0ZUJ5SUQsCisgICAgRGVsZXRlQnlWYWwKIH07CiAKIGVudW0gY2xhc3MgQ2FjaGVU
eXBlIDogaW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlclNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclNjb3BlLmNwcAppbmRleCAyNmUyODI5MzllOWFjYTg4NjVjMjIxNzczYzJhNDFlMDI4MDk0
ZGRhLi40OGI1Yjg2ZmE0YjllODY1ZWE0OGRjOTlhNDkzYmQ5NDhkMDc0ZjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCkBAIC0xMjks
MTQgKzEyOSwxNCBAQCBib29sIERlYnVnZ2VyU2NvcGU6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZQogICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5wdXQodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBEZWJ1Z2dl
clNjb3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIERlYnVnZ2VyU2NvcGU6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIERlYnVnZ2VyU2NvcGUqIHNjb3BlID0ganNDYXN0PERlYnVnZ2VyU2NvcGUqPihjZWxs
KTsKICAgICBBU1NFUlQoc2NvcGUtPmlzVmFsaWQoKSk7CiAgICAgaWYgKCFzY29wZS0+aXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBK
U1Njb3BlOjpvYmplY3RBdFNjb3BlKHNjb3BlLT5qc1Njb3BlKCkpOwotICAgIHJldHVybiB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBE
ZWJ1Z2dlclNjb3BlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJTY29wZS5oCmluZGV4IGZmNGNlMWIxZGE0YjU3OTBkZThhZDk4OGE3MWY2MDJj
ZGYyNjE2NzQuLjQzMjdjMWYwMmM2OTI3ODQ1MDhlMGE5YTFhMjE0OTc3NWVkZDgwMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3Qg
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3ZmZhMzhlNjZkMmUwOGQ3NDU5ODliZDYx
MjlkYmVhYTBmYTBkMDdiLi5lOTdkZTEwZjZmNGNkYzE1YmFlZmIxMGI3ZWM2MDYyODI3ODM1OTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2
MTgsNiArMTYxOCwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworI2VuZGlmCisgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRGVsZXRlQnlJ
ZDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KwogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQ
YXJzZXIgYmFzZWQgb24gcmVhZGluZyB0aGUKQEAgLTI1MTgsOCArMjUzNCw2IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlJ
dGVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgRGVsZXRlQnlJ
ZDoKLSAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAgICAgY2FzZSBJc1R5cGVkQXJyYXlW
aWV3OgogICAgICAgICBjYXNlIElzRW1wdHk6CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGUzZTIw
OGQyZGExY2Q3MzliZmFjYzhjMzRjNTQ5N2NjNTYyZGI5MzYuLjM4NzE1OTE3ODkwMzEyMGE2MTI2
NDVlNGEyMzQzNTEzYmE1ZGJlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCkBAIC0yNDYsNiArMjQ2LDggQEAgdm9pZCBKSVRDb21waWxlcjo6bGlu
ayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0
QnlJZHNXaXRoVGhpcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9n
ZXRCeVZhbHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHV0QnlJ
ZHMsIGxpbmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIGxp
bmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5rQnVm
ZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggNDg4MDg3NGMy
ODVhYjdkNDQ3ZWI4OTNhNmU4YjRiYmYwMTA3MzFkNC4uMmZiNmFkOGY2MmY5NWEyNmU2Y2RiODI2
YWE2ZDFjZDY3ZjE5NDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaApAQCAtMTkxLDcgKzE5MSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3B1
dEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4oZ2Vu
LCBzbG93UGF0aCkpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgYWRkRGVsQnlJZChjb25zdCBK
SVREZWxCeUlkR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAg
ICB7CisgICAgICAgIG1fZGVsQnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxC
eUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGREZWxC
eVZhbChjb25zdCBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciog
c2xvd1BhdGgpCisgICAgeworICAgICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoSW5saW5lQ2FjaGVX
cmFwcGVyPEpJVERlbEJ5VmFsR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCiAg
ICAgdm9pZCBhZGRJbnN0YW5jZU9mKGNvbnN0IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiwg
U2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgbV9pbnN0YW5jZU9m
cy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+KGdlbiwg
c2xvd1BhdGgpKTsKQEAgLTM0OCw2ICszNTgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxJbmxp
bmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiwgND4gbV9nZXRCeUlk
c1dpdGhUaGlzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUR2V0QnlWYWxHZW5l
cmF0b3I+LCA0PiBtX2dldEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJ
VFB1dEJ5SWRHZW5lcmF0b3I+LCA0PiBtX3B1dEJ5SWRzOworICAgIFZlY3RvcjxJbmxpbmVDYWNo
ZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlJZHM7CisgICAgVmVjdG9y
PElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlWYWxz
OwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4g
bV9pbkJ5SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdl
bmVyYXRvcj4sIDQ+IG1faW5zdGFuY2VPZnM7CiAgICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4g
bV9qc0NhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCAxN2JhMmIyZmYzNWE0ZmFmMDExYTMyMjk3M2U3OTY5ZTdiNDdlNTdhLi4w
MmU4ZDA2ODA3OTBjNTk3NjdhNDkwNWY3NzZmNmZmMWIxYjExOTNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTE0NSw0MyArMTE0
NSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAg
ICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVz
ZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKLQotICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7
Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQotICAgIHZhbHVlLnVzZSgp
OwotCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
bGV0ZUJ5SWQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVn
cywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKLSAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwotCi0gICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIs
IG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci19Ci0KLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQotewotICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwotCi0gICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0g
ICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICBiYXNlLnVzZSgpOwotICAgIGtleS51c2Uo
KTsKLQotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeVZhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
Z3MsIGtleVJlZ3MpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9k
ZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjdXJyZW50U2NvcGUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZWNmYzkwMzkwYjY4NzQ4NjA4Y2UxZDBjMGYw
OTI1YmUyNzg4MzM0Mi4uMDgzZTY4NGRmOTEyNGM5ZGQ0MTEzYzQyNzRhNmI2NWYxMmIzMGJmYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCkBAIC00Mjc4LDYgKzQyNzgsNDMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ymxl
c3NCb29sZWFuKEdQUlJlZykKIHsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURl
bGV0ZUJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwor
CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgdmFsdWUudXNlKCk7CisKKyAg
ICBmbHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJ
ZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIs
IHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQoreworICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEpTVmFsdWVPcGVy
YW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVS
ZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOworICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICBiYXNlLnVzZSgpOworICAg
IGtleS51c2UoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzKTsKKyAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggMzcyOGI4NTNmYWJhYjI4YmY0NDU0Yzk1MDU0ZmNmNTdjNDViZDU0
Yy4uYjA3Y2IyNTc1ZDEwNjI3NzhkNGViMDc0ZGZjNWZhNjE2NjNkZDk2MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01NDM5
LDYgKzU0MzksODggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0NvZGVQb2lu
dEF0KE5vZGUqIG5vZGUpCiAgICAgaW50MzJSZXN1bHQoc2NyYXRjaDFHUFIsIG1fY3VycmVudE5v
ZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBu
b2RlKQoreworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisKKyAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisKKyAgICBhdXRvKiBwcm9wZXJ0eSA9IGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nh
c2VzOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQx
KCksIFNwZWNDZWxsKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwoYmFzZVJlZ3MpKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3Jk
Q2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVP
cmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigK
KyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKKworICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgcHJvcGVydHkpOworCisgICAgbV9qaXQuYWRk
RGVsQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihX
VEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChO
b2RlKiBub2RlKQoreworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
c3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisgICAg
SlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworCisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCkp
CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdz
KSk7CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBTcGVjQ2VsbCkpCisg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsK
KworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
YmFzZVJlZ3MsIGtleVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CisKKyAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplLAorICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIGJhc2VSZWdzLCBrZXlSZWdzKTsKKworICAgIG1faml0LmFkZERlbEJ5VmFs
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURhdGVHZXQoTm9kZSogbm9kZSkK
IHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0
YmViZWYyMWFhMGQ0MTBhYzA4Y2FiMTI4MzUxOGE5MjIyZTg0NDhiLi44MDM2MzkwN2I5ZTE3Mjgz
Mjc1YjI3YTY5NTMzMThkYzRlNjdiNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC01MTQ0LDIwICs1MTQ0LDE2OCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0LCBt
X291dC5jb25zdEludDMyKG1fbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7
CiAgICAgfQogCisgICAgdGVtcGxhdGU8RGVsQnlLaW5kIGtpbmQsIHR5cGVuYW1lIFN1YnNjcmlw
dEtpbmQ+CisgICAgdm9pZCBjb21waWxlRGVsQnkoTFZhbHVlIGJhc2UsIFN1YnNjcmlwdEtpbmQg
c3Vic2NyaXB0VmFsdWUpCisgICAgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQ7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewor
ICAgICAgICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOworICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFzZSwgVmFsdWVSZXA6
OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhdGNo
cG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGJhc2UsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVy
KSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShzdWJz
Y3JpcHRWYWx1ZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgfQorICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisK
KyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CisgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIE5vZGUq
IG5vZGUgPSBtX25vZGU7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAg
ICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZUluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNv
bW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAg
ICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9Cisg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24o
cGFyYW1zKS0+anVtcHMoaml0KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0IHNsb3dDYXNlczsKKworICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdz
KHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJh
bXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJu
R1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3Jh
dGNoKDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNj
cmF0Y2goMCkpOworCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGpp
dC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOworCisgICAgICAgICAgICAgICAgY29uc3RleHByIGF1
dG8gb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVs
ZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAg
ICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNv
bnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChiYXNlLmdwcigpICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJy
YW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAg
IGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29u
c3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuR1BSLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0
b3I+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCByZXR1cm5HUFIsIHBhcmFtcy5ncFNjcmF0
Y2goMCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSgpOworCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKKwor
ICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAgICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVu
Y3Rpb24sIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlw
dCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xv
d1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
PV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NChwYXRjaHBv
aW50KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZCgpCiAgICAgewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0Qm9vbGVh
bihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeUlkLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBtX291dC5jb25zdEludFB0cih1aWQpKSkpOwor
ICAgICAgICBMVmFsdWUgYmFzZTsKKworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAgYmFzZSA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgYmFzZSA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2Rl
LCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsPihiYXNlLCBtX2dyYXBoLmlkZW50aWZp
ZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKTsKICAgICB9CiAKICAgICB2b2lkIGNv
bXBpbGVEZWxldGVCeVZhbCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgIExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwot
ICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBzdWJzY3JpcHQp
KSk7CisgICAgICAgIExWYWx1ZSBiYXNlOworICAgICAgICBMVmFsdWUgc3Vic2NyaXB0OworCisg
ICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2Fz
ZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbnR5cGVk
VXNlOiB7CisgICAgICAgICAgICBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBz
dWJzY3JpcHQgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIHN1
YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsQnlWYWw+KGJh
c2UsIHN1YnNjcmlwdCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5UHVzaCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5MjhmNGE4NWI0YWRlNDQ0
YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1
NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03MCw3ICs3MCw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAg
bWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0
Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8oSW5CeUlkU2VsZlBh
dGNoKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNybyhEZWxC
eVJlcGxhY2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2OWNkMWI3
ODc0NGU4Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAg
ICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOworICAgIG1fZGVs
QnlWYWxJbmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VP
ZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxs
TGlua0luZm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9p
ZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9k
ZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X2lkKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxhdGlvblJlc3VsdCBK
SVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlWYWxzLCBwYXRjaEJ1
ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBwYXRj
aEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgcGF0Y2hCdWZm
ZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsK
KyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFs
aXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1
NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9l
bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPiBtX2dldEJ5
SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJhdG9yPiBtX3B1dEJ5
SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2luQnlJZHM7CisgICAg
ICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOworICAgICAgICBWZWN0
b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklU
SW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVjdG9yPEJ5VmFs
Q29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8
Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpAQCAtOTM0LDYgKzkz
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhp
c0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBV
SU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsK
KyAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAg
dW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBt
X2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJ
bnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlu
a0luZm9JbmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2
ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLmY0MTEwMjE3NjRkOTg5NjYyMjNmZTE4MjBhMmYzODM5
YWMzZTdiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY4IEBAIFZfSklUT3BlcmF0aW9u
X0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAorSklURGVsQnlWYWxH
ZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHBy
b3BlcnR5LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJs
b2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwg
dXNlZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIg
PSBmYWxzZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBt
X3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+
cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZv
LT52YWx1ZUdQUiA9IHJlc3VsdDsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1Yklu
Zm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFn
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52LnByb3BlcnR5VGFnR1BSID0g
cHJvcGVydHkudGFnR1BSKCk7CisjZW5kaWYKKyAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJz
LmNsZWFyKHNjcmF0Y2gpOworfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJl
bCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2Rv
bmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxp
emUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQorewor
ICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgQmFzZTo6Zmlu
YWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxK
SVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCitKSVREZWxCeUlkR2VuZXJhdG9y
OjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBz
Y3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5m
by0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2Fk
R1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2Fk
R1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CisjaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0
dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+di5w
cm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisjZW5kaWYKKyAgICBtX3N0dWJJbmZvLT51
c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOworfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0
ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0
b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAg
IEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxv
Y2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKK30KKwogSklUSW5CeUlk
R2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggYmZi
OTAyMTZiMjljMjdmZmQwZWQ4ZDdmMGY1ODdlMDhmZTZlNzMxNi4uMjZlNzAwZmJiN2FkMTgzYmUx
YWNiYTczZjM3ZjZmYjQyZmVmY2QwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTQyLDYgKzE0Miw1NiBAQCBwcml2
YXRlOgogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwogfTsKIAorY2xhc3MgSklURGVsQnlWYWxHZW5l
cmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJhc2Ug
PSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVREZWxCeVZhbEdlbmVy
YXRvcigpIHsgfQorCisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRo
SnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1
bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFz
dFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAg
dm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNo
YWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCitjbGFzcyBKSVREZWxCeUlkR2VuZXJhdG9y
IDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklURGVsQnlJZEdlbmVyYXRvcigp
IHsgfQorCisgICAgSklURGVsQnlJZEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3JhdGNo
KTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAg
ICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmluYWxp
emUoCisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYg
c2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0
OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsK
KwogY2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Igewog
cHVibGljOgogICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5
ZTJhZDAwMmU0OGRjNjMzNC4uN2JkZjFmNzMyYmY0ZTA1ZDliODU2OTZlZjQ2ODQ3ZjNiNTYxMDc2
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0y
MTQyLDcgKzIxNDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhh
c0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZ2xvYmFsT2Jq
ZWN0LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3Bl
cnR5KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjE1
MCwzMSArMjE1MCw1MSBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0p
LT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21V
aWQodm0sIHVpZCkpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVVpZCh2bSwgdWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJuIGNvdWxkRGVsZXRl
OwogfQogCi0KLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJ
ZEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSks
IHVpZCkpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBi
YXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5
SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHVpZCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBp
ZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgICAgICBpZiAoIXBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgp
KSkKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsICpzdHViSW5mbywg
RGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5
SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpLCB1aWQpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxl
dGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSwgdWlkKTsKIH0KIAotc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNW
YWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKIHsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxOTAsNyArMjIxMCw3
IEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYKICAgICBlbHNlIHsKICAgICAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eSA9IGtleS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgY291bGREZWxldGUgPSBi
YXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9i
amVjdCwgcHJvcGVydHkpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
c2xvdCk7CiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAg
ICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKQpAQCAtMjE5OCwyMCArMjIxOCw0MiBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mCiAgICAg
cmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQor
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2
bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRL
ZXkpKSkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9
IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVsZXRl
QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFsdWUsIHN1YnNj
cmlwdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNo
aW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAg
ICAgICAgICAgcmVwYXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNl
VmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6
Tm9ybWFsQnlWYWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRLZXkpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNj
cmlwdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4g
ZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOworICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNk
NjBlYThjNDhjZDQzZWVmZjgyYTMwMGMuLjYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNh
YzMxZDY4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBA
IC0yNTEsMTAgKzI1MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZhbEluZm8qKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lO
VEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlk
SlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0lt
cGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVC
eUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0KSBXVEZfSU5U
RVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGws
IEpTT2JqZWN0KiBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRQTmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
aW5kZXggYWJmNTJmNzEzZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJmNi4uMmJhMGZhNjg0
OGJjZTgyOWFjZDY0MTkwNWYwNWY0YmQ1NGRjYmUzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICszODcsMzkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxC
eUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBpbnQgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCByZWdUMSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsK
KyAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDAsIHJlZ1QyKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2RlbEJ5SWRz
LmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDAp
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsK
K30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVy
IGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2NvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCk7CisKKyAgICBKSVREZWxCeUlkR2Vu
ZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOworCisgICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3Vs
dCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1Qw
LCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAs
IHVpZCk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
KworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKQEAgLTM5OCw5ICs0MjgsNDIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3Bl
cnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CisgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
Z1QwLCByZWdUMik7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7
CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisg
ICAgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRl
eCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlW
YWxKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIHJlZ1QwLCByZWdUMSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1Qw
LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBK
U1ZhbHVlUmVncyhyZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA1Y2M3
ZGY5YzU0MTg5YzdjYjNkNDA5MWI1YzRmNGM4YmRhZWVmMTRjLi5iNjY5ZGQ4YjdhZDI2ZDNmNzdk
OTY4NmRlNjA4MzQzNGYzNmRiYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEyMyw3ICsxMjMsOSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBp
bnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRMb2FkKGJhc2UsIHJl
Z1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1
bHQsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIG1fY29kZUJs
b2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIGJveEJvb2xlYW4ocmVnVDAs
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTMz
LDkgKzEzNSwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9w
cm9wZXJ0eTsKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVn
VDMsIHJlZ1QyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1
bHQsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBu
dWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDIpKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsK
KyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpIHsgfQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKSB7IH0KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCAwODY5NmIxZjNhNDhmY2FiNjdkZmRmMWQwODE5MjVlMzRk
OTFiNzY1Li43YmYxMTNlZTgxMTdiZGZiODg5NjFlMmExZmQ5NDExMjdhM2E0YTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTY0MSw3ICs2NDEsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29k
ZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAgICAgICAgICAgICAg
bmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0sIGNvZGVCbG9jaywgaWRl
bnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RG
TW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVy
KCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsKQEAgLTcz
NCw2ICs3MzQsNzMgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAor
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsQnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlL
aW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IHJlc3VsdDsKKworICAgIHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
OworCisgICAgICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQorICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSk7
CisgICAgICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkgfHwgIW9sZFN0cnVjdHVyZS0+cHJv
cGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CisKKyAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlRGVsZXRlKCkpCisgICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gbmV3Q2FzZTsKKworICAgICAgICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7Cisg
ICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OworICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShvbGRTdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgbmV3T2Zmc2V0KTsKKyAgICAgICAgICAgIGlmICghbmV3U3RydWN0
dXJlKQorICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CisgICAgICAgICAg
ICBpZiAoIW5ld1N0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpIHx8IG5l
d1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVV
cE9uQ2FjaGU7CisgICAgICAgICAgICBBU1NFUlQobmV3T2Zmc2V0ID09IHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCh2bSkg
PT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzUHJv
cGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0
dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG5ld09m
ZnNldCkpOworICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSh2
bSwgY29kZUJsb2NrLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIG5ld09mZnNl
dCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICB9IGVsc2UgaWYgKCFjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xvdC5pc05vbmNvbmZp
Z3VyYWJsZSgpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUo
dm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlLCBDYWNoZWFi
bGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwg
eyB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1p
c3MsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxpZE9mZnNldCwgb2xk
U3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0g
c3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBX
VEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2Rl
KCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJl
LT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaXJl
V2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywg
cmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBP
bkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hEZWxCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVy
dHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1
YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50
OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9i
YWxPYmplY3QtPnZtKCkpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVs
QnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJ
ZEdlbmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUluQnlJRCgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LAogICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5MSw2ICsxNDU4LDE1IEBAIHZvaWQgcmVzZXRQdXRC
eUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7Cisg
ICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIGVsc2UKKyAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwog
c3RhdGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxl
SnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guaAppbmRleCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBlOGE5OTQ0YmI0Zjlm
ZTM5Li5jMWQ5OTU5YWRhZmQzNjU3NjJlODkxNzlhYjNjMGVlZDY2ZTU4N2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51bSBjbGFzcyBHZXRC
eUtpbmQgewogICAgIERpcmVjdAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtpbmQgeworICAgIE5v
cm1hbCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJ
RChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IFB1dEtpbmQpOwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXBhdGNoSW5CeUlE
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVy
JiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBK
U1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29s
IHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYs
IENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5saW5rRm9yKFZNJiwgQ2FsbExp
bmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnkoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5
SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXREZWxCeShDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeUlE
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJs
b2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBiOTExZWUyNzgyNjI2NmM3M2Y3NmUw
OTU1NDJhZGM2NTkyNTA4YzZlLi4wZTYyMzM2ZGQwM2VlMTBmN2I4Zjk3YjY3Y2YzNDYwYWIyN2Rl
NzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKQEAgLTkyNSw3ICs5MjUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVs
X2J5X2lkKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWxCeUlkPigpOwogICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
LSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxl
dGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSksIHNsb3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OwogICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9E
ZWxldGVQcm9wZXJ0eUVycm9yKSk7CkBAIC0xMTA4LDcgKzExMDksOCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOwogICAgIH0KICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZp
ZXJJbmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVjZjZmZDA4ZmZkMmJiODhiOWQ1ODdiYWVkMGZm
Ni4uMTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2IwYzE1ZjI2NTg5NzkzOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpD
YWNoZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGlu
ZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKEpTQ2VsbCogaWRlbnRp
ZmllcikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChpZGVudGlmaWVy
KSk7CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggZmU2YzZiN2Q4NGM0N2VkZWUxMWFhYzExZjY0
ODRhNzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNjYmJkMjhkODAzMWRhOGExN2VlMDUzNzIxOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTU5LDcgKzU5
LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBQdXRCeUluZGV4RnVuY3Rpb25Q
dHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9u
UHRyIE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUluZGV4KTsKIAotICAgIHVzaW5nIERlbGV0ZVBy
b3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wg
KCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRS
WShkZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5j
dGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAK
aW5kZXggYzRmNzRjMGMzOTA4ODkwMTQ4NWVlM2QyYjFkNWY1YWFhYzE5ZDg3ZC4uOGRkZDk4YTFi
ZmIwZmVjMTVhN2Q3MzJhY2MzYzJjZWY4NWQwNDBiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAg
Ym9vbCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmEKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBDbG9uZWRBcmd1
bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQ2xvbmVk
QXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50cyo+KGNlbGwpOwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBib29s
IENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFs
c0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKIH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVu
dCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApp
bmRleCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQwYmEwY2FkMTU3NjA1ZmY1Li4wMGM1MzQ3NTYw
NWE3M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lhbHNNYXRlcmlhbGl6ZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJhOTM1M2U3ZDc1MjFhODc5YmQx
MmQ3NDAwNjkuLjFkZTgyMzk1MDllMGM4ZDdhNTZhMzI0MTRmZmU4YTc0YTliNzhkZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtOTg1LDcgKzk4NSw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQog
ICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElP
TigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VP
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIENIRUNLX0VYQ0VQVElPTigpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJv
cGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0
eVNsb3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYWQ2ZjZiNDgwMGVmNTc4NTYxY2FlZGM5ZGRiYmM4MmYyNTMy
ZTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVs
ZXRlUHJvcGVydHlTbG90LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb3Bl
cnR5T2Zmc2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworICAgIAorY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5
cGUgOiB1aW50OF90IHsgVW5jYWNoZWFibGUsIERlbGV0ZUhpdCwgQ29uZmlndXJhYmxlRGVsZXRl
TWlzcywgTm9uY29uZmlndXJhYmxlIH07CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3QoKQorICAg
ICAgICA6IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCisgICAgICAgICwgbV9jYWNoZWFiaWxpdHko
Q2FjaGluZ0FsbG93ZWQpCisgICAgICAgICwgbV90eXBlKFVuY2FjaGVhYmxlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZU1pc3MoKQorICAgIHsKKyAgICAgICAgbV90
eXBlID0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsKKyAgICB9CisKKyAgICB2b2lkIHNldE5vbmNv
bmZpZ3VyYWJsZSgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBOb25jb25maWd1cmFibGU7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRIaXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV90eXBlID0gRGVsZXRlSGl0OworICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKKyAg
ICB9CisKKyAgICBib29sIGlzQ2FjaGVhYmxlRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gaXNDYWNo
ZWFibGUoKSAmJiBtX3R5cGUgIT0gVW5jYWNoZWFibGU7IH0KKyAgICBib29sIGlzRGVsZXRlSGl0
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERlbGV0ZUhpdDsgfQorICAgIGJvb2wgaXNDb25m
aWd1cmFibGVEZWxldGVNaXNzKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENvbmZpZ3VyYWJs
ZURlbGV0ZU1pc3M7IH0KKyAgICBib29sIGlzTm9uY29uZmlndXJhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IE5vbmNvbmZpZ3VyYWJsZTsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgY2Fj
aGVkT2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29mZnNldDsKKyAgICB9
CisKKyAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkKKyAgICB7CisgICAgICAgIG1fY2FjaGVhYmls
aXR5ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgaXND
YWNoZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nQWxsb3dl
ZDsgfQorCisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmlsaXR5VHlw
ZSBtX2NhY2hlYWJpbGl0eTsKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAppbmRleCBmMTgyMWQ1NTZhM2Q0MDQ0OTM2NzVlYWUyNWZhMmU0NjY3M2VjNDNhLi42
ODVjN2FjYmMxMWM2MmQyMzM3N2QzMmM0ZGU5YTIwYjY1ODc4YThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtODcsNyAr
ODcsNyBAQCBib29sIEVycm9yQ29uc3RydWN0b3I6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TgogICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAot
Ym9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEVycm9yQ29uc3RydWN0b3Iq
PihjZWxsKTsKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBp
ZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCkKICAg
ICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6
Om51bGxvcHQpOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yQ29uc3RydWN0b3IuaAppbmRleCA5M2Q1MjcxNDg2ZjY2ZmRlNzUzZTQ5YTQwMTZmMTY4
MzhlOTc1NzIxLi45YTVhNDYzMjFiM2RiYjc2NGMyYTFiNTIxZDkyNjhmOGQxNDM1MzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCkBA
IC00OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
RXJyb3JQcm90b3R5cGUqKTsKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogcHJpdmF0
ZToKICAgICBFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGZkNDhiYmYzNGMz
MDQzMGQyZTcwZGU1NzQ5OGU5YjUxZTZhYzI0NGQuLjFkNTBjZDE3NGZjNDdkOTIyMTcxODhlMzI1
ZmY1N2FlOGQxNWI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBib29sIEVycm9ySW5zdGFuY2U6
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZQogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBFcnJvckluc3RhbmNlKiB0aGlzT2JqZWN0ID0ganND
YXN0PEVycm9ySW5zdGFuY2UqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6ZUVy
cm9ySW5mb0lmTmVlZGVkKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBCYXNlOjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggZjFmYWM1OTY4MmQ5ZTAy
NjUwOGNiNGZmOGM5YjI2N2I0ZWU3NmU4Ny4uNDAwNjA4ZDA4YTgzNGNkMzFlNjEyZTczYWI1MzFj
YjBhM2NhMTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5z
dGFuY2UuaApAQCAtOTksNyArOTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZ2V0
U3RydWN0dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgIHZvaWQgY29tcHV0ZUVycm9ySW5mbyhWTSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5kZXggY2Ux
MGY3ZmU0ODczZTRhNDdiZTE0MWUyNTU2OWFkNjQ4YWZmOWQyOC4uNDcxMjE2NzMwMzY0ODI4ZmUy
NzcwZTIzNDg2OWFjZTcwOTA4ZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJ
bmxpbmVzLmgKaW5kZXggYjgzN2VjMWJiNDMwZjZkNThiMWQ1YjExNWRhNTEzYzViY2MwYmY1My4u
YTVhOWVjYjMyMmEyMGRhOGZlMjQzM2ZmZDU0N2E3OGFmYzYwMmNmNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
CkBAIC0xMzksOCArMTM5LDEwIEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvCiAgICAgICAgIHRo
aXNPYmplY3QtPnNldEluZGV4UXVpY2tseSh2bSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNs
b3QpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMTU4LDcgKzE2MCw3IEBAIGJvb2wgR2VuZXJpY0Fy
Z3VtZW50czxUeXBlPjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1ib29sIEdlbmVyaWNBcmd1
bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQorYm9vbCBHZW5lcmljQXJndW1lbnRz
PFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFR5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE3NSw3ICsxNzcsNyBAQCBib29sIEdlbmVyaWNB
cmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbAogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KGlkZW50KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBHZW5lcmljQXJndW1l
bnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCAqaW5kZXgpKTsKIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBpZGVudCwgc2xvdCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAwMzQ4N2Y2
MWUwZjJmYzc1MWJhNzAzYjcwY2EzNmQwMjIyMTYzNGRlLi42MDFmMWU0OWYxNWNkNTAxYTBlMGE3
NWVlMjg1MDZmMzJiMGRiM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUs
IGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxz
ZTsgfQogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wp
IHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpT
T2JqZWN0PiBtX2dldHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKaW5kZXggNmQwNzU5MTcxMWVlZGJjMjhlMGU0ZGE3ODQ5ODIyYWI4ZDY2ZjVkMS4uYmNlMzY1
NWEzMTkyZWEyOTBmZTdmMDQwODI0YTM4ODZmNmIwNDgzNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBib29sIEpTQXJyYXk6
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0K
IAotYm9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQXJy
YXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0FycmF5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBib29s
IEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogc3RhdGljIGludCBjb21wYXJlS2V5
c0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggMzExNjViNWZmNDkyNTRjYzFhNmM0NzkwMmI3OTEw
YWM0YTdkOWJmZi4uY2RjMzliNTEyZDdlZTNhMTVjZjFhZWMyZTBhMmQ5M2Q5YWFhZDBmMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTgyLDcgKzE4Miw3IEBA
IHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CmluZGV4IGZlMDE4MGRkNjBjM2QxYmI2MGY4YjUzM2IxODYwNThlZWFkODFiNzUuLjU4NmFmM2Zh
YjM3OTUyZTNmZGUxY2U0NzBjOTlhYjFlZGM0YTc0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Q7CiBj
bGFzcyBKU0JpZ0ludDsKIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEpTQ2VsbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDI3MTM1MmIyMTc0NzAzNTZkZjQw
M2ZkZDljZGU2MGRlZjg4ODE2MDcuLjBlNjdmODY2NzZkNTg2NWFhODhmMDRmMzVhZGE3NDMyMWUw
MmNmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMTI2
LDEwICsxMjYsMTAgQEAgYm9vbCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGUKICAgICByZXR1cm4gdGhpc09i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0NlbGw6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRl
bnRpZmllciwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09i
amVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKIH0KIAogYm9vbCBKU0NlbGw6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCmluZGV4IGQ1NjU2ZjhiZmRmZjYzMjk5MmFjMWRhNDUxZTM1YzFhNTQ4ZDQ2N2Uu
LjhhNDg1MGE2ZWEwMzg5NzczMGI4ZWFmMTRjYmFmNTY0M2U0NzVmOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIGJvb2wgcHV0
SW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgc3Rh
dGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCAxNDZh
OTEzMmQ0NzM1MjQyYzEwNmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJiMDllMzdm
OGE0NzQzMTliZjc2YzMyZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVm
aW5lT3duUHJvcGVydHkoCiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCi0g
ICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0RhdGFWaWV3
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBib29sIEpTRGF0YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lk
IEpTRGF0YVZpZXc6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4MmE2N2U5
N2VmYmI0ZjMyZjFiYzEyZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVlNmNjN2I5
ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC03
Miw3ICs3Miw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZv
aWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZWU4NWVlMDY0NmM5ZGRhZjll
NmU5N2FmMTdiOWY5YzAzNzdkMThlMC4uOGI4ZDUwNjUzNmU1M2Y5MjhiYzM2OWQyZWJmZDVhNjMw
YjA4NmI4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBi
b29sIHRocm93RXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCmluZGV4IGFkZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZhY2QuLjE4
YWI0NzU0M2ZkNzgyOTc4YWZlYTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXgg
ZjA4Zjg1MjQ2OWJlZmQ2YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2NWNlMWMz
NTY1NTBlY2Q1OGI3N2ZlZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUsNyArMzA1
LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAg
ICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAw
Y2FmYmQyNzZjZjc0ZDBjODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi41OGZiYjU3NTYyYjcxMDA3
OWU2NTE0MGY3ZTA5ZTcwODA0OGZhMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtNDM4LDcgKzQzOCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlZmluZU93blByb3BlcnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KQEAgLTQ4NCw3ICs0ODQsOCBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2
bSwgcHJvcGVydHlOYW1lKSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0
dXJuIGNlbGwtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1NjZjNWQ0
YTE4YTkyODcxZjdlLi4wZjg5MDMwMGJlYjc4NGM3MTc5YTg3M2ZhY2ZjYjJhODRkMGM5ZTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0xMzE0LDcgKzEzMTQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgbWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgbWV0aG9k
VGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNw
cAppbmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45NzRiOTJi
NTRlMWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcs
MTMgKzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXgg
ZDAxM2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMyZGQ0OTNm
ZjdhNGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAwYjcyOWY3
YzczZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52aXJvbm1l
bnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVu
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpTTW9kdWxl
RW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBp
ZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpU
eXBlOjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5kZXgg
ZGFlYWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2ZiOThiYjJh
ODJkYWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0
dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggMmJk
YjEzMDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNhNjVhZDEx
OTAyZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5LDEyICsx
OTksMTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhv
dGljLW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAgIGlmIChw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9y
dHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4IDhl
ZWY2MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdhMTNlN2Vm
YmZjZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNmOWNiMDFl
MmJmMzIxYjA2ZWQ0MTk2YzkuLmVkYTJkNjIzNTA5OWVkMzAxYmIwYWUxMTQ1MTRmMzJlMTU0Y2I2
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBA
IC03NTksOSArNzU5LDEwIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1Zh
bHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0KTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZl
cihvYmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFsdWUpOwogICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxP
YmplY3QsIHByb3ApOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAo
ZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgc2xv
dCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5wdXQob2JqZWN0LCBtX2dsb2JhbE9iamVjdCwgcHJvcCwgZmlsdGVy
ZWRWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDNhNTEyMWQ2OWRmYjRmYjJm
YjlmODg1Y2E3ZmYzZmU1NWMwNGRkODAuLjZiMGU3NmYxYzFlZTI1NjY0ZGMyNzg4NDI2NGNiZGJk
YjRkYjZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
QEAgLTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAKIC8vIEVD
TUEgOC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xOTk5LDgg
KzE5OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJvcGVydHlJ
c1ByZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAgICAgaWYg
KGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQ
cm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJs
ZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZp
cmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
CiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10oY29uc3QgR0NTYWZlQ29uY3VycmVudEpTQ2Vs
bExvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVk
V2F0Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5
ICYmICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5k
ZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNl
dCk7CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1
cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJ
RCgpLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0Owog
ICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRP
ZmZzZXQpOwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAog
ICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9IGVs
c2UKKyAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTIwMzAsOCArMjAzNSwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIAotICAgIGlmIChpID4gTUFYX0FSUkFZX0lO
REVYKQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkp
KTsKKyAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkgeworICAgICAgICBEZWxldGVQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpKSwgc2xvdCk7CisgICAgfQogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5k
ZXhpbmdNb2RlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAgLTM2
MjUsNyArMzYzMiw4IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVyaWMg
ZGVzY3JpcHRvciBpcyBzaW1wbHkgY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3Rp
bmcgcHJvcGVydHkKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsK
ICAgICAgICAgaWYgKCFjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmpl
Y3QpIHsKLSAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIERlbGV0
ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAg
ICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQo
Y3VycmVudCksIGN1cnJlbnQpOwogICAgICAgICB9CkBAIC0zNjQxLDcgKzM2NDksOCBAQCBib29s
IHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBw
dXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJy
ZW50KTsKICAgICB9CkBAIC0zNjY1LDcgKzM2NzQsOCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQ
cm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIHJl
dHVybiBwdXREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQp
LCBjdXJyZW50KTsKICAgICB9CkBAIC0zNzE4LDcgKzM3MjgsOCBAQCBib29sIHZhbGlkYXRlQW5k
QXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqCiAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsKIAotICAgIG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
ICAgIHVuc2lnbmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJl
bnQoY3VycmVudCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRlOjpB
Y2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2
NTExNjBiZTBiMDE3ODcwY2U5MDk2YmY5MmE1NWRjZjBlNmNkYmJlLi42YmRhOWUxZTA3ZTc5OGZi
OTIzNDgzNzcyZjA3YjdmNmNkYzAxNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNp
bmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0
ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlND
YXN0LmgiCkBAIC02MjMsNyArNjI0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzT3du
UHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRl
eCA5YzQ3OTM0ZTRhM2Q5MTk5ZmE5ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEyZDIy
MTkxMjdjZDk5YjMwMjA5MzA4ODcyMTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9i
amVjdC0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1i
b29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94eTo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAg
cmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZt
KCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFi
bGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0
KCksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Byb3h5
Ojppc0V4dGVuc2libGUoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFlNjY4
ZDI1OTBkOWI5N2M4ZjRiYmEyYmZmYjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5NGMw
YjI1ODk1Nzk4ZmM1ZjllZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94
eS5oCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmlu
ZGV4IDYzMGUxYjc4YmIyMDZlN2FmNjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMxNTBl
OTZhZWNkNTM3NDczMWZkYThkOWE3YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyArNDQs
MTMgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9zeW1ib2xUYWJsZSk7CiB9CiAKLWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N5
bWJvbFRhYmxlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3Qq
PihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMocHJv
cGVydHlOYW1lLnVpZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJh
c2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNkZWQ5
OGIzMzVkZjczNmIyMS4uYjU2OGU4ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAgCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNTeW1ib2xUYWJsZU9iamVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4MTU5
OGZmZWYyYTVlMTRhODBmZDRlNTRkYzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVl
ZTllNWY5MGM2NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlP
YmplY3QuY3BwCkBAIC02ODUsMTIgKzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3Jt
RGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1
bHREZWxldGUgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0
aGlzT2JqZWN0LT50YXJnZXQoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2Jh
bE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogICAgIH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1E
ZWxldGUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDE3
Y2EyOWZiMGEzZmRkYmE3MWViNjgyNDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgxOGE0
Njc0YTUyMmJmNjBhMmNhMDllYWMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxU
eXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNhMDlj
MDA0ODFhNTE1MzgyNy4uMWNlMWI0YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmViYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBA
IC03MSwxMiArNzEsMTIgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCi1ib29sIFJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRleCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShj
ZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAog
dm9pZCBSZWdFeHBPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2MzcxOTFh
ODlmMGI3Yzk2YzVmYmI3MTQuLjg1N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNlMGIx
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBA
IC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJbmRl
eElzTm90V3JpdGFibGVGbGFnID0gKG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZs
YWcgfCBsYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cAppbmRleCA1MTU3NTI3NjVlY2IwMmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRiYzY3
YzU3ZjgxNTYxZmE3OGQxOTRlZmFmMDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00MCw3
ICs0MCw3IEBAIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZh
bEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKQorYm9vbCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2IxMDk2
YjI2ZDE4NzA3NGNiZjE3ZWI4M2MyOS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBmZGJi
N2ExMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0
RXZhbEFjdGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
Y3RFdmFsQWN0aXZhdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHNjb3BlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAppbmRleCA0NzdiOWNhZmIzZmEwMDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZkZDky
NzNiNzUwNThhNDdmNzY5YTNmY2Y4Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29s
IFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6
ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3RyaW5n
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVl
KCktPmNhbkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wg
U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2IzYTNl
NGRhMzUyZjIyNzg2NTIzLi42OWYyNmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4ZDRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
cHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUlu
ZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAppbmRleCA2NGM4MDBiNjE5YTQ5Nzk1YWViMGUxNDM1ZDNiYjdmNDQ3MTA5ZWI3Li44MzJj
ZTQ0YWJlNGNhYWE2Yjc0MmZmOWFiMGVjNjAwYzc0NzY0OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTUzOSw4ICs1MzksNyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgKLSAg
ICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBp
ZiAobmV3U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01NDgs
MTYgKzU0NywxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKikKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25G
cm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zm
c2V0KQogewotICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+aXNPYmplY3QoKSk7CiAKLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0cnVj
dHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3RleHBy
IGJvb2wgaXNBZGRpdGlvbiA9IGZhbHNlOworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAg
ICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5z
aXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9u
KSkgewogICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRp
b25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAg
ICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01
NjcsMTEgKzU2MywzMSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXND
b21waWxhdGlvblRocmVhZCgpKTsKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBp
ZiAoc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1
dGVzKSA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
ID0gMDsKKyAgICBpZiAoc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVp
ZCgpLCBhdHRyaWJ1dGVzKSA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBDb25jdXJyZW50SlNDZWxsTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPmNlbGxMb2Nr
KCkpOworICAgIHJldHVybiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwor
fQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiBkZWZlcnJlZCkKIHsKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2V0Q29u
Y3VycmVudGx5KHByb3BlcnR5TmFtZS51aWQoKSkgIT0gaW52YWxpZE9mZnNldCk7CiAKICAgICBp
bnQgdHJhbnNpdGlvbkNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMg
JiYgdHJhbnNpdGlvbkNvdW50IDw9IHNfbWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZp
b3VzSUQodm0pKQpAQCAtMTIwMyw3ICsxMjE5LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1
Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9seVByb3QK
IAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBv
dXQucHJpbnQoUmF3UG9pbnRlcih0aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwg
IiwgeyIpOworICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQb2ludGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGlkKCkpKSwgIiwgIiwgY2xhc3NJbmZvKCktPmNsYXNz
TmFtZSwgIiwgeyIpOwogICAgIAogICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNTM4NDRiOTFhNmVlOWYx
NDZjZjg0NGRkMDA1NzU4ZTZmY2M3NDYzNS4uMzIwYTQ3YTdiODM0NTlhMmI4ZDk3YjIxZDQ0NTdh
MTgxYWEyOGVlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNv
bmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNs
dWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
SlNDYXN0LmgiCkBAIC0xOTIsNyArMTkzLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9w
ZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJh
bnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBE
ZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVyZSog
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3RydWN0
dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJh
bnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSog
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5
KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgSlNW
YWx1ZSBwcm90b3R5cGUsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hh
bmdlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNo
ZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwpAQCAtNTMwLDYgKzUzMiw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25z
dCBKU0NlbGwqKSBjb25zdDsKKyAgICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBt
dXN0Q2hlY2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCkBAIC04MTEsNiArODE0
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRy
KTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3Ry
dWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNl
dCYpOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFzIGEg
dXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFuZCB0
aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRvIGl0
LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAppbmRleCAyM2Q3OGZjYjkxNDJmOTUwMjdiZDcyN2Y4NWM0YmQxN2Yw
YzkxNzMyLi4zZGMxN2I3MzM1OTk0ZTgzZTExMTAyZDBlOWVjYWIwZDZlNDk4MDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0y
NTIsMTAgKzI1MiwyMyBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVy
KGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5
cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKKwogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihj
ZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgU3Ry
dWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3QK
K3sKKyAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0
aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWlz
VHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIG11c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJldHVybiB0
cnVlOworfQorCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJ
bmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGlj
YWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5j
cHAKaW5kZXggOGI4NDZiYTU5YTUxM2Y4YWM0NWNjZDYwYjIyNzI1MDhlMWJiNzJhOC4uOTEyMWJj
NjYwODk0ZDI5NmZiZmE0ZTBkMjhjNzhhMTg2YWZhNWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTI4NTAsNiArMjg1MCwxNSBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldENvbmN1cnJlbnRseShKU0dsb2Jh
bE9iamVjdCogZ2xvYgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNPd25MZW5ndGhQ
cm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU09iamVjdCog
dGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGFy
Z2V0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdGlvbi0+YXJl
TmFtZUFuZExlbmd0aE9yaWdpbmFsKHZtKSkpOworfQorCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwpAQCAtMjk4Myw2ICsyOTkyLDggQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCIs
IEpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QsIDEp
OwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0Q29uY3VycmVudGx5IiwgZnVuY3Rpb25HZXRDb25j
dXJyZW50bHksIDIpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJoYXNPd25MZW5ndGhQcm9wZXJ0
eSIsIGZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHksIDEpOworCiAgICAgbV9vYmplY3REb2lu
Z1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0u
aAppbmRleCBjYjhkM2JiMDMwNTI4OTEwOGE4ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEw
MGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5NGFhYzcwZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYg
KzQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRl
clR5cGUgY291bnQgPSAxKQogICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgICAgICBpZiAoIWNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFt
ZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChr
ZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIENvdW50ZXJU
eXBlIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7
CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CkBAIC02Niw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyBy
ZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFw
LmVuZCgpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21h
cC5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuZW5kKCk7IH0KICAgICAKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVy
bnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAg
ICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1aWxkTGlzdCgpIGNvbnN0CiAgICAgeworICAgICAgICBM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsK
ICAgICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQo
KTsgKytpdGVyKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5
LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2LDE3ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbGlzdDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIo
KTsgfQorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xv
Y2spOworICAgICAgICBtX21hcC5jbGVhcigpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKICAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAu
cmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46Oktl
eVZhbHVlUGFpclR5cGUmIHBhaXIpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihL
ZXlBbmRDb3VudChwYWlyLmtleSwgcGFpci52YWx1ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAg
fQogICAgIAogcHJpdmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8
VCwgQ291bnRlclR5cGU+IG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDRlMDA5ZmVkNmJkMGUzMTE1N2M2NjQw
OWM3YjM1ZmNjN2VmZjIzMjMuLmEzMGNlZDE5ZjhmYzNlMmU2ZDNjNDQxNWI0YTc3OWE1MGM5MGM4
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKQEAgLTMxMiwxMyArMzEyLDEzIEBAIGJvb2wgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICBy
ZXR1cm4gQmFzZTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwp
OwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhl
IHNhbWUgb3JpZ2luLgogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwg
VGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTRE9N
V2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxZWYwNmMy
NmVlMjUyZGU2NjhjMWRlZGU5MWM1ZGRmNmEwZGRmZGU1Li44NGI5YTEzZTE5ZWExODlkZjMwNzQ3
NjA2NWRkMzczZTUxZTRmNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTYzLDEzICsxNjMsMTMgQEAgYm9vbCBKU0xvY2F0aW9u
OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIHUKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNMb2Nh
dGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNMb2NhdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEpTTG9jYXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlv
bio+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBz
YW1lIG9yaWdpbi4KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2lu
ZG93KCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9v
bCBKU0xvY2F0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0
b20uY3BwCmluZGV4IGUyZWVkZmQ1YjBjNWFhNzE4NzBkYTc2NTQzOTdlMzViOTlhODJjYWMuLjBj
YjY3ZWYyOWM2MmJmOGNjNDQ2YTBlY2UzMWM5ZmU1MzUxNTdhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSkKK2Jvb2wgSlNS
ZW1vdGVET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7
CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDAzZGQ5YzE2MWE4Mzk5MTJkNDM5
MzQyZDI2NWJjNWZkMTViNmE0MTYuLmI3Y2QxZmNhNDM5OWNlODk5NmFhYTZlY2E3OTUwNzM2YzA1
MzIzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9w
ZXJ0eQogICAgICMgVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVsZXRlIGZvciB0aGUKICAgICAjIGZvciB0aGUg
ZGVsZXRlUHJvcGVydHkgb3ZlcnJpZGUgaG9vay4KIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
ImJvb2wgJHtjbGFzc05hbWV9OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKVxu
Iik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdClcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8mIHRoaXNPYmplY3QgPSAqanNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwp
O1xuIik7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQog
CiAgICAgIyBGSVhNRTogSW5zdGVhZCBvZiBjYWxsaW5nIGRvd24gSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5LCBwZXJoYXBzIHdlIHNob3VsZCBpbXBsZW1lbnQKICAgICAjIHRoZSByZW1haW5lZCBv
ZiB0aGUgYWxnb3JpdGhtIG91cnNlbHZlcy4KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVy
biBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7
CiB9CiAKQEAgLTI2OTYsNyArMjY5Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAog
ICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUp
O1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpO1xuIik7CiAgICAgfQog
CkBAIC00MzI0LDcgKzQzMjQsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xu
Iik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtNzUxMiw3ICs3NTEzLDggQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xu
Iik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0g
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtcbiIpOwor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJs
ZWRCeVNldHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCmluZGV4IGI1ZWE1NDhlMWQxMjcyZTE4NmRiOTQ0
Y2U2MTk4NTBmNGZkMmU4MDguLmU2MzMyMzlkYWVmY2VmMDQwOWM4YjQ2M2I4NzBmNjZiODEwNWQ3
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTEzNyw3ICsxMzcs
OCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAg
ICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIiks
IHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKQEAgLTE0NSw3ICsxNDYsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJl
bmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJp
YnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogI2VuZGlmCiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCmluZGV4IDgwZmFmMzUxMDU0N2EyYWRlNzdjYjdlYzk1YjI5MTkyZDkwMWFhNDku
LmVmNjYwMzM0ZTMxODFiNjdkZTUyNGIzZDM1ZGYxNjU2NGY2NTZhZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTEwOCw3ICsxMDgsOCBAQCB2b2lkIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJhU2VjcmV0QXR0cmlidXRlIiksIHN0cmxlbigiYVNlY3JldEF0
dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogICAgIGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVy
ZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRl
eCBiZmY0YzNiMDlkYTU5NDFiZmY3MWRjZGJiMzg1MjU0OGEwMGMzZjFkLi44NzgzZTE1YzI4MTM3
NjYzNGZkYzc1ZGVmZmM4NWRkYTk2NTQ4OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgdm9pZCBKU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG8KICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyKj4oY2VsbCk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
IGlmIChpc1Zpc2libGVOYW1lZFByb3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICByZXR1
cm4gaW1wbC5kZWxldGVOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGws
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5oCmluZGV4IDBlYTRiYjExYjg2MDUzMDExNjU3ZmQ2ZWE2M2YyNDZkNGQ4
MmU1MGEuLjEzOGQ0YzE4ZjhmNDZiYzM0MzMxMDliZDAzMjM5NTYzN2QwYWMzOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlND
OjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
QXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQp
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNzk0
ZDU5NzZmMTNmMDcxOGI0Y2VlNTE2MzM4MzBjY2QzMGYxYzMzMy4uNTc5ZjJhMGU2YThjN2E5MjU1
NjE5ZDg0NDUyNmJhOGRkYjJkYWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBK
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wg
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8K
IAogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KLSAg
ICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShj
ZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29s
IEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5z
aWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5oCmluZGV4IDc5MWJlMTgyZWIxYjM2OTY5MjFkZTk3Njk1MjcyOWYwYjRmMGIz
NGEuLjA1NWQzZGY5MjM4MThjMDA3NjdmMTg5NWRmNjcyNWY1YmMwZWRmZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9k
ZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGIz
Mzc2ZTNhOWZlNTJiOGEwYTZkM2Q0MDVhNmFhZmVjNDFiY2YwODcuLjI1MDIzYTMxYTE0NjQyMjg3
YTBiMWI1MGRkZjRkZjQ2MTlkZGYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgSlNHCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBhdXRvJiB0aGlzT2JqZWN0ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcio+KGNlbGwpOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
QEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZQogICAgICAgICBpbXBs
Lm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4g
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKaW5kZXggNTRlMDI1NDc4ZTFkYzM5OTA3MDcz
M2U0OTliMDE2MzE0OTAxMjQ5ZS4uYTg1OGEyNzE1NGJkM2M2MzY0ZmM0NWE2NDdmZjQyYjZiNDcy
NTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51
bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlND
ZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAKaW5kZXggZThkOTc0MTlhZmE1ZDlhZTY4ZGEwNGVhNTQxZWFiZjUwZDQ3ODczNi4u
ZjZmMzY2ZTIyMmU0MTQ0YTc0YjYzNzU0ZmJkMDc4OThmOThiNjZjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yMDks
NyArMjA5LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywg
bW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nh
c3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE8KICAgICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlk
ZUJ1aWx0aW5zOjpObz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSkpIHsKICAgICAgICAgcmV0dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAppbmRl
eCBhOTk0NWJhZmM2MTE0M2U1NzZmZmQ2MGZlYzhlZWU2OTY0YjlmMDMwLi4yZmVhOGQ5MGY0ZjRh
MTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpT
Qzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6
SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRl
bGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggMTEwMGFh
M2NlYzBiMWUxMGY3OTA3MzBhZjUxMzA5NzAwNjAwYjk1ZS4uMWZiM2YxYmVhOGRhZjJmMGQwOWUy
OTZjNTg3ZmZlMDQ3MDg2M2ZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTU3LDQ1ICsxNTcsNTIgQEAg
dm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAg
IGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2Vj
cmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9v
bGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlz
U2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1
cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFu
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuZG9tSXRlcmF0b3JFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbnRyaWVzIiks
IHN0cmxlbigiZW50cmllcyIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwot
ICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5kb21JdGVyYXRvckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImtl
eXMiKSwgc3RybGVuKCJrZXlzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
dmFsdWVzIiksIHN0cmxlbigidmFsdWVzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7Cisg
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiZm9yRWFjaCIpLCBzdHJsZW4oImZvckVhY2giKSk7CiAgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qg
c2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZs
YXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNGMxMDcxMDEzMTA5YjVm
ZWVjYjQzMjU3MTQ4NDA2OTJkODkwNmYyMS4uZjU2ODQzMjRhNjY3YmE5NmRlNzUzNjA4MTg3M2Qy
NTIwYWE4ZTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE5ODQsMTQgKzE5ODQsMTYgQEAgdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2IKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJlbmFibGVk
QXRSdW50aW1lQXR0cmlidXRlU3RhdGljIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
ICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAgICAgfQogI2VuZGlmCiB9CkBAIC0yMzQ3LDkwICsyMzQ5LDEwNCBAQCB2b2lkIEpTVGVzdE9i
alByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAjZW5kaWYKICAgICBpZiAoISh3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxk
KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVy
ZUVuYWJsZWQoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpLCBzdHJsZW4oImVuYWJsZWRJblNwZWNpZmljV29y
bGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCF3b3JsZEZvckRPTU9iamVjdCgq
dGhpcykuc29tZVdvcmxkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJ3b3JsZFNwZWNpZmljTWV0
aG9kIiksIHN0cmxlbigid29ybGRTcGVjaWZpY01ldGhvZCIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzU2VjdXJlQ29udGV4dCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0
UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRC
b29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxl
bigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIWpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhw
b3NlZFRvV2luZG93RnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2lu
ZG93RnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rp
b24iKSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBp
ZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCl8fCBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWxsb3dz
TWVkaWFEZXZpY2VzKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigibWVkaWFEZXZpY2VzIiksIHN0
cmxlbigibWVkaWFEZXZpY2VzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4
dCgpfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJTY2hlbWUoKSkpIHsKICAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJzZXJ2aWNlV29ya2VycyIpLCBzdHJsZW4oInNlcnZpY2VXb3JrZXJzIikpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIShSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmUxRW5hYmxlZCgpKSkgewogICAgICAg
ICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVk
QXRSdW50aW1lQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJydW50aW1lQ29uZGl0aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpLCBzdHJsZW4o
InJ1bnRpbWVDb25kaXRpb25hbGx5UmVhZFdyaXRlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4
cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
aW5kb3dBdHRyaWJ1dGUiKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAg
ICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0
cmlidXRlIiksIHN0cmxlbigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIp
KTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
ICAgIC8vIEFkZGluZyBiYWNrIGF0dHJpYnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRlciByZW1v
dmluZyB0aGUgcmVhZC13cml0ZSB2YXJpYW50IGFib3ZlLiAKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCBmZWViZGVmN2JjNDVlOThjOTMwOGZk
ZmJkZTExMGI5OWZkZGRjYTJjLi4zMmMxM2I5ZWI0MDcwODM1ZWIyNTgzNzE5NmQ3ODMyNThhYzU5
NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTM5MSw4ICszOTEs
OSBAQCBib29sIF9OUE5fUmVtb3ZlUHJvcGVydHkoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBpZiAoaS0+aXNTdHJpbmcoKSkKLSAgICAg
ICAgICAgIG9iai0+aW1wLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iai0+aW1w
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSkpOworICAgICAgICAgICAgb2JqLT5pbXAtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxHbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmplY3QsIGktPnN0cmlu
ZygpKSwgc2xvdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9iai0+aW1wLT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChvYmotPmltcCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgaS0+bnVtYmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0KaW5kZXggMjJmMGI4ZDlkOGZhZTRhNzljNmI2MzFlOTM1Y2I2YWRjN2Q5
NGZmZi4uZGJjNmQzYjFlMTlmOWMyMWQ5YjYwYzE3ZWRmZjk3MTYwMDY3YzA3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpAQCAtNDU3LDggKzQ1
Nyw5IEBAIC0gKHZvaWQpcmVtb3ZlV2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGds
b2JhbE9iamVjdDsKKyAgICBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogCi0gICAgW3Nl
bGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYgX2ltcF0sIGxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFN0cmluZyhrZXkp
KSk7CisgICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoW3Nl
bGYgX2ltcF0sIGxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IFN0cmluZyhrZXkpKSwgc2xvdCk7CiAKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggNWVkMjFm
MTM0ZWY0YWFiNWRjMGM1NWE0NWRlNmE2M2QyN2M2YmUyZS4uNjIyOTYzNjhlYmI5MGM1MGI5ZGU3
ZmEwNzgyYzljNmZhMjg1OTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIEpT
VmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKTsKIAogICAgIGJvb2wgdG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9rZW4gYmVjYXVzZSBub25l
IG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBXZSBuZWVkIHRvIHNvbHZl
IHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCmluZGV4IDE5ZWQxOWNiYzdhZTNlZTQ2Nzc5NmIxMDNjYmZlNzYxNjA5YWQ3
MzAuLjZlODc3ZDJlYjdmNDRkMDNhMjhlMTcxMDgzYmQzZDBmMGJiOTg4OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI5MCw3ICsyOTAsNyBAQCBD
YWxsVHlwZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwg
Q2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKIH0KIAotYm9v
bCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCA0ZDI5N2M3MGQ2YjFiNmMxYWY4OGY5MTRiZTg1ZjYw
ZGYwM2NjOWIxLi5lYzM1ODhmYzU2NTk1NTNmNTI3MjgzYzU4YTczNTgwMjEzMjlhYzVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAg
Ym9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09iamVjdC0+Z2V0Q29uY3Jl
dGVBcnJheSgpLT5zZXRWYWx1ZUF0KGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4LCB2YWx1ZSk7
CiB9CiAKLWJvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZUFycmF5OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90JikKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuaAppbmRleCBmY2Y1ZTMzZmIxMTQwMTg1MTA3OTkzMGZiZDExNzYxMzU0NTJjN2U2Li4y
OTgxMmE2NmQ2ZjAxMjRlMzgzNjI1Zjk1NjAxOWNhMzNiYzNiZDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7CiAgICAgCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgIAogICAg
IHVuc2lnbmVkIGdldExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXktPmdldExlbmd0aCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAppbmRleCBhMDM2YjY2
NjJkNDg3MmY2OGRjNTI2NDViYTFhZjJiYTE1MzMwMzJkLi45ZDVkNjBkZWYzNTc1NGJlMWUwZTA2
MjBlNDFlZGI5OGVmZTM5ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpCitib29sIFJ1bnRpbWVPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAgIC8vIENhbiBuZXZlciByZW1vdmUgYSBwcm9wZXJ0
eSBvZiBhIFJ1bnRpbWVPYmplY3QuCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAppbmRleCA2Y2JmN2JmNzk2YjBhODk0MDRiOTQyMjc1ZDY1MWU2
MGU3MzI0NTgyLi4zYzEwZDhiZDUwZjNiN2RhYTQ4NDIyMTRiOWUwNGYwNDNhZmRmMmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgc3RhdGlj
IENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBPYmplY3QuY3BwCmluZGV4IDJlZmIyMjUyM2Y5MjFlOTJhYmQwMjE2ZWIwY2QxZmZkMTAw
MzYyYmUuLjA1ZDEyOTI5Mzk1ODJmMDRjNDMyZDMwYzE0MmRiYTVkYWEwYmYxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBP
YmplY3QuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBKU05QT2JqZWN0OjpwdXQoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4g
anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKS0+ZGVsZXRlUHJvcGVydHkobGV4aWNhbEdsb2JhbE9i
amVjdCwgbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmgKaW5kZXggODU1ODg5NDlhMzA2MDRjNjlmNzdjY2MzZjYwZTU0Njk3N2ZmYWM2ZC4uNDgw
M2MwYmM1NzFmOTc3ZGRjMjcyMmJiYWI5NmI2ZDI3YzJhOWM3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaApAQCAt
OTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QSlNPYmplY3QuY3BwCmluZGV4IDM2ZjI4ZWU2ZmIwMTAyZDhjMTc3MTNjNjA4YjYxNGVh
Zjg1ZGRiNzYuLjhiOWZjZGYzMDg1MmQxZDIyMmE1YjNiZDU5MDZkYTRiYWZlNDNhNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
SlNPYmplY3QuY3BwCkBAIC0yMjksOCArMjI5LDkgQEAgYm9vbCBOUEpTT2JqZWN0OjpyZW1vdmVQ
cm9wZXJ0eShOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogICAgICAgICAgICAgc2NvcGUuY2xl
YXJFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgbV9qc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShtX2pzT2JqZWN0LmdldCgpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKKwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgbV9qc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShtX2pzT2JqZWN0LmdldCgpLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
IW1fanNPYmplY3QtPmhhc1Byb3BlcnR5KGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJS
ZXAtPm51bWJlcigpKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCAzMDMyYWZhMjgwZmE5
MjdkODc3MzIwZWI4MWNiZDkwNzEwMjU1OTdlLi4xMmNlNDA5YzU0M2MyMjg4MjI3NzE5YjJkNDEw
OGJmMmE4NzlkNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CkBAIC0xMTQxLDggKzExNDEsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
cmVtb3ZlUHJvcGVydHkodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IElkZW50aQogICAgICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IAotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisKKyAgICBEZWxldGVQcm9wZXJ0eVNs
b3Qgc2xvdDsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIHNjb3Bl
LmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE0NmE3NTVhZDlmOTMyYjFi
NTE3MjljYTQwNmZjNGYxOGU5N2UyNzUuLjlhZmI0M2NlZjkwNzMzNDcyOWFjMDcyYjhjZTMxYWFj
MWMwNTU4YmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAtMDItMjQgIEp1c3RpbiBNaWNoYXVkICA8anVz
dGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkg
aWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanM6
CisgICAgICAgIChkZWxldGUuQy5wcm90b3R5cGUueik6CisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanM6IEFkZGVkLgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAgICAgIChhc3NlcnRf
bmVxKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9Jbmxp
bmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC5tYWtlRm9vNik6CisgICAgICAg
IChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9uZXEu
dGVzdFBvbHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
aW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3Nl
cnRfZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChhc3NlcnRfdGhyb3dzKToK
KyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNz
ZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLm1h
a2VGb28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lu
bGluZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZC5tYWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwu
dGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2Fj
aGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9v
NCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RD
YWNoZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVy
dHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5qczoKKyAgICAgICAgKiBzdHJlc3MvZGVsZXRl
LXByb3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAg
ICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0
X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5v
SW5saW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3Nl
cnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVC
eUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGlu
ZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0
eURlbGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURl
bGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1p
c3MubWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRl
QnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleC5tYWtlRm9vNSk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxC
eVZhbC5tYWtlRm9vNik6CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBv
bHltb3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVs
QnlWYWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLm1ha2VGb283KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxldGVCeVZhbCk6CisgICAgICAg
IChub0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLm1h
a2VGb284KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RCaWdpbnREZWxldGVCeVZhbC50ZXN0U3lt
Ym9sRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN5bWJvbERlbGV0ZUJ5VmFs
LnRlc3RPYmpEZWxldGVCeVZhbC5tYWtlRm9vOSk6CisgICAgICAgIChub0lubGluZS50ZXN0U3lt
Ym9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RPYmpEZWxldGVCeVZhbC50ZXN0U3RyaWN0Lm1ha2VGb28xMCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdCk6CisgICAgICAgIChub0lubGluZS50ZXN0
U3RyaWN0LnRlc3RPdmVycmlkZS5hcnIuaik6CisgICAgICAgIChub0lubGluZS50ZXN0U3RyaWN0
LnRlc3RPdmVycmlkZSk6CisgICAgICAgIChub0lubGluZS50ZXN0T3ZlcnJpZGUpOgorCiAyMDIw
LTAyLTE5ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAg
ICBDb21wdXRlZCBQcm9wZXJ0aWVzIHdpdGggaW5jcmVtZW50IHNvbWV0aW1lcyBwcm9kdWNlcyBp
bmNvcnJlY3QgcmVzdWx0cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVs
ZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCmluZGV4IDQ5YTMx
YjdmMjQ3YzFiZDBhY2E4MmNiMjJkZjIwZThmMWJmNjFiZGQuLjU0YmJhODJlNjk5YzYyY2NjYTg5
NDUxNmU2MmI3ZTZjYTFmNTEyMDIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcworKysgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKQEAg
LTEsNCArMSw0IEBACi0vL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAz
IiAjIGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5CisvL0Agc2tpcCBpZiAkbW9kZWwg
PX4gL15BcHBsZSBXYXRjaC8KIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgaWYgKCFiKQogICAg
ICAgICB0aHJvdyBuZXcgRXJyb3I7CkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGRvVGVzdCh6
VmFsKSB7CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3IgKGxldCBpPTA7IGk8MTAwMDA7ICsr
aSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CiAgICAgY29uc3QgWCA9IHsg
aSB9CiAgICAgQy5wcm90b3R5cGUueiA9IFgKICAgICBkb1Rlc3QoWCkKQEAgLTM2LDcgKzM2LDcg
QEAgZm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKIAogZGVsZXRlIEMucHJvdG90eXBlLnoK
IAotZm9yIChsZXQgaT0wOyBpPDEwMDAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAy
MDAwMDAwOyArK2kpIHsKICAgICBnZXRaKHt6OiBpfSkKICAgICBkb1Rlc3QodW5kZWZpbmVkKQog
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlu
bGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZiODZk
NTVhMTlmOWMwOWU1MGRlMWJkNTYzOTRkYTUxMGU0Yzc0OQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1v
cnBoaWMuanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHNraXAgaWYgJG1vZGVsID1+IC9eQXBwbGUg
V2F0Y2gvCisKK2Z1bmN0aW9uIEMocHJvcCkgeworICAgIHRoaXNbcHJvcF0gPSA0CisgICAgZGVs
ZXRlIHRoaXNbcHJvcF0KK30KK25vSW5saW5lKEMpCisKK2Z1bmN0aW9uIGZvbyhvLCBwcm9wKSB7
CisgICAgZGVsZXRlIG9bcHJvcF0KK30KK25vSW5saW5lKGZvbykKKworZnVuY3Rpb24gRihwcm9w
KSB7CisgICAgdGhpc1twcm9wXSA9IDQKKyAgICBmb28odGhpcywgcHJvcCkKK30KK25vSW5saW5l
KEYpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICBuZXcgQygiZm9v
MSIpCisgICAgbmV3IEYoImZvbzEiKQorICAgIG5ldyBDKCJmb28yIikKKyAgICBuZXcgRigiZm9v
MiIpCisgICAgbmV3IEMoImZvbzMiKQorICAgIG5ldyBGKCJmb28zIikKKyAgICBuZXcgQygiZm9v
NCIpCisgICAgbmV3IEYoImZvbzQiKQorICAgIG5ldyBDKCJmb281IikKKyAgICBuZXcgRigiZm9v
NSIpCisgICAgbmV3IEMoImZvbzYiKQorICAgIG5ldyBGKCJmb282IikKKyAgICBuZXcgQygiZm9v
NyIpCisgICAgbmV3IEYoImZvbzciKQorICAgIG5ldyBDKCJmb284IikKKyAgICBuZXcgRigiZm9v
OCIpCisgICAgbmV3IEMoImZvbzkiKQorICAgIG5ldyBGKCJmb285IikKKyAgICBuZXcgQygiZm9v
MTAiKQorICAgIG5ldyBGKCJmb28xMCIpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDA4
NjNjNjQxYTlhNzlkZWM5ZmUxNDdhOTVhODNlZWM3M2ZmM2M5Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcwpA
QCAtMCwwICsxLDM1IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KKwor
ZnVuY3Rpb24gQygpIHsKKyAgICB0aGlzLnggPSA0OworICAgIGRlbGV0ZSB0aGlzLngKK30KK25v
SW5saW5lKEMpCisKK2Z1bmN0aW9uIEQoKSB7CisgICAgZGVsZXRlIHRoaXMueAorfQorbm9Jbmxp
bmUoRCkKKworZnVuY3Rpb24gZm9vKG8pIHsKKyAgICBkZWxldGUgby54Cit9Citub0lubGluZShm
b28pCisKK2Z1bmN0aW9uIEUoKSB7CisgICAgdGhpcy54ID0gNAorICAgIGZvbyh0aGlzKQorfQor
bm9JbmxpbmUoRSkKKworZnVuY3Rpb24gRigpIHsKKyAgICBmb28odGhpcykKK30KK25vSW5saW5l
KEYpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIG5ldyBDCisg
ICAgbmV3IEQKKyAgICBuZXcgRQorICAgIG5ldyBGCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZS5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFi
bGUtc3RydWN0dXJlLmpzCmluZGV4IDc3OTVkYzU4MTU3OGU0YzM5ODFjMjJhYzg3NmM0NTU0MTNl
NjRkM2MuLmE5MzlhYWUzYWM4YWNjYzIyMTRkZDdlN2Q4MDI0NDIxYTgxNjQ1ZDkgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFi
bGUtc3RydWN0dXJlLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9w
ZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCkBAIC0yNCw1ICsyNCw1IEBAIGZ1bmN0
aW9uIGRvVGVzdCgpIHsKIH0KIG5vSW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwx
MDAwMDAwMDsgKytpKSBkb1Rlc3QoKQorZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyArK2kp
IGRvVGVzdCgpCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1j
aGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9w
ZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcwppbmRleCA0MDNjN2MwOWNjMTIzZjNi
MTg1NDY4MGI2YzE3ZGQ0NTZhNWRlZjMxLi5hNGJhMWU0NGRhYzhhOWEzMzFkZTAzYjA1MzVlMzky
NDkzZTY1YzExIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hl
Y2stc3RydWN0dXJlLXRyYW5zaXRpb24uanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXBy
b3BlcnR5LWNoZWNrLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpzCkBAIC0xMiw2ICsxMiw5IEBAIGZ1
bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgewogICAgIGlmIChhID09PSBiKQogICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOwogfQor
bm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2VxKQorbm9JbmxpbmUoYXNzZXJ0X25l
cSkKIAogZnVuY3Rpb24gc2Qob2JqKSB7CiAgICAgbGV0IGRhdGEgPSAkdm0uZ2V0U3RydWN0dXJl
VHJhbnNpdGlvbkxpc3Qob2JqKQpAQCAtMzEsNiArMzQsOCBAQCBmdW5jdGlvbiBzaWQob2JqKSB7
CiAgICAgbGV0IGRhdGEgPSBzZChvYmopCiAgICAgcmV0dXJuIGRhdGFbZGF0YS5sZW5ndGgtMV0u
aWQKIH0KK25vSW5saW5lKHNkKQorbm9JbmxpbmUoc2lkKQogCiBmdW5jdGlvbiB0ZXN0RGVsZXRl
SXNOb3RVbmNhY2hlYWJsZShpKSB7CiAgICAgbGV0IGZvbyA9IHt9CkBAIC02Miw2ICs2Nyw3IEBA
IGZ1bmN0aW9uIHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxlKGkpIHsKICAgICBhc3NlcnRfZXEo
JHZtLmdldENvbmN1cnJlbnRseShmb28sICJiYXIiK2kpLCAxKQogICAgIGFzc2VydChmb29bImJh
ciIgKyBpXSA9PT0gMSkKIH0KK25vSW5saW5lKHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxlKQog
CiBmdW5jdGlvbiB0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVzKGkpIHsKICAgICBsZXQgZm9vID0g
e30KQEAgLTEwMCw2ICsxMDYsOCBAQCBmdW5jdGlvbiB0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVz
KGkpIHsKICAgICBhc3NlcnRfZXEoZGF0YVtkYXRhLmxlbmd0aC0yXS5wcm9wZXJ0eSwgImJhciIg
KyBpKQogfQogCitub0lubGluZSh0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVzKQorCiBmdW5jdGlv
biB0ZXN0Q2FuRmxhdHRlbihpKSB7CiAgICAgbGV0IGZvbyA9IHt9CiAgICAgZm9yIChsZXQgaj0w
OyBqPDUwMDsgKytqKSB7CkBAIC0xMzEsNiArMTM5LDcgQEAgZnVuY3Rpb24gdGVzdENhbkZsYXR0
ZW4oaSkgewogICAgICAgICAgICAgYXNzZXJ0X2VxKHZhbCwgdW5kZWZpbmVkKQogICAgIH0KIH0K
K25vSW5saW5lKHRlc3RDYW5GbGF0dGVuKQogCiBmdW5jdGlvbiB0ZXN0RGVsZXRlV2l0aElubGlu
ZUNhY2hlKCkgewogICAgIE9iamVjdC5wcm90b3R5cGUuZ2xvYmFsUHJvcGVydHkgPSA0MgpAQCAt
MTc1LDYgKzE4NCw3IEBAIGZ1bmN0aW9uIHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUoKSB7CiAK
ICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQorbm9JbmxpbmUodGVzdERlbGV0ZVdpdGhJbmxpbmVD
YWNoZSkKIAogdGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSgpCiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNTNlMDEyMTZk
ZjBjM2Y4ZTYyYTY5ODRlZmIyYTRiN2ZjZjY5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsNTQ2IEBA
CisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChj
b25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9lcShhLCBiKSB7Cisg
ICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxl
ZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikg
eworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBm
YWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dz
KGZ1bikgeworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bigp
CisgICAgfSBjYXRjaCB7CisgICAgICAgIHRocmV3ID0gdHJ1ZQorICAgIH0KKyAgICBhc3NlcnQo
dGhyZXcpCit9Citub0lubGluZShhc3NlcnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGlu
ZShhc3NlcnRfbmVxKQorbm9JbmxpbmUoYXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gdGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbygpIHsKKyAgICAgICAg
bGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisg
ICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9J
bmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0
IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vKCkKKyAgICB9
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9v
ID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2Vy
dF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIg
aW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0g
MSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIg
KyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25v
SW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxl
RGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzIoKSB7CisgICAgICAgIGxldCBm
b28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAg
ICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5s
aW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28yKCkKKyAgICB9
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9v
ID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2Vy
dF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIg
aW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0g
MSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIg
KyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVh
YmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28zKCkgeworICAgICAg
ICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIK
KyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0cnVlKQorICAgICAgICBkZWxldGUg
Zm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28z
KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28zKCkKKyAgICB9CisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisK
KyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAwKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQor
ICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAg
ICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIi
IGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKCkgeworICAgIGZ1bmN0
aW9uIG1ha2VGb280KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9
IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6
LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAgICAg
IGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKworICAgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAgIHZhbHVlOiA0MiwKKyAgICAgICAg
ICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOworICAgICAgICBhc3NlcnRfZXEoZGVs
ZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29i
YXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZvb2JhciwgNDIpCisgICAgICAgIHJl
dHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzQpCisKKyAgICBhcnIgPSBuZXcg
QXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
YXJyW2pdID0gbWFrZUZvbzQoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9v
LmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAx
KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQor
ICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMK
KyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJi
YXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRN
aXNzKQorCitmdW5jdGlvbiB0ZXN0RGVsZXRlSW5kZXgoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZv
bzUoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBmb29bMF0gPSAyMworICAgICAgICBmb29bMV0gPSAyNQor
ICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGFzc2VydF9l
cShkZWxldGUgZm9vWzFdLCB0cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICBy
ZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb281KQorCisgICAgYXJyID0gbmV3
IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb281KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2Vx
KE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0g
MQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9
IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCgh
KCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAg
IGFzc2VydF9lcShmb29bMF0sIDIzKQorICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCB1bmRlZmlu
ZWQpCisgICAgICAgIGZvb1sxXSA9IDEKKyAgICAgICAgYXNzZXJ0X2VxKGZvb1sxXSwgMSkKKyAg
ICB9Cit9Citub0lubGluZSh0ZXN0RGVsZXRlSW5kZXgpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9y
cGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNigpIHsKKyAgICAgICAgbGV0
IGZvbyA9IHt9CisgICAgICAgIGZvb1siYmF6IitpXSA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIK
KyAgICAgICAgZGVsZXRlIGZvb1siYmF6IitpXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb282KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb282
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAg
ICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0
KCEoImJheiIraSBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQo
Zm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0
KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiK2kgaW4gZm9vKSkK
KworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKQorCitmdW5jdGlv
biB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzcoKSB7Cisg
ICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MG5dID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxl
dGUgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTBuXQorICAgICAg
ICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb283KQorCisgICAgYXJyID0g
bmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGFycltqXSA9IG1ha2VGb283KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MG4gaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZv
by5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChm
b29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisg
ICAgfQorfQorbm9JbmxpbmUodGVzdEJpZ2ludERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0
U3ltYm9sRGVsZXRlQnlWYWwoKSB7CisgICAgY29uc3Qgc3ltYm9sID0gU3ltYm9sKCdmb28nKTsK
KworICAgIGZ1bmN0aW9uIG1ha2VGb284KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAg
ICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydCghKFN5bWJvbCgnZm9vJykgaW4gZm9v
KSkKKyAgICAgICAgYXNzZXJ0KHN5bWJvbCBpbiBmb28pCisgICAgICAgIGZvby5iYXIgPSAyCisg
ICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAg
IG5vSW5saW5lKG1ha2VGb284KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9y
IChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb284KCkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29u
c3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAg
IGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEo
c3ltYm9sIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28u
YmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9v
WyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKworICAg
IH0KK30KK25vSW5saW5lKHRlc3RTeW1ib2xEZWxldGVCeVZhbCkKKworZnVuY3Rpb24gdGVzdE9i
akRlbGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0IHN5bWJvbCA9IHsgaTogImZvbyIgfTsKKworICAg
IGZ1bmN0aW9uIG1ha2VGb285KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9v
W3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydChzeW1ib2wgaW4gZm9vKQorICAgICAgICBhc3Nl
cnQoISh7IGk6ICJmb28iIH0gaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAg
ZGVsZXRlIGZvb1tzeW1ib2xdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9Jbmxp
bmUobWFrZUZvbzkpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzkoKQorICAgIH0K
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28g
PSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0
X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wg
aW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0g
MSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIg
KyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQor
bm9JbmxpbmUodGVzdE9iakRlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0U3RyaWN0KCkgewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIG1ha2VGb28xMCgpIHsKKyAgICAgICAg
bGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisg
ICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2Vx
KGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShm
b28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3Vy
YWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVs
ZXRlIGZvby5mb29iYXIpCisgICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAg
ICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vMTApCisKKyAgICBhcnIg
PSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgYXJyW2pdID0gbWFrZUZvbzEwKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNz
ZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxl
bmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJh
ZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsg
al0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3Nl
cnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTdHJpY3QpCisKK2Z1
bmN0aW9uIHRlc3RPdmVycmlkZSgpIHsKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gZnVuY3Rpb24o
KSB7IH0KKyAgICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNPd25MZW5ndGhQcm9wZXJ0eShhcnJbal0p
LCB0cnVlKQorICAgICAgICBkZWxldGUgYXJyW2pdLmxlbmd0aAorICAgICAgICBhc3NlcnRfZXEo
JHZtLmhhc093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIGZhbHNlKQorICAgIH0KKworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0K
KworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAg
IGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T3ZlcnJpZGUpCisKK2Z1bmN0aW9uIHRlc3ROb25P
YmplY3QoKSB7CisgICAgZnVuY3Rpb24gZGVsZXRlSXQoZm9vKSB7CisgICAgICAgIGFzc2VydChk
ZWxldGUgZm9vLmJheikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShk
ZWxldGVJdCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSB7IGJhejogaiB9CisgICAgfQorCisg
ICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFy
cltqXQorCisgICAgICAgIGFzc2VydCgiYmF6IiBpbiBmb28pCisgICAgICAgIGRlbGV0ZUl0KGZv
bykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9CisKKyAgICBhc3NlcnQo
ZGVsZXRlSXQoImJheiIpID09ICJiYXoiKQorICAgIGRlbGV0ZUl0KFN5bWJvbCgiaGkiKSkKK30K
K25vSW5saW5lKHRlc3ROb25PYmplY3QpCisKK2Z1bmN0aW9uIHRlc3ROb25PYmplY3RTdHJpY3Qo
KSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rpb24gZGVsZXRlSXQoZm9vKSB7Cisg
ICAgICAgIGFzc2VydChkZWxldGUgZm9vWyJiYXoiXSkKKyAgICAgICAgcmV0dXJuIGZvbworICAg
IH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSB7IGJh
ejogaiB9CisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydCgiYmF6IiBpbiBmb28pCisg
ICAgICAgIGRlbGV0ZUl0KGZvbykKKyAgICAgICAgZGVsZXRlSXQoNSkKKyAgICAgICAgYXNzZXJ0
KCEoImJheiIgaW4gZm9vKSkKKyAgICB9CisKKyAgICBhc3NlcnQoZGVsZXRlSXQoImJheiIpID09
ICJiYXoiKQorICAgIGRlbGV0ZUl0KFN5bWJvbCgiaGkiKSkKKworICAgIGxldCBmb28gPSB7fQor
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdiYXonLCB7CisgICAgICB2YWx1ZTogNDIs
CisgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93cygo
KSA9PiBkZWxldGVJdChmb28pKQorfQorbm9JbmxpbmUodGVzdE5vbk9iamVjdFN0cmljdCkKKwor
ZnVuY3Rpb24gdGVzdEV4Y2VwdGlvblVud2luZCgpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICBmdW5jdGlvbiBtdXRhdGVUaGVtKGEsYixjLGQsZSxmLGcsaCxpKSB7CisgICAgICAgIGcuaSA9
IDQyCisgICAgfQorICAgIG5vSW5saW5lKG11dGF0ZVRoZW0pCisKKyAgICBmdW5jdGlvbiBkZWxl
dGVJdChmb28pIHsKKyAgICAgICAgbGV0IGNhdWdodCA9IGZhbHNlCisKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHZhciBhID0geyBpOiAxIH0KKyAgICAgICAgICAgIHZhciB2ID0geyBpOiAx
MCB9CisgICAgICAgICAgICB2YXIgYiA9IHsgaTogMTAwIH0KKyAgICAgICAgICAgIHZhciBjID0g
eyBpOiAxMDAwIH0KKyAgICAgICAgICAgIHZhciBkID0geyBpOiAxMDAwMCB9CisgICAgICAgICAg
ICB2YXIgZSA9IHsgaTogMTAwMDAwIH0KKyAgICAgICAgICAgIHZhciBmID0geyBpOiAxMDAwMDAw
IH0KKyAgICAgICAgICAgIHZhciBnID0geyBpOiAxMDAwMDAwMCB9CisgICAgICAgICAgICB2YXIg
aCA9IHsgaTogMTAwMDAwMDAwIH0KKyAgICAgICAgICAgIHZhciBpID0geyBpOiAxMDAwMDAwMDAw
IH0KKworICAgICAgICAgICAgbXV0YXRlVGhlbShhLGIsYyxkLGUsZixnLGgsaSkKKworICAgICAg
ICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKworICAgICAgICAgICAgYSA9IGIgPSBjID0gZCA9IGUg
PSBmID0gZyA9IGggPSBpCisgICAgICAgIH0gY2F0Y2ggeworICAgICAgICAgICAgYXNzZXJ0X2Vx
KGEuaSwgMSkKKyAgICAgICAgICAgIGFzc2VydF9lcShpLmksIDEwMDAwMDAwMDApCisgICAgICAg
ICAgICBhc3NlcnRfZXEoZy5pLCA0MikKKyAgICAgICAgICAgIGNhdWdodCA9IHRydWUKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gY2F1Z2h0CisgICAgfQorICAgIG5vSW5saW5lKGRlbGV0ZUl0
KQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCAxMDAwMDA7ICsraikgeworICAgICAgICBhc3Nl
cnQoIWRlbGV0ZUl0KHsgaiwgYmF6OiA1IH0pKQorICAgIH0KKworICAgIGxldCBmb28gPSB7fQor
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdiYXonLCB7CisgICAgICB2YWx1ZTogNDIs
CisgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgfSk7CisKKyAgICBhc3NlcnQoZGVsZXRl
SXQoZm9vKSkKK30KK25vSW5saW5lKHRlc3RFeGNlcHRpb25VbndpbmQpCisKK2Z1bmN0aW9uIHRl
c3RURFooKSB7CisgICAgZGVsZXRlIGZvby54CisgICAgbGV0IGZvbyA9IHsgeDogNSB9Cit9Citu
b0lubGluZSh0ZXN0VERaKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAg
IHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwo
KQorICAgIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVE
ZWxldGVCeUlkTWlzcygpCisgICAgdGVzdERlbGV0ZUluZGV4KCkKKyAgICB0ZXN0UG9seW1vcnBo
aWNEZWxCeVZhbChpKQorICAgIHRlc3RCaWdpbnREZWxldGVCeVZhbCgpCisgICAgdGVzdFN5bWJv
bERlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0U3RyaWN0KCkKKyAgICB0ZXN0T3ZlcnJpZGUoKQorICAg
IHRlc3ROb25PYmplY3QoKQorICAgIHRlc3ROb25PYmplY3RTdHJpY3QoKQorICAgIGFzc2VydF90
aHJvd3ModGVzdFREWikKK30KKwordGVzdEV4Y2VwdGlvblVud2luZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391684</attachid>
            <date>2020-02-25 14:16:58 -0800</date>
            <delta_ts>2020-02-25 14:43:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200225141657.patch</filename>
            <type>text/plain</type>
            <size>220164</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YTM4MjY3ZDFiZGNhOGM1NWNhOTkzNWE1ZGY5MzMxZjk5MTE0MTc4Li4zNDM4MDVmYzZjOGUzNWZi
MWJkODdhYjM5M2U0MTczMjhkOTg1NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMjAtMDItMjQgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgaW5saW5l
IGNhY2hpbmcgZm9yIGRlbGV0ZUJ5SWQvdmFsIGZvciBiYXNlbGluZSBvbmx5LiBXZSBhbHNvIGZp
eCBhIGNvbmN1cnJlbmN5IGJ1ZyBpbiBJQ1N0YXRzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICAg
IFdlIGFkZCB0aHJlZSBuZXcgYWNjZXNzIGNhc2VzIChubyBpbmxpbmUgY29kZSBpcyBlbWl0dGVk
IGF0IHRoaXMgdGltZSk6IAorICAgICAgICAtIERlbGV0ZSBpcyBhIGNhY2hlZCBkZWxldGUgb2Yg
YW4gZXhpc3RpbmcgcHJvcGVydHkKKyAgICAgICAgLSBEZWxldGVNaXNzIGlzIGEgZGVsZXRlIG9m
IGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICAtIERlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSBpcyBhIGRlbGV0ZSBvZiBhIHByb3BlcnR5IHRoYXQgZXhpc3RzLCBidXQgc2hvdWxk
IG5vdCBiZSBkZWxldGVkLgorICAgICAgICBUaGVyZSBhcmUgbm8gY29uZGl0aW9ucyByZXF1aXJl
ZCBmb3IgdGhlc2UgY2FjaGVzLCBzaW5jZSB0aGUgc3RydWN0dXJlIGlkIG11c3QgY2hhbmdlIGFu
ZCB0aGUgcHJvdG90eXBlIGRvZXMgbm90IG1hdHRlci4KKyAgICAgICAgVGhpcyBnaXZlcyB0aGUg
Zm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHM6CisKKyAgICAgICAgZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUgKG5ldXRyYWwpCisgICAgICAgIGRlbGV0ZS1w
cm9wZXJ0eS1pbmxpbmUtY2FjaGUgICAgICAgICAgICAgIGRlZmluaXRlbHkgMy45MDk2eCBmYXN0
ZXIKKyAgICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYyAgZGVm
aW5pdGVseSAxLjUyMzl4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHktZnJvbS1wcm90
b3R5cGUtY2hhaW4gICAgICAobmV1dHJhbCkKKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3REZWxl
dGVQcm9wZXJ0eUZvcktleSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRl
RGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFt
ZU1hdGNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlBy
b3BlcnR5Q2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50
Q2VsbCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmRvZXNDYWxscyBjb25zdCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6c3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6bmV3U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlclNjb3BlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJT
Y29wZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5o
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGREZWxCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkRGVsQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxCeSk6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hEZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6
CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVhYmxlSWRlbnRpZmllcjo6Q2FjaGVh
YmxlSWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAg
KiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3Vt
ZW50czo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6RGVsZXRlUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXRDb25maWd1cmFi
bGVNaXNzKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpzZXROb25jb25maWd1
cmFibGUpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OnNldEhpdCk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6aXNDYWNoZWFibGVEZWxldGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzRGVsZXRlSGl0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3Mg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzTm9uY29uZmlndXJh
YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90OjpjYWNoZWRPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmRpc2FibGVDYWNo
aW5nKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
RXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1
bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6
OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0dldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5j
cHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlv
bik6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6CisgICAgICAg
IChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9K
U09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6Cisg
ICAgICAgIChKU0M6OnZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuY3BwOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5Lmg6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOgorICAgICAgICAq
IHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc093bkxlbmd0
aFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgor
CiAyMDIwLTAyLTI0ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIExMSW50IHNob3VsZCBmYXN0IHBhdGggZm9yIGp0cnVlL2ZhbHNlIG9uIFN5bWJvbHMg
YW5kIE9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggNDA3YTM4YWIwMDdhNTM2ZGVhMDk0YTQ1M2JmODAzNjQwNmUxNGY5
Zi4uZTg1ZDdiNjBkZTczNmMwMzAxMTYxODM3NmIwZDNkMmE0ZGVmYzFjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMC0wMi0yNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6
CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmJ1aWxkTGlzdCBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlNwZWN0cnVtOjpjbGVhcik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpy
ZW1vdmVJZik6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjpiZWdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlNwZWN0cnVtOjplbmQpOiBEZWxldGVkLgorCiAyMDIwLTAyLTIzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gU2hyaW5rIFN0cnVj
dHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGUwZWVjMWQyZWIzNzYyNzZkYjU4ZmMyZDE4NGY4ZDk4MmEwZjIz
ZTYuLmE1N2M4ZWJkMGQwN2U5M2I2YzJlOTBhMzVjZGI0N2FlOTYzMjc4ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NSBAQAorMjAyMC0wMi0yNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJh
dGVEZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxw
ZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0
T2JqZWN0IHJlbW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1
bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2Fy
cmF5Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAyMC0wMi0yNCAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3Ig
dGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDQ5MDgxZWM5YjY1MGY4Mzdk
MzlkY2Y0ZTNkYjkyODNmYTIxNmMzMy4uMWMzNTZjZjBlNDcyNmUwMjc4YWYwZTk4NjU0OTA4OWFj
NjVhMGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yNCAgSnVzdGluIE1p
Y2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hl
IGRlbGV0ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KToKKwogMjAyMC0wMi0yNCAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQ
SSBmb3IgdGhlIHBsYXRmb3JtIGF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCA4ZjUwN2E0OWI0Y2Y3Mzg3OGQzMGNmMjcyZjc0M2VjZmZhNzJlNjdkLi5kMDdjOTU2
NWMwNmRlOTA2NjgzZGMyM2RkMGQ2OTZkZjEwMjEyNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMjQgIEp1c3RpbiBNaWNoYXVkICA8anVz
dGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkg
aWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpyZW1vdmVQcm9wZXJ0eSk6CisK
IDIwMjAtMDItMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBzb21lIGluY2x1ZGUgbWlzdGFrZXMgYW5kIG1ha2Ugc29tZSBjb2Rpbmcgc3R5bGUgdHdlYWtz
IHRvIFdlYktpdCBhbmQgV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAwMzRiMzU3YzA3MzhlMzQ5MTI1ODg1OGQ3MDY5
ODlmZWZjYjQ4MzNkLi45MmNhOTI0Nzc5NjJiYzA0YzdhOGViODZhMWY0MTVkMmIxODdmMzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMjAy
LDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAKICAgICBz
dGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IGNkNTExYmZkMjg0YTAxMzI1MmE2NDA1YTY3MDdhYWQx
MzdhMWJjY2IuLjAyY2VkYzc5NjZiZWMwYTUzYTliYzAyYTlmMzc4M2U3OWY3MzJlMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIH0KIAog
dGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLWJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00MTgsNyArNDE4LDcgQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2IKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBQYXJlbnQ6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CkBAIC00MjYs
NyArNDI2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIEpTQ2VsbDo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZt
LCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggZjdmOWRhYjNmMjhhZGMwZWFi
YjJiZGU4YjI1MDY3NzJhZDI1ZmZjZS4uOWRiODUyODE4MTNlMWFkOWE3NGFmZTI4MjRmZmMzNWIw
M2YwOTAxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAg
LTQ3OSw3ICs0NzksNyBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlGb3JLZXkoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUgogICAgIGlmIChoYW5kbGVF
eGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1
czo6RGlkVGhyb3cpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgcmVzdWx0ID0g
anNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaWRlbnQpOworICAgIGJvb2wgcmVzdWx0ID0gSlNDZWxsOjpkZWxldGVQcm9wZXJ0
eShqc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CiAgICAgaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
NTM0LDcgKzUzNCw3IEBAIGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByCiAKICAgICBKU09iamVjdCog
anNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAKLSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsKKyAgICBib29sIHJlc3VsdCA9IEpTQ2VsbDo6
ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLT5pZGVu
dGlmaWVyKCZ2bSkpOwogICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4
Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA5MWU0MjdjMzBjNTExNjNlZGQ5ZjEwNmQ0MmY5NWUwOWQwMmJlOWM0Li43
NTU2ZTk1NmZjNjMyZjdlMmI5ZDBlMWFkYmY3Y2E4MWY4ZThmMDRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MTUsNiArODE1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0RhdGVJbnN0YW5jZS5oCiAg
ICAgcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCiAgICAgcnVudGltZS9EZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaAorICAgIHJ1bnRpbWUvRGVsZXRlUHJvcGVydHlTbG90LmgKICAgICBydW50
aW1lL0RpcmVjdEFyZ3VtZW50c09mZnNldC5oCiAgICAgcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0
YWJsZS5oCiAgICAgcnVudGltZS9EaXNhbGxvd1Njb3BlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYWY0MmMyYWU4ZmU1OTJiZjZkNjgyODUzODk3NmQwY2Y2ZGE2ZGIxZi4uZmI3
NDU2NTE3ZjhmNzRjNjlmMWM5ZDViZGMyMDJjNGY2ZTQ0MTg1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTExNzgsNiArMTE3OCw3IEBACiAJCTcwRUNBNjA2MUFGREJFQTIwMDQ0
OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpT
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdD
QzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9
OworCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRB
MzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzNFMzc5OTQyMkUwRUY2NTAwOTMzNTY1IC8q
IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3Ry
ZW5ndGguaCAqLzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MDA4MTM5MUU5NUE4
RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTcx
LDYgKzM5NzIsNyBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdD
QjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4
QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVs
ZXRlUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0
ZVByb3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5MzIy
RTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgcGF0aCA9IGIzL0IzUmVk
dWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTk1
MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHBhdGgg
PSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxvYWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzA4NCw2ICs3MDg2LDcgQEAKIAkJCQlCQ0QyMDM0NzBFMTcxMzVF
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkNEMjAzNDgwRTE3MTM1RTAw
MkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCAqLywKIAkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3
OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8sCisJCQkJNzM0QjY1NTQyM0Y0QTMz
MTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovLAogCQkJCTBGRTA1MDBGMUFBOTA5
MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwICovLAogCQkJCTBGRTA1MDEwMUFBOTA5
MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuaCAqLywKIAkJCQkwRkUwNTAwRDFBQTkwOTEx
MDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNwcCAqLywKQEAgLTkyMDksNiArOTIx
Miw3IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVt
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmlu
ZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0
NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcz
NEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBEZXN0cnVjdGlvbk1vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFj
dEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBE
RkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNjYyLDcgKzEwNjY2
LDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0g
ewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0ZXMgPSB7Ci0JCQkJQnVpbGRJbmRl
cGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOwogCQkJCURlZmF1bHRCdWlsZFN5c3RlbVR5
cGVGb3JXb3Jrc3BhY2UgPSBPcmlnaW5hbDsKIAkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDA3
MDA7CiAJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDEwMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZGVmNjc1MjkzOWFlNTQ5ZDgxOWI1NmU4
NDAzNDQwODU5ODNiNTlmZS4uN2NhYjljMWIwM2I5NTM2YTBlY2U3MjdkNmM1MTM2MjI3YWFjODdk
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApA
QCAtNzMsNiArNzMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIHN3aXRjaCAodHlw
ZSkgewogICAgIGNhc2UgSW5IaXQ6CiAgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBEZWxldGVO
b25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgpAQCAtMTA2LDcgKzEw
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIs
IG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNz
Q2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGUoCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJh
bnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKQEAgLTEyMyw2ICsxMjUsMjIgQEAgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNp
dGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RG
TW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKKyAgICBWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCit7Cisg
ICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJ
RCh2bSkpOworICAgIGlmICghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIG9s
ZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAvLyBXZSBkbyBub3Qg
Y2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2Vs
bC4KKyAgICAgICAgLy8gU2VlIHRoZSBEZWxldGUgY29kZSBiZWxvdy4KKyAgICAgICAgYm9vbCBt
YXlOZWVkVG9DaGVja0NlbGw7CisgICAgICAgIG5ld1N0cnVjdHVyZS0+bWF5SGF2ZUluZGV4aW5n
SGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7CisKKyAgICAgICAgaWYgKG1heU5lZWRUb0NoZWNr
Q2VsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKK30KKwogQWNj
ZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjYyLDYgKzI4MCw5IEBAIGJvb2wgQWNj
ZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkgY29uc3QKICAgICBjYXNlIExv
YWQ6CiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBieV92YWwgZm9yIHRoZXNlIHB1
dHMsIGJ1dCB3ZSBkbyBjYXJlIGFib3V0IHRoZSBpZGVudGlmaWVyLgogICAgIGNhc2UgVHJhbnNp
dGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToK
KyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6
CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zMDksNiArMzMwLDkgQEAgYm9vbCBBY2Nlc3NDYXNl
OjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjaygpIGNvbnN0CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRl
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlzczoKICAgICBjYXNlIEdldEdldHRlcjoK
QEAgLTM1Niw2ICszODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNv
bnN0CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFu
c2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxl
OgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAgICBjYXNlIFJlcGxhY2U6IAogICAgIGNhc2UgTWlz
czoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTQ0Nyw2ICs0NzQsOSBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsKFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3Rvcikg
Y29uc3QKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgogICAgIGNhc2UgTG9hZDoKICAg
ICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25D
b25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAg
ICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00OTIsNiArNTIyLDkgQEAgYm9v
bCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxsKj4qIGNlbGxzVG9N
YXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOgogICAg
ICAgICBkb2VzQ2FsbHMgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIERlbGV0ZToK
KyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAg
ICAgY2FzZSBMb2FkOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBjYXNlIE1pc3M6CkBAIC02MTQs
NiArNjQ3LDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFjY2Vzc0Nhc2Um
IG90aGVyKSBjb25zdAogCiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAg
ICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNl
IERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOgogICAgIGNhc2UgTWlzczoKICAgICBjYXNl
IEdldEdldHRlcjoKQEAgLTY2Myw3ICs2OTksNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBl
IGFjY2VzcyBjaGFpbiA9ICIpOwogICAgICAgICBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLT5kdW1w
KHN0cnVjdHVyZSgpLCBvdXQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0g
VHJhbnNpdGlvbikKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9
PSBEZWxldGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBw
b2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9pbnRlckR1bXAobmV3U3RydWN0dXJl
KCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUpCiAgICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChtX3N0cnVjdHVyZS5nZXQoKSkp
OwpAQCAtNzA1LDYgKzc0MSw3IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewog
ICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKICAgICAgICAgaWYgKHZpc2l0
b3Iudm0oKS5oZWFwLmlzTWFya2VkKG1fc3RydWN0dXJlLT5wcmV2aW91c0lEKHZpc2l0b3Iudm0o
KSkpKQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtX3N0cnVjdHVyZS5n
ZXQoKSk7CiAgICAgICAgIGVsc2UKQEAgLTE4NTEsNyArMTg4OCw3IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAg
ICAgICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3Rh
dGUsIHJlc3VsdFJlZ2lzdGVyVG9FeGNsdWRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICAKKwogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CiAgICAg
ICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCkBAIC0x
ODk2LDYgKzE5MzMsNzEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNsb3dQYXRo
LmVtcHR5KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBEZWxldGU6IHsK
KyAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2Vk
UmVnaXN0ZXJzKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7
CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGFsbG9jYXRvci5s
b2NrKGJhc2VHUFIpOworICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKyAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZh
bGlkYXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5pc1Byb3BlcnR5RGVs
ZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSB2YWx1ZVJlZ3Mu
Z3ByKCkpOworICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BSKTsKKyAgICAgICAg
QVNTRVJUKHZhbHVlUmVncy5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKworICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0KKyAgICAg
ICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwor
CisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBib29sIGhhc0luZGV4
aW5nSGVhZGVyID0gbmV3U3RydWN0dXJlKCktPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVk
VG9DaGVja0NlbGwpOworICAgICAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhpcyBjYXNlIHlldCBz
byB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNl
ZSBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGFuZCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkuCisgICAgICAgIEFTU0VSVCghbWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAgLy8gQ2xl
YXIgdGhlIGJ1dHRlcmZseSBpZiB3ZSBoYXZlIG5vIHByb3BlcnRpZXMsIHNpbmNlIG91ciBwdXQg
Y29kZSBleHBlY3RzIHRoaXMuCisgICAgICAgIGJvb2wgc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENs
ZWFyQnV0dGVyZmx5ID0gIW5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIHN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFoYXNJbmRleGluZ0hlYWRlcjsKKwor
ICAgICAgICBqaXQubW92ZVZhbHVlKEpTVmFsdWUoKSwgdmFsdWVSZWdzKTsKKworICAgICAgICBp
ZiAoc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5KSB7CisgICAgICAgICAgICBq
aXQubnVrZVN0cnVjdHVyZUFuZFN0b3JlQnV0dGVyZmx5KHZtLCB2YWx1ZVJlZ3MucGF5bG9hZEdQ
UigpLCBiYXNlR1BSKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0lubGluZU9mZnNldChtX29mZnNl
dCkpIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVl
UmVncywKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCisgICAgICAgICAg
ICAgICAgICAgIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0b3JhZ2UoKSArCisgICAgICAgICAgICAgICAgICAgIG9mZnNldEluSW5saW5lU3Rv
cmFnZShtX29mZnNldCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC5z
dG9yZVZhbHVlKAorICAgICAgICAgICAgICAgIHZhbHVlUmVncywKKyAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0SW5CdXR0ZXJmbHkobV9vZmZz
ZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAgICB1aW50MzJfdCBz
dHJ1Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1Y3R1cmUoKS0+aWQo
KSk7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoc3RydWN0dXJlQml0cyksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisKKyAgICAgICAgaml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0cnVlKSwgdmFsdWVSZWdzLnBheWxv
YWRHUFIoKSk7CisKKyAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBv
cHBpbmcoaml0LCBwcmVzZXJ2ZWRTdGF0ZSk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7
CisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZmFsc2UpLCB2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBEZWxldGVNaXNzOiB7CisgICAgICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCkpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlMZW5ndGg6IHsKICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmgKaW5kZXggYTc2Nzc2N2JmYzYwMzQ4ZGM3NTkzYTY4NGEzZDY0MDJkNTZmNzE1OS4uYTM0
NzlkMTYwMWE2Y2Q5Nzc3OTQwYWQ0NTVhMzM4MzdlNmUzYjc2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoK
ICAgICBlbnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgTG9hZCwKICAgICAgICAg
VHJhbnNpdGlvbiwKKyAgICAgICAgRGVsZXRlLAorICAgICAgICBEZWxldGVOb25Db25maWd1cmFi
bGUsCisgICAgICAgIERlbGV0ZU1pc3MsCiAgICAgICAgIFJlcGxhY2UsCiAgICAgICAgIE1pc3Ms
CiAgICAgICAgIEdldEdldHRlciwKQEAgLTE0NSw5ICsxNDgsMTEgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZh
bGlkT2Zmc2V0LAogICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgc3RkOjp1
bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiA9IG51bGxwdHIpOwogCi0gICAgLy8gVGhp
cyBjcmVhdGUgbWV0aG9kIHNob3VsZCBiZSB1c2VkIGZvciB0cmFuc2l0aW9ucy4KLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5z
aXRpb24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKQEAgLTE1Nyw3ICsx
NjIsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAg
ewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUg
PT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgcmV0dXJuIG1f
c3RydWN0dXJlLT5wcmV2aW91c0lEKG1fc3RydWN0dXJlLT52bSgpKTsKICAgICAgICAgcmV0dXJu
IG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAgLTE2NSw3ICsxNzAsNyBAQCBwdWJsaWM6CiAK
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFRyYW5zaXRpb24pOworICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5z
aXRpb24gfHwgbV90eXBlID09IERlbGV0ZSk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5n
ZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDEzMjQwOWMwYTQ1MTBiZGZhOGVjZTMzYjc0MzQ3
MTYwMmQ3YjBlNzkuLmIxNjZjMzBjMThhNTIzYTc2MjVmMzlhZjZiNzg5NTA2N2FhNWYwY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcApAQCAtNzk1LDYgKzc5NSwxNSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2Fz
ZTo6VHJhbnNpdGlvbjoKICAgICAgICAgb3V0LnByaW50KCJUcmFuc2l0aW9uIik7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZToKKyAgICAgICAgb3V0LnByaW50
KCJEZWxldGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRl
Tm9uQ29uZmlndXJhYmxlOgorICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU5vbkNvbmZpZ3VyYWJs
ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzOgor
ICAgICAgICBvdXQucHJpbnQoIkRlbGV0ZU1pc3MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgQWNjZXNzQ2FzZTo6UmVwbGFjZToKICAgICAgICAgb3V0LnByaW50KCJSZXBsYWNlIik7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDYxNzg3MzdmOWY4YTljZDBiNmRkYWQ1N2YxY2Yx
MmVmZTRmY2E3MDUuLjk2YTFiYWVjYmU0Y2JiYjc2ZGJkZWRhODA1NjVhMmM1OTg2NTUyMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcApAQCAtMjc2LDYgKzI3NiwxMiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6
CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ss
ICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzVHlwZTo6RGVsZXRlQnlWYWw6CisgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhp
cywgRGVsQnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAK
ICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaAppbmRleCBkZGNlODVlYzAyNTU1NzZjOWUzNDUxZjY0NzM2ZDEyYzM4
OTQyODAzLi5iNTc1YmRkMjE2MTljMmRmZTRmMTgyZmFlZDkwZjI2OGU5ZTI2MTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApA
QCAtNTUsNyArNTUsOSBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdl
dEJ5VmFsLAogICAgIFB1dCwKICAgICBJbiwKLSAgICBJbnN0YW5jZU9mCisgICAgSW5zdGFuY2VP
ZiwKKyAgICBEZWxldGVCeUlELAorICAgIERlbGV0ZUJ5VmFsCiB9OwogCiBlbnVtIGNsYXNzIENh
Y2hlVHlwZSA6IGludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJTY29wZS5jcHAKaW5kZXggMjZlMjgyOTM5ZTlhY2E4ODY1YzIyMTc3M2MyYTQxZTAy
ODA5NGRkYS4uNDhiNWI4NmZhNGI5ZTg2NWVhNDhkYzk5YTQ5M2JkOTQ4ZDA3NGYzZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcApAQCAt
MTI5LDE0ICsxMjksMTQgQEAgYm9vbCBEZWJ1Z2dlclNjb3BlOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+cHV0KHRoaXNPYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRGVi
dWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBEZWJ1Z2dlclNj
b3BlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBEZWJ1Z2dlclNjb3BlKiBzY29wZSA9IGpzQ2FzdDxEZWJ1Z2dlclNjb3BlKj4o
Y2VsbCk7CiAgICAgQVNTRVJUKHNjb3BlLT5pc1ZhbGlkKCkpOwogICAgIGlmICghc2NvcGUtPmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gSlNTY29wZTo6b2JqZWN0QXRTY29wZShzY29wZS0+anNTY29wZSgpKTsKLSAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZv
aWQgRGVidWdnZXJTY29wZTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAppbmRleCBmZjRjZTFiMWRhNGI1NzkwZGU4YWQ5ODhhNzFm
NjAyY2RmMjYxNjc0Li40MzI3YzFmMDJjNjkyNzg0NTA4ZTBhOWExYTIxNDk3NzVlZGQ4MDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNv
bnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggN2ZmYTM4ZTY2ZDJlMDhkNzQ1OTg5
YmQ2MTI5ZGJlYWEwZmEwZDA3Yi4uZTk3ZGUxMGY2ZjRjZGMxNWJhZWZiMTBiN2VjNjA2MjgyNzgz
NTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC0xNjE4LDYgKzE2MTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBEZWxldGVCeVZhbDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyNlbmRpZgor
ICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIERlbGV0
ZUJ5SWQ6IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDog
ewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIEJ5dGVD
b2RlUGFyc2VyIGJhc2VkIG9uIHJlYWRpbmcgdGhlCkBAIC0yNTE4LDggKzI1MzQsNiBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0Fy
cmF5SXRlcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICBjYXNlIERlbGV0
ZUJ5SWQ6Ci0gICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAgIGNhc2UgSXNUeXBlZEFy
cmF5VmlldzoKICAgICAgICAgY2FzZSBJc0VtcHR5OgogICAgICAgICBjYXNlIElzVW5kZWZpbmVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBl
M2UyMDhkMmRhMWNkNzM5YmZhY2M4YzM0YzU0OTdjYzU2MmRiOTM2Li4zODcxNTkxNzg5MDMxMjBh
NjEyNjQ1ZTRhMjM0MzUxM2JhNWRiZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjQ2LDYgKzI0Niw4IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyht
X2dldEJ5SWRzV2l0aFRoaXMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVz
KG1fZ2V0QnlWYWxzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3B1
dEJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRz
LCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgbGlu
a0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBsaW5rQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVmZmVyKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ4ODA4
NzRjMjg1YWI3ZDQ0N2ViODkzYTZlOGI0YmJmMDEwNzMxZDQuLjJmYjZhZDhmNjJmOTVhMjZlNmNk
YjgyNmFhNmQxY2Q2N2YxOTQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgKQEAgLTE5MSw3ICsxOTEsMTcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
bV9wdXRCeUlkcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFB1dEJ5SWRHZW5lcmF0b3I+
KGdlbiwgc2xvd1BhdGgpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFkZERlbEJ5SWQoY29u
c3QgSklURGVsQnlJZEdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgp
CisgICAgeworICAgICAgICBtX2RlbEJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklU
RGVsQnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKworICAgIHZvaWQgYWRk
RGVsQnlWYWwoY29uc3QgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0
b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9kZWxCeVZhbHMuYXBwZW5kKElubGluZUNh
Y2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0K
KwogICAgIHZvaWQgYWRkSW5zdGFuY2VPZihjb25zdCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBn
ZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIG1faW5zdGFu
Y2VPZnMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPihn
ZW4sIHNsb3dQYXRoKSk7CkBAIC0zNDgsNiArMzU4LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4sIDQ+IG1fZ2V0
QnlJZHNXaXRoVGhpczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5VmFs
R2VuZXJhdG9yPiwgND4gbV9nZXRCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBl
cjxKSVRQdXRCeUlkR2VuZXJhdG9yPiwgND4gbV9wdXRCeUlkczsKKyAgICBWZWN0b3I8SW5saW5l
Q2FjaGVXcmFwcGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5SWRzOworICAgIFZl
Y3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5
VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4s
IDQ+IG1faW5CeUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNl
T2ZHZW5lcmF0b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQs
IDQ+IG1fanNDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggMTdiYTJiMmZmMzVhNGZhZjAxMWEzMjI5NzNlNzk2OWU3YjQ3ZTU3
YS4uMDJlOGQwNjgwNzkwYzU5NzY3YTQ5MDVmNzc2ZjZmZjFiMWIxMTkzZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExNDUsNDMg
KzExNDUsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2Rl
KQogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2Rl
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQotewotICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVn
cygpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICB2YWx1ZS51
c2UoKTsKLQotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeUlkLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Ci0gICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKLQotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwotfQotCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKLXsKLSAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBr
ZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKLQotICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygp
OwotICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotCi0gICAgYmFzZS51c2UoKTsKLSAgICBrZXku
dXNlKCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVsZXRlQnlWYWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VSZWdzLCBrZXlSZWdzKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotCi0gICAgdW5i
bGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXNoV2l0aFNjb3Bl
KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY3VycmVudFNjb3BlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGVjZmM5MDM5MGI2ODc0ODYwOGNlMWQw
YzBmMDkyNWJlMjc4ODMzNDIuLmIwMTlkODVkZjljMjViMTMwODk5MmFlNjQ3YjVlYzhhMjc1M2Jj
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtNDI3OCw2ICs0Mjc4LDQ1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmJsZXNzQm9vbGVhbihHUFJSZWcpCiB7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBw
b3J0IGlubGluZSBjYWNoaW5nIG9uIDMyIGJpdHMuCisgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjA3Pi4KKyAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJl
Z3MoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgdmFsdWUu
dXNlKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG51bGxwdHIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgdW5ibGVzc2VkQm9v
bGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2Rl
KQoreworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBi
YXNlLmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVl
UmVncygpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICBiYXNl
LnVzZSgpOworICAgIGtleS51c2UoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzKTsKKyAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogewogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMzcyOGI4NTNmYWJhYjI4YmY0NDU0Yzk1MDU0
ZmNmNTdjNDViZDU0Yy4uYjA3Y2IyNTc1ZDEwNjI3NzhkNGViMDc0ZGZjNWZhNjE2NjNkZDk2MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC01NDM5LDYgKzU0MzksODggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmluZ0NvZGVQb2ludEF0KE5vZGUqIG5vZGUpCiAgICAgaW50MzJSZXN1bHQoc2NyYXRjaDFHUFIs
IG1fY3VycmVudE5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRl
QnlJZChOb2RlKiBub2RlKQoreworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDEoKSk7
CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBhdXRvKiBwcm9wZXJ0eSA9IGlkZW50
aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0Nhc2VzOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFs
dWVSZWdzKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2so
bm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdp
biA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0g
bV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElm
TmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVREZWxCeUlkR2Vu
ZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgcmVzdWx0R1BSLCBzY3JhdGNo
R1BSKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgcHJvcGVydHkpOworCisg
ICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVE
ZWxldGVCeVZhbChOb2RlKiBub2RlKQoreworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKworICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7Cisg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQy
KCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExp
c3Qgc2xvd0Nhc2VzOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVS
ZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOworICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworCisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgp
LCBTcGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKGJhc2VSZWdzKSk7CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBT
cGVjQ2VsbCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGtleVJlZ3MpKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNp
dGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4s
IG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlz
LT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVy
cywKKyAgICAgICAgYmFzZVJlZ3MsIGtleVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CisK
KyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBrZXlSZWdzKTsKKworICAgIG1faml0
LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURhdGVHZXQo
Tm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCA0YmViZWYyMWFhMGQ0MTBhYzA4Y2FiMTI4MzUxOGE5MjIyZTg0NDhiLi44MDM2
MzkwN2I5ZTE3MjgzMjc1YjI3YTY5NTMzMThkYzRlNjdiNTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC01MTQ0LDIwICs1MTQ0LDE2OCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwg
c3Vic2NyaXB0LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCkp
LCBhY2Nlc3Nvcik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8RGVsQnlLaW5kIGtpbmQsIHR5cGVu
YW1lIFN1YnNjcmlwdEtpbmQ+CisgICAgdm9pZCBjb21waWxlRGVsQnkoTFZhbHVlIGJhc2UsIFN1
YnNjcmlwdEtpbmQgc3Vic2NyaXB0VmFsdWUpCisgICAgeworICAgICAgICBQYXRjaHBvaW50VmFs
dWUqIHBhdGNocG9pbnQ7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6
Ok5vcm1hbCkgeworICAgICAgICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50
NjQpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFz
ZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGJhc2UsIFZhbHVlUmVwOjpTb21l
TGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWlu
ZWRWYWx1ZShzdWJzY3JpcHRWYWx1ZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAg
ICAgICAgfQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IDE7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9CisgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Cisg
ICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUt
PmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisKKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhj
ZXB0aW9ucyA9CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9
IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgYXV0byByZXR1
cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3By
KCkgIT0gcmV0dXJuR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBw
YXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9
IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOworCisgICAgICAgICAgICAgICAg
Y29uc3RleHByIGF1dG8gb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBbJl0gKCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICB9KCk7CisKKyAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2Ny
aXB0VmFsdWUpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3By
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdw
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0oKTsKKworICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuR1BSLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVs
QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJh
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCByZXR1cm5HUFIsIHBh
cmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSgpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGpp
dCk7CisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRo
SnVtcCgpKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQu
bGFiZWwoKTsKKworICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKKyAgICAgICAg
ICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5s
YWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0
aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAo
KS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVm
ZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFpl
cm82NChwYXRjaHBvaW50KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZCgp
CiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGF1dG8gdWlkID0g
bV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAg
ICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxl
dGVCeUlkLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBtX291dC5jb25zdEludFB0
cih1aWQpKSkpOworICAgICAgICBMVmFsdWUgYmFzZTsKKworICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAg
ICAgICAgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAg
YmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9ybWFsPihiYXNlLCBtX2dy
YXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKTsKICAgICB9CiAK
ICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeVZhbCgpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQyKCkpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50
NjQsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNl
LCBzdWJzY3JpcHQpKSk7CisgICAgICAgIExWYWx1ZSBiYXNlOworICAgICAgICBMVmFsdWUgc3Vi
c2NyaXB0OworCisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsK
KyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBiYXNlID0gbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtp
bmQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAo
bV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7Cisg
ICAgICAgICAgICBzdWJzY3JpcHQgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAg
ICAgICAgICAgIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6Tm9y
bWFsQnlWYWw+KGJhc2UsIHN1YnNjcmlwdCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZUFycmF5UHVzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3Rh
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDVkMzA5Mjhm
NGE4NWI0YWRlNDQ0YzQzZjVhZGRmMjMxN2Y0MjY1YjcuLjkwNDBkZjM4MjA3NjRlZGY4ZDUxNjEx
Zjg2MGZjNGQ0MjY1NmMxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC03
MCw3ICs3MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3ND
YXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1
dEJ5SWRTZWxmUGF0Y2gpIFwKLSAgICBtYWNybyhJbkJ5SWRTZWxmUGF0Y2gpCisgICAgbWFjcm8o
SW5CeUlkU2VsZlBhdGNoKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEp1bXApIFwKKyAg
ICBtYWNybyhEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYykKIAogY2xhc3MgSUNFdmVudCB7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVl
ZDIwNzk2OWNkMWI3ODc0NGU4Ni4uYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhh
NWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTAwLDYgKzUwMCw4IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJ
bmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAw
OworICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAg
IG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7
CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CkBAIC01ODAsNiArNTgyLDggQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3B1dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9kZWxfYnlfdmFsKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVs
X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3ViKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfaGFzX2luZGV4ZWRfcHJvcGVydHkpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9nZXRfZnJvbV9zY29wZSkKQEAgLTg3NSw2ICs4NzksOCBAQCBDb21waWxh
dGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZ2V0QnlW
YWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dp
dGhUaGlzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wdXRCeUlk
cywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBh
dGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hC
dWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIp
OwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3NDk2MzMzNmZjYjg5NDFlYmQwNWI1
OTczMTI5YTllODY1NS4uNjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDAsNyArNTAwLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
ZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtOTEzLDYgKzkxNSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJh
dG9yPiBtX3B1dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2lu
QnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOwor
ICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAg
ICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAg
VmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAg
ICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwpA
QCAtOTM0LDYgKzkzOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dl
dEJ5SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRC
eUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsg
VUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVgg
fTsKKyAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAg
ICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2ln
bmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWdu
ZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3
MjAzZTNjZjRiZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLmY0MTEwMjE3NjRkOTg5NjYyMjNm
ZTE4MjBhMmYzODM5YWMzZTdiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xNjIsNiArMTYyLDY4IEBAIFZf
SklUT3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlv
bigpCiAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKIH0KIAor
SklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHByb3BlcnR5LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6
IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpE
ZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFu
dElkZW50aWZpZXIgPSBmYWxzZTsKKyAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVz
dWx0KTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAg
bV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKKyAg
ICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1Yklu
Zm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT52LnByb3Bl
cnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CisjZW5kaWYKKyAgICBtX3N0dWJJbmZvLT51
c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOworfQorCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFy
dCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAo
KTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVREZWxCeVZhbEdlbmVy
YXRvcjo6ZmluYWxpemUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNs
b3dQYXRoKQoreworICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Cisg
ICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCitKSVREZWxC
eUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCit7Cisg
ICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICBBU1NFUlQo
YmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0KTsKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0g
YmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IElu
dmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIo
KTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9z
dHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisjZW5kaWYKKyAgICBt
X3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOworfQorCit2b2lkIEpJVERl
bEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sK
KyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0
Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVERl
bEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5r
QnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlz
U2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgs
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKK30K
KwogSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCiAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKaW5kZXggYmZiOTAyMTZiMjljMjdmZmQwZWQ4ZDdmMGY1ODdlMDhmZTZlNzMxNi4uMjZlNzAw
ZmJiN2FkMTgzYmUxYWNiYTczZjM3ZjZmYjQyZmVmY2QwZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMTQyLDYgKzE0
Miw1NiBAQCBwcml2YXRlOgogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwogfTsKIAorY2xhc3MgSklU
RGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAg
IHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVRE
ZWxCeVZhbEdlbmVyYXRvcigpIHsgfQorCisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCisgICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworCisgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQ
YXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlu
a0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZm
ZXIpOworCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3By
aXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCitjbGFzcyBKSVREZWxC
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2lu
ZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklURGVsQnlJ
ZEdlbmVyYXRvcigpIHsgfQorCisgICAgSklURGVsQnlJZEdlbmVyYXRvcigKKyAgICAgICAgQ29k
ZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBzY3JhdGNoKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0
KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAg
IHZvaWQgZmluYWxpemUoCisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwg
TGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1Bh
dGhKdW1wOworfTsKKwogY2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRH
ZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0
YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0OGRjNjMzNC4uN2JkZjFmNzMyYmY0ZTA1ZDliODU2OTZlZjQ2
ODQ3ZjNiNTYxMDc2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC0yMTQyLDcgKzIxNDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVy
aWMoZ2xvYmFsT2JqZWN0LCBpbmRleCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldE93blByb3BlcnR5KSkpOwogfQogICAgIAotc3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzdGF0aWMgYm9vbCBkZWxldGVC
eUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIApAQCAtMjE1MCwzMSArMjE1MCw1MSBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeUlkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdgogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWJhc2VPYmopCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHVpZCkpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2Jq
LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcik7CiAgICAgcmV0dXJu
IGNvdWxkRGVsZXRlOwogfQogCi0KLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
ZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSksIHVpZCkpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCk7CisKKyAgICBib29sIHJlc3Vs
dCA9IGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNlVmFs
dWUsIHVpZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgY29uc3QgSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAg
ICAgICBpZiAoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVj
dHVyZU9yTnVsbCgpKSkKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVsQnkoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
ICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0
dXJuIGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEJhc2UpLCB1aWQpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAg
IHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgc2xvdCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKIH0KIAotc3RhdGljIGJvb2wgZGVsZXRl
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtleSkKK3N0YXRpYyBib29sIGRlbGV0ZUJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSYgdm0sIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGtl
eSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIx
OTAsNyArMjIxMCw3IEBAIHN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYKICAgICBlbHNlIHsKICAgICAg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IGtleS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgY291
bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VP
YmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eSwgc2xvdCk7CiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpKQpAQCAtMjE5OCwyMCArMjIxOCw0MiBAQCBzdGF0aWMgYm9vbCBkZWxl
dGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgVk0mCiAgICAgcmV0dXJuIGNvdWxkRGVsZXRlOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsICBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkS2V5KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
U3Vic2NyaXB0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRLZXkpKSkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCk7CisKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKTsKKworICAgIGJvb2wgcmVz
dWx0ID0gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBiYXNl
VmFsdWUsIHN1YnNjcmlwdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7CisgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+
Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8s
IERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXkpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LSAgICByZXR1cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSkpOwor
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KSk7CiB9CiAKIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYyMTBj
NWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVmZjgyYTMwMGMuLjYwMGZjYTI5ZGMyMDM4NWRjNTAy
MjI4MDI1NDExMmNhYzMxZDY4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0yNTEsMTAgKzI1MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZQog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
UHJvcGVydHkpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBCeVZh
bEluZm8qKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJ
bmZvKikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5B
TDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0YXJnZXQpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5U
RVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUgb2Jq
ZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdp
dGhTY29wZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJl
bnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCop
IFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKaW5kZXggYWJmNTJmNzEzZThhYTBhZmI1ZTgwNWM3Y2YzZjFkMzg4MzcxYzJm
Ni4uMmJhMGZhNjg0OGJjZTgyOWFjZDY0MTkwNWYwNWY0YmQ1NGRjYmUzNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTM4Nyw5ICsz
ODcsMzkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBp
bnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCByZWdUMSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJl
Z1QxLCBiYXNlKTsKKyAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDAsIHJlZ1QyKTsKKyAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1
ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJl
Z3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2Nv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KS5pbXBsKCk7CisKKyAgICBK
SVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOwor
CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIHJlZ1QwLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgcmVnVDAsIHVpZCk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKKworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7
CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKQEAgLTM5OCw5ICs0MjgsNDIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRl
Y29kZS5tX3Byb3BlcnR5OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdU
MSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CisgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CisgICAgSklURGVsQnlWYWxHZW5lcmF0
b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlZ1QwLCByZWdUMik7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeVZhbHMu
YXBwZW5kKGdlbik7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkp
OworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOwor
fQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OworCisgICAgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21f
ZGVsQnlWYWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKKyAgICBib3hC
b29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90
cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAppbmRleCA1Y2M3ZGY5YzU0MTg5YzdjYjNkNDA5MWI1YzRmNGM4YmRhZWVmMTRjLi5iNjY5ZGQ4
YjdhZDI2ZDNmNzdkOTY4NmRlNjA4MzQzNGYzNmRiYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEyMyw3ICsx
MjMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIGVtaXRM
b2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkSlNSZXN1bHQsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkuaW1w
bCgpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIG51bGxwdHIsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCksIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KS5pbXBsKCkpOworICAgIGJveEJv
b2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQpAQCAtMTMzLDkgKzEzNSwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0g
Ynl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBw
cm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCBudWxscHRyLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMywgcmVnVDIpKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpIHsgfQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKSB7IH0KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAwODY5NmIxZjNhNDhmY2FiNjdkZmRm
MWQwODE5MjVlMzRkOTFiNzY1Li43YmYxMTNlZTgxMTdiZGZiODg5NjFlMmExZmQ5NDExMjdhM2E0
YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTY0MSw3ICs2NDEs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZSh2bSwgY29kZUJsb2NrLCBpZGVudCwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CisgICAg
ICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0sIGNv
ZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2Fj
aGVhYmxlU2V0dGVyKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9t
KCkpIHsKQEAgLTczNCw2ICs3MzQsNzMgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtp
bmQpKTsKIH0KIAorc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsQnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3Bl
cnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgRGVsQnlLaW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKKworICAgIHsKKyAgICAgICAgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApOworCisgICAgICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3Qp
KQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgQVNTRVJUKG9s
ZFN0cnVjdHVyZSk7CisgICAgICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkgfHwgIW9sZFN0
cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQorICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlRGVsZXRl
KCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKworICAgICAgICBpZiAoc2xvdC5pc0RlbGV0
ZUhpdCgpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBpbnZhbGlk
T2Zmc2V0OworICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRs
eShvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgbmV3T2Zmc2V0KTsKKyAgICAgICAgICAgIGlm
ICghbmV3U3RydWN0dXJlKQorICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7
CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hl
YWJsZSgpIHx8IG5ld1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICBBU1NFUlQobmV3T2Zmc2V0ID09IHNs
b3QuY2FjaGVkT2Zmc2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+cHJl
dmlvdXNJRCh2bSkgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NF
UlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
T2Zmc2V0KG5ld09mZnNldCkpOworICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZURlbGV0ZSh2bSwgY29kZUJsb2NrLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFt
ZSksIG5ld09mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICB9IGVs
c2UgaWYgKCFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgICAgICBpZiAoc2xv
dC5pc05vbmNvbmZpZ3VyYWJsZSgpKQorICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3ND
YXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJh
YmxlLCBDYWNoZWFibGVJZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9s
ZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nh
c2U6OkRlbGV0ZU1pc3MsIENhY2hlYWJsZUlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgaW52YWxp
ZE9mZnNldCwgb2xkU3RydWN0dXJlLCB7IH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAg
ICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGNvZGVCbG9jaywgcHJv
cGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVy
YXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2Rl
KCkpOworICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwg
b2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBJ
bmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8s
IGNvZGVCbG9jaywgcmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93
KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hE
ZWxCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVEZWxCeShnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5m
b09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgaWYg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uRGVsZXRlQnlJZEdlbmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICB9Cit9CisKIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LAogICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTM5MSw2ICsxNDU4LDE1IEBAIHZv
aWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCiAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCit2b2lkIHJlc2V0RGVsQnkoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5k
IGtpbmQpCit7CisgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIGVsc2UKKyAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1Yklu
Zm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCA2ZjBmMjY0MTFlY2RlYTE5MmI3MDYyMTBl
OGE5OTQ0YmI0ZjlmZTM5Li5jMWQ5OTU5YWRhZmQzNjU3NjJlODkxNzlhYjNjMGVlZDY2ZTU4N2Qw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNDEsOSArNDEsMTUgQEAgZW51
bSBjbGFzcyBHZXRCeUtpbmQgewogICAgIERpcmVjdAogfTsKIAorZW51bSBjbGFzcyBEZWxCeUtp
bmQgeworICAgIE5vcm1hbCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJy
YXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNW
YWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xv
YmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29u
c3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCBy
ZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIFB1dEtpbmQpOwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBj
b25zdCBJZGVudGlmaWVyJiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCBy
ZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBjb25z
dCBJZGVudGlmaWVyJiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0
dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1
YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENh
bGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CkBAIC01Myw2ICs1OSw3IEBAIHZvaWQgdW5saW5rRm9y
KFZNJiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7CiB2b2lkIHJl
c2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9p
ZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVz
ZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lk
IHJlc2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0
SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBiOTExZWUyNzgy
NjI2NmM3M2Y3NmUwOTU1NDJhZGM2NTkyNTA4YzZlLi4yYmZmYzM4MTYzZmUzMWJlOTQxYmVkNmE1
ZmI1NmQyOThiZWI2MjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTkyNSw3ICs5MjUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZGVsX2J5X2lkKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BEZWxCeUlk
PigpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fYmFzZSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgYm9vbCBjb3VsZERlbGV0
ZSA9IEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOwogICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmlj
dE1vZGUoKSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7CkBAIC0xMTA4LDcgKzExMDgsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKLSAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOworICAgICAg
ICBjb3VsZERlbGV0ZSA9IEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSk7CiAgICAgfQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxl
SWRlbnRpZmllcklubGluZXMuaAppbmRleCBmZmIzZWI5ZDAwNWNmNmZkMDhmZmQyYmI4OGI5ZDU4
N2JhZWQwZmY2Li4xMDdiNWQ2MDcyMDM3MDUxZjZhN2MxZTljYjBjMTVmMjY1ODk3OTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmgKQEAgLTQyLDYgKzQyLDcgQEAgaW5saW5lIENhY2hlYWJsZUlkZW50
aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
IAogaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXI6OkNhY2hlYWJsZUlkZW50aWZpZXIoSlNDZWxs
KiBpZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKGlk
ZW50aWZpZXIpKTsKICAgICBzZXRDZWxsQml0cyhpZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBmZTZjNmI3ZDg0YzQ3ZWRlZTEx
YWFjMTFmNjQ4NGE3MmQ0MTdiYzQ2Li43YTU5YjhmZGIwYzIyY2NiYmQyOGQ4MDMxZGE4YTE3ZWUw
NTM3MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0lu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAt
NTksNyArNTksNyBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVzaW5nIFB1dEJ5SW5kZXhG
dW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBQdXRCeUluZGV4
RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKHB1dEJ5SW5kZXgpOwogCi0gICAgdXNpbmcg
RGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRy
ID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYpOwogICAgIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKGRlbGV0ZVByb3BlcnR5KTsKIAogICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5QnlJ
bmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcAppbmRleCBjNGY3NGMwYzM5MDg4OTAxNDg1ZWUzZDJiMWQ1ZjVhYWFjMTlkODdkLi44
ZGRkOThhMWJmYjBmZWMxNWE3ZDczMmFjYzNjMmNlZjg1ZDA0MGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKQEAgLTIyMCw3ICsy
MjAsNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIENs
b25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQpCitib29sIENsb25lZEFyZ3VtZW50
czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Q2xvbmVkQXJndW1lbnRzKj4o
Y2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjI5LDcgKzIyOSw3
IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6
ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZ2xvYmFsT2JqZWN0KTsKICAgICAKLSAgICByZXR1cm4gQmFz
ZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCk7CisgICAg
cmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHNsb3QpOwogfQogCiBib29sIENsb25lZEFyZ3VtZW50czo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIGlkZW50LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hv
dWxkVGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5oCmluZGV4IGZkM2EyN2JmNzM1NTRkNWVlNGE2ZTMxZDBiYTBjYWQxNTc2MDVmZjUuLjAw
YzUzNDc1NjA1YTczYjJiM2ViMzhkM2NmODEzMjg4MzRmZjFiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBAIC03Miw3ICs3Miw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgCiAgICAgYm9vbCBzcGVjaWFsc01hdGVyaWFsaXplZCgpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMGUyYmMzYTI3MTljMmE5MzUzZTdkNzUy
MWE4NzliZDEyZDc0MDA2OS4uNDRkOGZiNGI0MjJhOTJkMDNiODFhYjBhZjE4ZDRmNjViMWU4Yzgz
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC05ODUsNyArOTg1LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9i
eV92YWwpCiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhdXRvIHByb3BlcnR5
ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
KTsKKyAgICAgICAgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOwogICAgIH0KICAgICBDSEVDS19FWENFUFRJT04o
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlbGV0
ZVByb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVsZXRlUHJv
cGVydHlTbG90LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFkNmY2YjQ4MDBlZjU3ODU2MWNhZWRjOWRkYmJjODJm
MjUzMmU2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RlbGV0ZVByb3BlcnR5U2xvdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQ
cm9wZXJ0eU9mZnNldC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKyAgICAKK2NsYXNzIERlbGV0ZVByb3BlcnR5U2xvdCB7CitwdWJsaWM6CisgICAgZW51
bSBUeXBlIDogdWludDhfdCB7IFVuY2FjaGVhYmxlLCBEZWxldGVIaXQsIENvbmZpZ3VyYWJsZURl
bGV0ZU1pc3MsIE5vbmNvbmZpZ3VyYWJsZSB9OworCisgICAgRGVsZXRlUHJvcGVydHlTbG90KCkK
KyAgICAgICAgOiBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQorICAgICAgICAsIG1fY2FjaGVhYmls
aXR5KENhY2hpbmdBbGxvd2VkKQorICAgICAgICAsIG1fdHlwZShVbmNhY2hlYWJsZSkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBzZXRDb25maWd1cmFibGVNaXNzKCkKKyAgICB7CisgICAgICAg
IG1fdHlwZSA9IENvbmZpZ3VyYWJsZURlbGV0ZU1pc3M7CisgICAgfQorCisgICAgdm9pZCBzZXRO
b25jb25maWd1cmFibGUoKQorICAgIHsKKyAgICAgICAgbV90eXBlID0gTm9uY29uZmlndXJhYmxl
OworICAgIH0KKworICAgIHZvaWQgc2V0SGl0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fdHlwZSA9IERlbGV0ZUhpdDsKKyAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7
CisgICAgfQorCisgICAgYm9vbCBpc0NhY2hlYWJsZURlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGlz
Q2FjaGVhYmxlKCkgJiYgbV90eXBlICE9IFVuY2FjaGVhYmxlOyB9CisgICAgYm9vbCBpc0RlbGV0
ZUhpdCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEZWxldGVIaXQ7IH0KKyAgICBib29sIGlz
Q29uZmlndXJhYmxlRGVsZXRlTWlzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDb25maWd1
cmFibGVEZWxldGVNaXNzOyB9CisgICAgYm9vbCBpc05vbmNvbmZpZ3VyYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBOb25jb25maWd1cmFibGU7IH0KKworICAgIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vZmZzZXQ7Cisg
ICAgfQorCisgICAgdm9pZCBkaXNhYmxlQ2FjaGluZygpCisgICAgeworICAgICAgICBtX2NhY2hl
YWJpbGl0eSA9IENhY2hpbmdEaXNhbGxvd2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29s
IGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0Fs
bG93ZWQ7IH0KKworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OworICAgIENhY2hlYWJpbGl0
eVR5cGUgbV9jYWNoZWFiaWxpdHk7CisgICAgVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggZjE4MjFkNTU2YTNkNDA0NDkzNjc1ZWFlMjVmYTJlNDY2NzNlYzQz
YS4uNjg1YzdhY2JjMTFjNjJkMjMzNzdkMzJjNGRlOWEyMGI2NTg3OGE4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTg3
LDcgKzg3LDcgQEAgYm9vbCBFcnJvckNvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU4KICAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9
CiAKLWJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckNvbnN0cnVj
dG9yKj4oY2VsbCk7CkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQp
CiAgICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQo
V1RGOjpudWxsb3B0KTsKIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggOTNkNTI3MTQ4NmY2NmZkZTc1M2U0OWE0MDE2
ZjE2ODM4ZTk3NTcyMS4uOWE1YTQ2MzIxYjNkYmI3NjRjMmExYjUyMWQ5MjY4ZjhkMTQzNTMzMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
aApAQCAtNDksNyArNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEVycm9yUHJvdG90eXBlKik7CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKIHBy
aXZhdGU6CiAgICAgRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCBmZDQ4YmJm
MzRjMzA0MzBkMmU3MGRlNTc0OThlOWI1MWU2YWMyNDRkLi4xZDUwY2QxNzRmYzQ3ZDkyMjE3MTg4
ZTMyNWZmNTdhZThkMTViODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMjk3LDEyICsyOTcsMTIgQEAgYm9vbCBFcnJvckluc3Rh
bmNlOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWJvb2wgRXJyb3JJbnN0YW5jZTo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBFcnJvckluc3RhbmNlOjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgRXJyb3JJbnN0YW5jZSogdGhpc09iamVjdCA9
IGpzQ2FzdDxFcnJvckluc3RhbmNlKj4oY2VsbCk7CiAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxp
emVFcnJvckluZm9JZk5lZWRlZCh2bSwgcHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCmluZGV4IGYxZmFjNTk2ODJk
OWUwMjY1MDhjYjRmZjhjOWIyNjdiNGVlNzZlODcuLjQwMDYwOGQwOGE4MzRjZDMxZTYxMmU3M2Fi
NTMxY2IwYTNjYTExZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckluc3RhbmNlLmgKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lk
IGdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAKICAgICB2b2lkIGNvbXB1dGVFcnJvckluZm8oVk0mKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCmluZGV4
IGNlMTBmN2ZlNDg3M2U0YTQ3YmUxNDFlMjU1NjlhZDY0OGFmZjlkMjguLjQ3MTIxNjczMDM2NDgy
OGZlMjc3MGUyMzQ4NjlhY2U3MDkwOGQxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVu
dHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1l
bnRzSW5saW5lcy5oCmluZGV4IGI4MzdlYzFiYjQzMGY2ZDU4YjFkNWIxMTVkYTUxM2M1YmNjMGJm
NTMuLmE1YTllY2IzMjJhMjBkYThmZTI0MzNmZmQ1NDdhNzhhZmM2MDJjZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGlu
ZXMuaApAQCAtMTM5LDggKzEzOSwxMCBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBybwogICAgICAg
ICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVl
LCBzbG90KSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVzdWx0KTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KQEAgLTE1OCw3ICsxNjAsNyBAQCBib29sIEdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotYm9vbCBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCkKK2Jvb2wgR2VuZXJpY0FyZ3Vt
ZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihjZWxsKTsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xNzUsNyArMTc3LDcgQEAgYm9vbCBHZW5l
cmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWwKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChpZGVudCkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgR2VuZXJpY0Fy
Z3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgKmluZGV4KSk7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKaW5kZXggMDM0
ODdmNjFlMGYyZmM3NTFiYTcwM2I3MGNhMzZkMDIyMjE2MzRkZS4uNjAxZjFlNDlmMTVjZDUwMWEw
ZTBhNzVlZTI4NTA2ZjMyYjBkYjNhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1Zh
bHVlLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsg
fQogICAgIHN0YXRpYyBib29sIHNldFByb3RvdHlwZShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
ZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsg
fQorICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKSB7IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIFdyaXRlQmFycmll
cjxKU09iamVjdD4gbV9nZXR0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwCmluZGV4IDZkMDc1OTE3MTFlZWRiYzI4ZTBlNGRhNzg0OTgyMmFiOGQ2NmY1ZDEuLmJj
ZTM2NTVhMzE5MmVhMjkwZmU3ZjA0MDgyNGEzODg2ZjZiMDQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgYm9vbCBKU0Fy
cmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGUKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0Ojpw
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7
CiB9CiAKLWJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBK
U0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNBcnJheSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7CkBAIC0zMTQsNyArMzE0LDcgQEAg
Ym9vbCBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnQKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFy
ZUtleXNGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDMxMTY1YjVmZjQ5MjU0Y2MxYTZjNDc5MDJi
NzkxMGFjNGE3ZDliZmYuLmNkYzM5YjUxMmQ3ZWUzYTE1Y2YxYWVjMmUwYTJkOTNkOWFhYWQwZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTE4Miw3ICsxODIs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAppbmRleCBmZTAxODBkZDYwYzNkMWJiNjBmOGI1MzNiMTg2MDU4ZWVhZDgxYjc1Li41ODZh
ZjNmYWIzNzk1MmUzZmRlMWNlNDcwYzk5YWIxZWRjNGE3NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzOworY2xhc3MgRGVsZXRlUHJvcGVydHlTbG90
OwogY2xhc3MgSlNCaWdJbnQ7CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU0NlbGw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAyNzEzNTJiMjE3NDcwMzU2
ZGY0MDNmZGQ5Y2RlNjBkZWY4ODgxNjA3Li4yNGVkNjUyMzM3OTIzNGViMGMxOGIwNmYwMjY0MTc5
MWQ4YzgwNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAg
LTEyNiwxMCArMTI2LDE3IEBAIGJvb2wgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlCiAgICAgcmV0dXJuIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKK2Jvb2wgSlNDZWxs
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCit7
CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNs
b3QpOworfQorCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKIHsKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0g
ICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaWRlbnRpZmllciwgc2xvdCk7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApp
bmRleCBkNTY1NmY4YmZkZmY2MzI5OTJhYzFkYTQ1MWUzNWMxYTU0OGQ0NjdlLi5kYTZjOTU0NDAy
MmFlY2UyZGNkOGUzYTZjMzY3ZmMzZDM0YWMwZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaApAQCAtMTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICBib29sIHB1dElubGluZShKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAg
ICAgICAgIAorICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCAxNDZhOTEzMmQ0NzM1MjQyYzEwNmU2
NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJiMDllMzdmOGE0NzQzMTliZjc2YzMyZDhh
OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApA
QCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5lT3duUHJvcGVydHkoCiB9
CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
ICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEpTRGF0YVZp
ZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTRGF0YVZpZXc6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4MmE2N2U5N2VmYmI0ZjMyZjFiYzEyZTc4
Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVlNmNjN2I5ZjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC03Miw3ICs3Miw3IEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKaW5kZXggZWU4NWVlMDY0NmM5ZGRhZjllNmU5N2FmMTdiOWY5YzAzNzdk
MThlMC4uOGI4ZDUwNjUzNmU1M2Y5MjhiYzM2OWQyZWJmZDVhNjMwYjA4NmI4NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTU4Niw3ICs1ODYs
NyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTYxNyw3ICs2
MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7CiB9
CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGFkZGRl
MmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZhY2QuLjE4YWI0NzU0M2ZkNzgyOTc4YWZl
YTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZjA4Zjg1MjQ2OWJlZmQ2YzVh
ZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2NWNlMWMzNTY1NTBlY2Q1OGI3N2ZlZDlk
NjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUsNyArMzA1LDcgQEAgcHJvdGVjdGVkOgog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAwY2FmYmQyNzZjZjc0ZDBjODVl
ZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi4xYTBjZjU5ZmZmZDNjMGEzYTNkZjI2NTNlYTEzM2E4NThl
NDYwMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNDM4LDcgKzQzOCw3IEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlZmluZU93blByb3BlcnR5
KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAgIEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTQ4NCw3ICs0
ODQsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7
CisgICAgcmV0dXJuIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1NjZjNWQ0YTE4YTkyODcxZjdl
Li5mZTIxN2ZiMGNhYjUzMGZlMzBhYTliMTk4ZTNmNzllMjA1YWU0ZDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMzE0LDcg
KzEzMTQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgbWV0aG9k
VGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CisgICAgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNw
cAppbmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45NzRiOTJi
NTRlMWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMjcs
MTMgKzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXgg
ZDAxM2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMyZGQ0OTNm
ZjdhNGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAwYjcyOWY3
YzczZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52aXJvbm1l
bnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVu
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpTTW9kdWxl
RW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBp
ZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpU
eXBlOjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5kZXgg
ZGFlYWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2ZiOThiYjJh
ODJkYWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1
dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0
dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggMmJk
YjEzMDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNhNjVhZDEx
OTAyZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5LDEyICsx
OTksMTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhv
dGljLW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAgIGlmIChw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9y
dHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4IDhl
ZWY2MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdhMTNlN2Vm
YmZjZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNmOWNiMDFl
MmJmMzIxYjA2ZWQ0MTk2YzkuLjk5YjNkMDg4ZGI0YzllZjJjM2ZmMDU4NmRmN2Q2YmRkMzFmZjRh
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBA
IC03NjAsNyArNzYwLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFs
dWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBj
YWxsUmV2aXZlcihvYmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFsdWUp
OwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwg
bV9nbG9iYWxPYmplY3QsIHByb3ApOworICAgICAgICAgICAgICAgICAgICBKU0NlbGw6OmRlbGV0
ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3ApOwogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChv
YmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9wLCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDNhNTEyMWQ2OWRmYjRmYjJmYjlm
ODg1Y2E3ZmYzZmU1NWMwNGRkODAuLjQ1ZjQyMzZhMWJiNzc0ZWJiNTIzMDc3MjZlN2VmZGZlODRi
YWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAKIC8vIEVDTUEg
OC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xOTk5LDggKzE5
OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJvcGVydHlJc1By
ZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAgICAgaWYgKGF0
dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQcm9w
ZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUp
CisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
JiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdu
b3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJsZSgp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZpcmUo
dm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxp
ZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAg
ICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10oY29uc3QgR0NTYWZlQ29uY3VycmVudEpTQ2VsbExv
Y2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVkV2F0
Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5ICYm
ICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhp
bmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNldCk7
CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUt
Pmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5u
dWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgp
LCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRPZmZz
ZXQpOwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAg
ICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9IGVsc2UK
KyAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTIwMzEsNyArMjAzNiw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAKICAgICBp
ZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpKSk7CisgICAgICAgIHJldHVybiBKU0NlbGw6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSkpOwog
ICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdNb2RlKCkpIHsKICAgICBjYXNl
IEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAgLTM2MjUsNyArMzYzMCw3IEBAIGJvb2wgdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkgY2hh
bmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAoZGVz
Y3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50LmF0
dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihn
bG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9y
LmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgICAg
IH0KQEAgLTM2NDEsNyArMzY0Niw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVz
Y3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAg
aWYgKCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBv
YmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3Zl
cnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM2NjUsNyArMzY3
MCw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2Jq
ZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1
dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM3MTgs
NyArMzcyMyw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKIAogICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0
dGVyLCBzZXR0ZXIpOwogCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIEpTQ2VsbDo6ZGVs
ZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIHVuc2lnbmVkIGF0dHJzID0gZGVz
Y3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7CiAgICAgb2JqZWN0
LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0
dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2NTExNjBiZTBiMDE3ODcwY2U5MDk2YmY5
MmE1NWRjZjBlNmNkYmJlLi42YmRhOWUxZTA3ZTc5OGZiOTIzNDgzNzcyZjA3YjdmNmNkYzAxNzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0
ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJE
ZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5kZXhp
bmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC02MjMsNyArNjI0LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRleCA5YzQ3OTM0ZTRhM2Q5MTk5ZmE5ODQy
ZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEyZDIyMTkxMjdjZDk5YjMwMjA5MzA4ODcyMTIz
YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApAQCAtOTEs
MTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09iamVj
dC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlZmluZU93blBy
b3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTUHJveHk6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdl
dCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVy
biB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Byb3h5Ojppc0V4dGVuc2libGUoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFlNjY4ZDI1OTBkOWI5N2M4ZjRiYmEyYmZmYjQw
MGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5NGMwYjI1ODk1Nzk4ZmM1ZjllZjhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBAIC05Myw3ICs5Myw3IEBAIHBy
b3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDYzMGUxYjc4YmIyMDZlN2FmNjE3
YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMxNTBlOTZhZWNkNTM3NDczMWZkYThkOWE3YmFm
YmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgdm9pZCBKU1N5bWJvbFRhYmxl
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7CiB9CiAKLWJv
b2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9v
bCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09i
amVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgK
aW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNkZWQ5OGIzMzVkZjczNmIyMS4uYjU2OGU4Zjky
YTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVy
biBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
U3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTeW1ib2xUYWJsZU9iamVj
dCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4MTU5OGZmZWYyYTVlMTRhODBmZDRlNTRkYzY5
YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTllNWY5MGM2NjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC02ODUsMTIgKzY4
NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFByb3h5
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVj
dCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHREZWxldGUgPSBbJl0gKCkgLT4gYm9v
bCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzT2JqZWN0LT50YXJnZXQoKTsKLSAg
ICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVs
ZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVBy
b3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH07
CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1EZWxldGUoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDE3Y2EyOWZiMGEzZmRkYmE3MWViNjgyNDlj
MDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgxOGE0Njc0YTUyMmJmNjBhMmNhMDllYWMxYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAtODUs
NyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAg
IHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
KTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAK
aW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNhMDljMDA0ODFhNTE1MzgyNy4uMWNlMWI0YzMz
YWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmViYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03MSwxMiArNzEsMTIgQEAgYm9vbCBS
ZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJlZ0V4
cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBSZWdFeHBPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2MzcxOTFhODlmMGI3Yzk2YzVmYmI3MTQuLjg1N2Nh
MmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNlMGIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0gKG1f
cmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgfCBsYXN0SW5kZXhJc05vdFdyaXRh
YmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0R2VuZXJp
Y1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAppbmRleCA1MTU3NTI3NjVlY2IwMmQx
OWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRiYzY3YzU3ZjgxNTYxZmE3OGQxOTRlZmFmMDQ5
YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
Y3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIFN0cmljdEV2YWxBY3Rp
dmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBTdHJpY3RF
dmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3Rp
dmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2IxMDk2YjI2ZDE4NzA3NGNiZjE3ZWI4M2MyOS4u
MjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBmZGJiN2ExMDA3MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNjb3BlOwogICAgIH0KIAotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NzdiOWNhZmIzZmEwMDhm
MGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZkZDkyNzNiNzUwNThhNDdmNzY5YTNmY2Y4Nzc1
ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24p
KTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwp
OwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByCiAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChp
bmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4LnZh
bHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
aAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2IzYTNlNGRhMzUyZjIyNzg2NTIzLi42OWYyNmI3
ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
IAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA2NGM4MDBiNjE5YTQ5
Nzk1YWViMGUxNDM1ZDNiYjdmNDQ3MTA5ZWI3Li44MzJjZTQ0YWJlNGNhYWE2Yjc0MmZmOWFiMGVj
NjAwYzc0NzY0OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTUzOSw4ICs1MzksNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3UHJv
cGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0
JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZl
cnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAobmV3U3RydWN0dXJlKQogICAgICAg
ICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01NDgsMTYgKzU0NywxMyBAQCBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNl
dCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERl
ZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKikKK1N0cnVjdHVyZSogU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBs
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewotICAgIEFTU0VSVCghaXND
b21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAKLSAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IGZhbHNl
OworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3Rp
bmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlO
YW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkgewogICAgICAgICB2YWxpZGF0ZU9m
ZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFu
c2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFu
c2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01NjcsMTEgKzU2MywzMSBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBudWxscHRyOwogfQogCitTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9m
ZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKKyAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0dXJlLT5nZXRDb25jdXJy
ZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBpbnZhbGlkT2Zmc2V0KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9m
ZnNldCkKK3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0dXJl
LT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBpbnZh
bGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDb25jdXJyZW50SlNDZWxs
TG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPmNlbGxMb2NrKCkpOworICAgIHJldHVybiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQsIERl
ZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKKyAg
ICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2Jq
ZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25G
cm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQs
IGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0
KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFtZS51
aWQoKSkgIT0gaW52YWxpZE9mZnNldCk7CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0gMDsK
ICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9IHNf
bWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZpb3VzSUQodm0pKQpAQCAtMTIwMyw3ICsx
MjE5LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUo
SlNWYWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9seVByb3QKIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0aGlz
KSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOworICAgIG91dC5wcmludChS
YXdQb2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGlkKCkpKSwgIiwgIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwogICAgIAogICAg
IENvbW1hUHJpbnRlciBjb21tYTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKaW5kZXggNTM4NDRiOTFhNmVlOWYxNDZjZjg0NGRkMDA1NzU4ZTZmY2M3NDYz
NS4uMzIwYTQ3YTdiODM0NTlhMmI4ZDk3YjIxZDQ0NTdhMTgxYWEyOGVlZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNs
dWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xOTIsNyArMTkz
LDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFk
ZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0g
bnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9
IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
RnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5
cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0cnVj
dHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlv
bihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKiA9IG51bGxwdHIpOwpAQCAtNTMwLDYgKzUzMiw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
CiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAgICBi
b29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsKICAg
ICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QpOwogCkBAIC04MTEsNiArODE0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1
Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9w
ZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3aWxs
IHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0
aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRo
YXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCAy
M2Q3OGZjYjkxNDJmOTUwMjdiZDcyN2Y4NWM0YmQxN2YwYzkxNzMyLi4zZGMxN2I3MzM1OTk0ZTgz
ZTExMTAyZDBlOWVjYWIwZDZlNDk4MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNTIsMTAgKzI1MiwyMyBAQCBpbmxpbmUg
Ym9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29u
c3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Js
b2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiBq
c0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVs
VHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdI
ZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxsID0g
ZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBl
Rm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG11
c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9vbCBT
dHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGI4NDZiYTU5YTUxM2Y4
YWM0NWNjZDYwYjIyNzI1MDhlMWJiNzJhOC4uOTEyMWJjNjYwODk0ZDI5NmZiZmE0ZTBkMjhjNzhh
MTg2YWZhNWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
QEAgLTI4NTAsNiArMjg1MCwxNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdldENvbmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25IYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdGlvbi0+YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFsKHZt
KSkpOworfQorCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMjk4Myw2ICsyOTkyLDggQEAg
dm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rpb24o
dm0sICJnZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCIsIEpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0
aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAi
Z2V0Q29uY3VycmVudGx5IiwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHksIDIpOwogCisgICAgYWRk
RnVuY3Rpb24odm0sICJoYXNPd25MZW5ndGhQcm9wZXJ0eSIsIGZ1bmN0aW9uSGFzT3duTGVuZ3Ro
UHJvcGVydHksIDEpOworCiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29y
cmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZl
Y3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBqc051bGwoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVj
dHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4OTEw
OGE4ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJiMjE5
NGFhYzcwZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAgIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBl
Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYgKzU5
LDcgQEAgcHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkpIGNv
bnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09IG1f
bWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1Ymxp
YzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsg
fQogICAgIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQot
ICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29uc3Rf
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAgLTk4
LDYgKzk4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJvbSBs
b3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+IGJ1
aWxkTGlzdCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAg
ICAgICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9pdGVy
YXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAgICAg
bGlzdC5hcHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAtMTA2
LDE3ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIoKQor
ICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5jbGVh
cigpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZv
aWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAodHlw
ZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIpIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwgcGFp
ci52YWx1ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAgICBt
dXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFwOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IDRlMDA5ZmVkNmJkMGUzMTE1N2M2NjQwOWM3YjM1ZmNjN2VmZjIzMjMuLmEzMGNl
ZDE5ZjhmYzNlMmU2ZDNjNDQxNWI0YTc3OWE1MGM5MGM4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxMiwxMyArMzEyLDEz
IEBAIGJvb2wgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRleCh0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93
KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVs
ZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBC
YXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
dW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxZWYwNmMyNmVlMjUyZGU2NjhjMWRlZGU5MWM1ZGRm
NmEwZGRmZGU1Li44NGI5YTEzZTE5ZWExODlkZjMwNzQ3NjA2NWRkMzczZTUxZTRmNjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAt
MTYzLDEzICsxNjMsMTMgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHUKICAgICByZXR1cm4gSlNP
YmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTG9jYXRp
b24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9ubHkg
YWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlFcnJv
cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGUyZWVkZmQ1YjBj
NWFhNzE4NzBkYTc2NTQzOTdlMzViOTlhODJjYWMuLjBjYjY3ZWYyOWM2MmJmOGNjNDQ2YTBlY2Uz
MWM5ZmU1MzUxNTdhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBKU1Jl
bW90ZURPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkLCBKU1ZhbHVlLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU1JlbW90ZURPTVdp
bmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSkKK2Jvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IDAzZGQ5YzE2MWE4Mzk5MTJkNDM5MzQyZDI2NWJjNWZkMTViNmE0MTYuLmI3
Y2QxZmNhNDM5OWNlODk5NmFhYTZlY2E3OTUwNzM2YzA1MzIzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzAxLDcg
KzEzMDEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogICAgICMgVGhpcyBpbXBsZW1l
bnRzIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmpl
Y3QtZGVsZXRlIGZvciB0aGUKICAgICAjIGZvciB0aGUgZGVsZXRlUHJvcGVydHkgb3ZlcnJpZGUg
aG9vay4KIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIntcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIHRoaXNPYmpl
Y3QgPSAqanNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CkBAIC0xMzIxLDcgKzEzMjEs
NyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogCiAgICAgIyBGSVhNRTogSW5zdGVhZCBv
ZiBjYWxsaW5nIGRvd24gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5LCBwZXJoYXBzIHdlIHNob3Vs
ZCBpbXBsZW1lbnQKICAgICAjIHRoZSByZW1haW5lZCBvZiB0aGUgYWxnb3JpdGhtIG91cnNlbHZl
cy4KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7Cisg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9CiAKQEAgLTI2OTYsNyArMjY5Niw3
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJyaWRl
c0RlbGV0ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJv
cGVydHlTbG90Jik7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQpO1xuIik7CiAgICAgfQogCkBAIC00MzI0LDcgKzQzMjQsOCBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
XCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
ICAgICAgICAgfQpAQCAtNzUxMiw3ICs3NTEzLDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JI
ZWxwZXJNZXRob2RzCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVu
KFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcu
Y3BwCmluZGV4IGI1ZWE1NDhlMWQxMjcyZTE4NmRiOTQ0Y2U2MTk4NTBmNGZkMmU4MDguLmU2MzMy
MzlkYWVmY2VmMDQwOWM4YjQ2M2I4NzBmNjZiODEwNWQ3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAKQEAgLTEzNyw3ICsxMzcsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGlu
Z09wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTE0NSw3ICsx
NDYsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7
CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRl
IiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDgwZmFmMzUx
MDU0N2EyYWRlNzdjYjdlYzk1YjI5MTkyZDkwMWFhNDkuLmVmNjYwMzM0ZTMxODFiNjdkZTUyNGIz
ZDM1ZGYxNjU2NGY2NTZhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKQEAgLTEwOCw3ICsxMDgsOCBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJhU2Vj
cmV0QXR0cmlidXRlIiksIHN0cmxlbigiYVNlY3JldEF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmIChoYXNEaXNh
YmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKICAg
ICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBiZmY0YzNiMDlkYTU5NDFiZmY3MWRj
ZGJiMzg1MjU0OGEwMGMzZjFkLi44NzgzZTE1YzI4MTM3NjYzNGZkYzc1ZGVmZmM4NWRkYTk2NTQ4
OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNw
cApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG8KICAgICBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpq
c0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGlmIChpc1Zpc2libGVOYW1lZFByb3Bl
cnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFByb3Bl
cnR5KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIH0KLSAgICByZXR1
cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCmluZGV4IDBl
YTRiYjExYjg2MDUzMDExNjU3ZmQ2ZWE2M2YyNDZkNGQ4MmU1MGEuLjEzOGQ0YzE4ZjhmNDZiYzM0
MzMxMDliZDAzMjM5NTYzN2QwYWMzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0aW9u
TW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNzk0ZDU5NzZmMTNmMDcxOGI0Y2VlNTE2MzM4
MzBjY2QzMGYxYzMzMy4uNTc5ZjJhMGU2YThjN2E5MjU1NjE5ZDg0NDUyNmJhOGRkYjJkYWE4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAgIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhp
c09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24qPihj
ZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQsNyAr
MjA0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KIAogICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDc5MWJl
MTgyZWIxYjM2OTY5MjFkZTk3Njk1MjcyOWYwYjRmMGIzNGEuLjA1NWQzZGY5MjM4MThjMDA3Njdm
MTg5NWRmNjcyNWY1YmMwZWRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVt
ZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6
SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGIzMzc2ZTNhOWZlNTJiOGEwYTZkM2Q0MDVh
NmFhZmVjNDFiY2YwODcuLjI1MDIzYTMxYTE0NjQyMjg3YTBiMWI1MGRkZjRkZjQ2MTlkZGYyNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNw
cApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHCiAgICAgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0ID0g
KmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwogICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29s
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZQogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJv
b2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyLmgKaW5kZXggNTRlMDI1NDc4ZTFkYzM5OTA3MDczM2U0OTliMDE2MzE0OTAxMjQ5ZS4uYTg1
OGEyNzE1NGJkM2M2MzY0ZmM0NWE2NDdmZjQyYjZiNDcyNTA2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09i
amVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6
OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
LCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggZThkOTc0MTlh
ZmE1ZDlhZTY4ZGEwNGVhNTQxZWFiZjUwZDQ3ODczNi4uZjZmMzY2ZTIyMmU0MTQ0YTc0YjYzNzU0
ZmJkMDc4OThmOThiNjZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KICAgICBp
ZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0dXJu
IGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAppbmRleCBhOTk0NWJhZmM2MTE0M2U1NzZmZmQ2
MGZlYzhlZWU2OTY0YjlmMDMwLi4yZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4
OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQ
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlND
OjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
OjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggMTEwMGFhM2NlYzBiMWUxMGY3OTA3MzBhZjUxMzA5
NzAwNjAwYjk1ZS4uMWZiM2YxYmVhOGRhZjJmMGQwOWUyOTZjNTg3ZmZlMDQ3MDg2M2ZlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcApAQCAtMTU3LDQ1ICsxNTcsNTIgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3Bl
cnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2Vj
cmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1l
UHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNy
ZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJ
Z25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhp
cywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkp
KSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0
cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90
IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVkKCkp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbnRyaWVzIiksIHN0cmxlbigiZW50cmllcyIpKTsKICAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERl
bGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRvckVu
YWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImtleXMiKSwgc3RybGVuKCJrZXlzIikpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJhdG9y
RW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVl
OwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidmFsdWVzIiksIHN0cmxlbigidmFsdWVz
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9
CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0
ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZm9yRWFjaCIpLCBzdHJsZW4o
ImZvckVhY2giKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2
bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1
cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKaW5kZXggNGMxMDcxMDEzMTA5YjVmZWVjYjQzMjU3MTQ4NDA2OTJkODkwNmYy
MS4uZjU2ODQzMjRhNjY3YmE5NmRlNzUzNjA4MTg3M2QyNTIwYWE4ZTUzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
QEAgLTE5ODQsMTQgKzE5ODQsMTYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2IKICAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFi
bGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVB
dHRyaWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGlj
IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMi
KSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIikpOwogICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0y
MzQ3LDkwICsyMzQ5LDEwNCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24i
KSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoISh3
b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAgICAg
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxl
ZCIpLCBzdHJsZW4oImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAgICAgaWYgKCF3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkpIHsKICAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJ3b3JsZFNwZWNpZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRTcGVj
aWZpY01ldGhvZCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3Vs
YXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkp
IHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2Vj
cmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAg
ICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVu
dGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVz
dEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRC
b29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9CiAjZW5kaWYKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKICAg
ICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSwg
c3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSk7CiAgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJj
b25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRpb25h
bGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsK
KyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1
cmVDb250ZXh0KCl8fCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWxsb3dzTWVkaWFEZXZpY2VzKCkpKSB7CiAgICAg
ICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigibWVkaWFEZXZpY2VzIiksIHN0cmxlbigibWVkaWFEZXZpY2VzIikpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAg
aWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhhc1Nl
cnZpY2VXb3JrZXJTY2hlbWUoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzZXJ2aWNlV29ya2Vy
cyIpLCBzdHJsZW4oInNlcnZpY2VXb3JrZXJzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAg
ICBpZiAoIShSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0
dXJlRW5hYmxlZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
dGVzdEZlYXR1cmUxRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIikpOwog
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5k
aWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVz
dEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0aW9u
YWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpLCBzdHJsZW4oInJ1bnRpbWVDb25kaXRpb25hbGx5UmVh
ZFdyaXRlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUg
c2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0g
ICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0ZSIp
LCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAo
IWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiY29uZGl0
aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBz
bG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIC8vIEFkZGluZyBiYWNrIGF0dHJp
YnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2YXJp
YW50IGFib3ZlLiAKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0
LmNwcAppbmRleCBmZWViZGVmN2JjNDVlOThjOTMwOGZkZmJkZTExMGI5OWZkZGRjYTJjLi5hNDE3
ZjVjMzhiZGE3OTRmMTZlZmRhNDI2MjVmMjMwYTQwMDE5YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAKQEAgLTM5Miw3ICszOTIsNyBAQCBib29sIF9OUE5fUmVtb3ZlUHJv
cGVydHkoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChpLT5pc1N0cmluZygpKQotICAgICAgICAgICAgb2JqLT5pbXAt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxHbG9iYWxP
YmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmplY3QsIGkt
PnN0cmluZygpKSk7CisgICAgICAgICAgICBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KG9iai0+aW1w
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBv
YmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgob2JqLT5pbXAs
IGxleGljYWxHbG9iYWxPYmplY3QsIGktPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDIyZjBiOGQ5ZDhmYWU0YTc5YzZi
NjMxZTkzNWNiNmFkYzdkOTRmZmYuLmRlM2E0M2RlZjBiOTc4YzA3ODEzZDgwMDQ3MmU5Zjk5YWVm
Nzg0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3Qu
bW0KQEAgLTQ1OCw3ICs0NTgsNyBAQCAtICh2b2lkKXJlbW92ZVdlYlNjcmlwdEtleTooTlNTdHJp
bmcgKilrZXkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsK
IAotICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtzZWxm
IF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBT
dHJpbmcoa2V5KSkpOworICAgIEpTQzo6SlNDZWxsOjpkZWxldGVQcm9wZXJ0eShbc2VsZiBfaW1w
XSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3RyaW5n
KGtleSkpKTsKIAogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAg
ICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCA1ZWQyMWYxMzRlZjRhYWI1ZGMw
YzU1YTQ1ZGU2YTYzZDI3YzZiZTJlLi42MjI5NjM2OGViYjkwYzUwYjlkZTdmYTA3ODJjOWM2ZmEy
ODU5MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApAQCAt
MTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBl
IGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0
VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUpOwogCiAgICAgYm9vbCB0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgLy8g
RklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1cGVy
Y2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0aGUg
bG9uZ2VyIHRlcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
aW5kZXggMTllZDE5Y2JjN2FlM2VlNDY3Nzk2YjEwM2NiZmU3NjE2MDlhZDczMC4uNmU4NzdkMmVi
N2Y0NGQwM2EyOGUxNzEwODNiZDNkMGYwYmI5ODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIENhbGxUeXBlIE9iamNG
YWxsYmFja09iamVjdEltcDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1ib29sIE9iamNGYWxsYmFj
a09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwCmluZGV4IDRkMjk3YzcwZDZiMWI2YzFhZjg4ZjkxNGJlODVmNjBkZjAzY2M5YjEuLmVj
MzU4OGZjNTY1OTU1M2Y1MjcyODNjNThhNzM1ODAyMTMyOWFjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIFJ1bnRpbWVB
cnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNl
dFZhbHVlQXQobGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKIH0KIAotYm9vbCBS
dW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKQorYm9vbCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewogICAg
IHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4
IGZjZjVlMzNmYjExNDAxODUxMDc5OTMwZmJkMTE3NjEzNTQ1MmM3ZTYuLjI5ODEyYTY2ZDZmMDEy
NGUzODM2MjVmOTU2MDE5Y2EzM2JjM2JkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
ICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheS0+Z2V0TGVuZ3RoKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGEwMzZiNjY2MmQ0ODcyZjY4ZGM1
MjY0NWJhMWFmMmJhMTUzMzAzMmQuLjlkNWQ2MGRlZjM1NzU0YmUxZTBlMDYyMGU0MWVkYjk4ZWZl
MzllZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMjAw
LDcgKzIwMCw3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpCiB7CiAgICAgLy8gQ2FuIG5ldmVyIHJlbW92ZSBhIHByb3BlcnR5IG9mIGEgUnVudGlt
ZU9iamVjdC4KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5oCmluZGV4IDZjYmY3YmY3OTZiMGE4OTQwNGI5NDIyNzVkNjUxZTYwZTczMjQ1ODIuLjNj
MTBkOGJkNTBmM2I3ZGFhNDg0MjIxNGI5ZTA0ZjA0M2FmZGYyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHAKaW5kZXggMmVmYjIyNTIzZjkyMWU5MmFiZDAyMTZlYjBjZDFmZmQxMDAzNjJiZS4uMDVkMTI5
MjkzOTU4MmYwNGM0MzJkMzBjMTQyZGJhNWRhYTBiZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAg
LTM2MSw3ICszNjEsNyBAQCBib29sIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNOUE9i
amVjdCo+KGNlbGwpLT5kZWxldGVQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBucElkZW50
aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRleCA4
NTU4ODk0OWEzMDYwNGM2OWY3N2NjYzNmNjBlNTQ2OTc3ZmZhYzZkLi40ODAzYzBiYzU3MWY5Nzdk
ZGMyNzIyYmJhYjk2YjZkMjdjMmE5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVy
dHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVj
dC5jcHAKaW5kZXggMzZmMjhlZTZmYjAxMDJkOGMxNzcxM2M2MDhiNjE0ZWFmODVkZGI3Ni4uYTdm
YjZiNWU5MmQ2NjE1ZmFkYTE4NjQyNzE2ZjExMmVlZGIzYjk5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAK
QEAgLTIyOSw4ICsyMjksOCBAQCBib29sIE5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KE5QSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG1fanNPYmplY3Qu
Z2V0KCksIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworCisgICAgICAgIEpTQ2Vs
bDo6ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
aWRlbnRpZmllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2pzT2JqZWN0LT5oYXNQ
cm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSkpIHsK
ICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAzMmFmYTI4MGZhOTI3ZDg3NzMyMGViODFjYmQ5
MDcxMDI1NTk3ZS4uZGM2MmQ1NTQxNDJhMzFjOGE4MDU2NmJkNmRkM2FlN2VlOTRiMzUyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTE0MSw4ICsxMTQx
LDggQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJlbW92ZVByb3BlcnR5KHVp
bnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGkKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOworCisgICAgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShvYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTQ2YTc1NWFkOWY5MzJiMWI1MTcyOWNhNDA2ZmM0
ZjE4ZTk3ZTI3NS4uOWFmYjQzY2VmOTA3MzM0NzI5YWMwNzJiOGNlMzFhYWMxYzA1NThiZSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMC0wMi0yNCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qczoKKyAgICAgICAgKGRl
bGV0ZS5DLnByb3RvdHlwZS56KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXBy
b3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAg
ICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVx
LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282KToKKyAgICAgICAgKG5vSW5saW5lLmFz
c2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0X25lcS50ZXN0UG9seW1vcnBo
aWNEZWxCeVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbCk6
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUu
anM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGFzc2VydF9lcSk6CisgICAg
ICAgIChhc3NlcnRfbmVxKToKKyAgICAgICAgKGFzc2VydF90aHJvd3MpOgorICAgICAgICAobm9J
bmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGluZS5hc3NlcnRfbmVxLm5vSW5s
aW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQubWFrZUZvbyk6CisgICAg
ICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5saW5lLmFzc2VydF9u
ZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlWYWwubWFrZUZvbzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNo
ZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLm1ha2VGb28zKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC50ZXN0Q2FjaGVhYmxl
RW1wdHlEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURl
bGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzLm1ha2VGb280KToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQudGVzdENhY2hlYWJsZURlbGV0
ZUJ5SWRNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlz
cyk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNo
ZWFibGUtc3RydWN0dXJlLmpzOgorICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktaW5s
aW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnRf
ZXEpOgorICAgICAgICAoYXNzZXJ0X25lcSk6CisgICAgICAgIChhc3NlcnRfdGhyb3dzKToKKyAg
ICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRfZXEubm9JbmxpbmUuYXNzZXJ0
X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkLm1ha2VG
b28pOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0Lm5vSW5saW5lLmFzc2VydF9lcS5ub0lubGlu
ZS5hc3NlcnRfbmVxLm5vSW5saW5lLmFzc2VydF90aHJvd3MudGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQudGVzdENhY2hl
YWJsZURlbGV0ZUJ5VmFsLm1ha2VGb28yKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC5t
YWtlRm9vMyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwudGVz
dENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZCk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVh
YmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy5tYWtlRm9vNCk6
CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkLnRlc3RDYWNo
ZWFibGVEZWxldGVCeUlkTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVs
ZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4Lm1ha2VGb281KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcy50ZXN0RGVsZXRlSW5kZXgpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdERlbGV0ZUluZGV4LnRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsLm1ha2VGb282
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxC
eVZhbCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWNEZWxCeVZhbC50ZXN0Qmln
aW50RGVsZXRlQnlWYWwubWFrZUZvbzcpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3Jw
aGljRGVsQnlWYWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RCaWdpbnREZWxldGVCeVZhbC50ZXN0U3ltYm9sRGVsZXRlQnlWYWwubWFrZUZvbzgpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLnRlc3RTeW1ib2xEZWxldGVCeVZh
bCk6CisgICAgICAgIChub0lubGluZS50ZXN0U3ltYm9sRGVsZXRlQnlWYWwudGVzdE9iakRlbGV0
ZUJ5VmFsLm1ha2VGb285KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTeW1ib2xEZWxldGVCeVZh
bC50ZXN0T2JqRGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iakRlbGV0ZUJ5
VmFsLnRlc3RTdHJpY3QubWFrZUZvbzEwKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmpEZWxl
dGVCeVZhbC50ZXN0U3RyaWN0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTdHJpY3QudGVzdE92
ZXJyaWRlLmFyci5qKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTdHJpY3QudGVzdE92ZXJyaWRl
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPdmVycmlkZSk6CisKIDIwMjAtMDItMTkgIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIENvbXB1dGVkIFBy
b3BlcnRpZXMgd2l0aCBpbmNyZW1lbnQgc29tZXRpbWVzIHByb2R1Y2VzIGluY29ycmVjdCByZXN1
bHRzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
ZnJvbS1wcm90b3R5cGUtY2hhaW4uanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUt
cHJvcGVydHktZnJvbS1wcm90b3R5cGUtY2hhaW4uanMKaW5kZXggNDlhMzFiN2YyNDdjMWJkMGFj
YTgyY2IyMmRmMjBlOGYxYmY2MWJkZC4uNTRiYmE4MmU2OTljNjJjY2NhODk0NTE2ZTYyYjdlNmNh
MWY1MTIwMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbi5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkg
bWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdh
dGNoLwogZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIpCiAgICAgICAgIHRocm93IG5l
dyBFcnJvcjsKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gZG9UZXN0KHpWYWwpIHsKIH0KIG5v
SW5saW5lKGRvVGVzdCk7CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDsgKytpKSB7Citmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKICAgICBjb25zdCBYID0geyBpIH0KICAgICBDLnBy
b3RvdHlwZS56ID0gWAogICAgIGRvVGVzdChYKQpAQCAtMzYsNyArMzYsNyBAQCBmb3IgKGxldCBp
PTA7IGk8MTAwMDA7ICsraSkgewogCiBkZWxldGUgQy5wcm90b3R5cGUuegogCi1mb3IgKGxldCBp
PTA7IGk8MTAwMDAwMDsgKytpKSB7Citmb3IgKGxldCBpID0gMDsgaSA8IDIwMDAwMDA7ICsraSkg
ewogICAgIGdldFooe3o6IGl9KQogICAgIGRvVGVzdCh1bmRlZmluZWQpCiB9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBv
bHltb3JwaGljLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlu
bGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmI4NmQ1NWExOWY5YzA5ZTUw
ZGUxYmQ1NjM5NGRhNTEwZTRjNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcwpAQCAt
MCwwICsxLDQxIEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KKworZnVu
Y3Rpb24gQyhwcm9wKSB7CisgICAgdGhpc1twcm9wXSA9IDQKKyAgICBkZWxldGUgdGhpc1twcm9w
XQorfQorbm9JbmxpbmUoQykKKworZnVuY3Rpb24gZm9vKG8sIHByb3ApIHsKKyAgICBkZWxldGUg
b1twcm9wXQorfQorbm9JbmxpbmUoZm9vKQorCitmdW5jdGlvbiBGKHByb3ApIHsKKyAgICB0aGlz
W3Byb3BdID0gNAorICAgIGZvbyh0aGlzLCBwcm9wKQorfQorbm9JbmxpbmUoRikKKworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIG5ldyBDKCJmb28xIikKKyAgICBuZXcg
RigiZm9vMSIpCisgICAgbmV3IEMoImZvbzIiKQorICAgIG5ldyBGKCJmb28yIikKKyAgICBuZXcg
QygiZm9vMyIpCisgICAgbmV3IEYoImZvbzMiKQorICAgIG5ldyBDKCJmb280IikKKyAgICBuZXcg
RigiZm9vNCIpCisgICAgbmV3IEMoImZvbzUiKQorICAgIG5ldyBGKCJmb281IikKKyAgICBuZXcg
QygiZm9vNiIpCisgICAgbmV3IEYoImZvbzYiKQorICAgIG5ldyBDKCJmb283IikKKyAgICBuZXcg
RigiZm9vNyIpCisgICAgbmV3IEMoImZvbzgiKQorICAgIG5ldyBGKCJmb284IikKKyAgICBuZXcg
QygiZm9vOSIpCisgICAgbmV3IEYoImZvbzkiKQorICAgIG5ldyBDKCJmb28xMCIpCisgICAgbmV3
IEYoImZvbzEwIikKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxl
dGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMDg2M2M2NDFhOWE3OWRl
YzlmZTE0N2E5NWE4M2VlYzczZmYzYzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsMzUg
QEAKKy8vQCBza2lwIGlmICRtb2RlbCA9fiAvXkFwcGxlIFdhdGNoLworCitmdW5jdGlvbiBDKCkg
eworICAgIHRoaXMueCA9IDQ7CisgICAgZGVsZXRlIHRoaXMueAorfQorbm9JbmxpbmUoQykKKwor
ZnVuY3Rpb24gRCgpIHsKKyAgICBkZWxldGUgdGhpcy54Cit9Citub0lubGluZShEKQorCitmdW5j
dGlvbiBmb28obykgeworICAgIGRlbGV0ZSBvLngKK30KK25vSW5saW5lKGZvbykKKworZnVuY3Rp
b24gRSgpIHsKKyAgICB0aGlzLnggPSA0CisgICAgZm9vKHRoaXMpCit9Citub0lubGluZShFKQor
CitmdW5jdGlvbiBGKCkgeworICAgIGZvbyh0aGlzKQorfQorbm9JbmxpbmUoRikKKworZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgbmV3IEMKKyAgICBuZXcgRAorICAg
IG5ldyBFCisgICAgbmV3IEYKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUu
anMKaW5kZXggNzc5NWRjNTgxNTc4ZTRjMzk4MWMyMmFjODc2YzQ1NTQxM2U2NGQzYy4uYTkzOWFh
ZTNhYzhhY2NjMjIxNGRkN2U3ZDgwMjQ0MjFhODE2NDVkOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUu
anMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWtlZXBzLWNh
Y2hlYWJsZS1zdHJ1Y3R1cmUuanMKQEAgLTI0LDUgKzI0LDUgQEAgZnVuY3Rpb24gZG9UZXN0KCkg
ewogfQogbm9JbmxpbmUoZG9UZXN0KTsKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwMDAwOyArK2kp
IGRvVGVzdCgpCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7ICsraSkgZG9UZXN0KCkKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVjdHVy
ZS10cmFuc2l0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0
cnVjdHVyZS10cmFuc2l0aW9uLmpzCmluZGV4IDQwM2M3YzA5Y2MxMjNmM2IxODU0NjgwYjZjMTdk
ZDQ1NmE1ZGVmMzEuLmE0YmExZTQ0ZGFjOGE5YTMzMWRlMDNiMDUzNWUzOTI0OTNlNjVjMTEgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUt
dHJhbnNpdGlvbi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktY2hlY2st
c3RydWN0dXJlLXRyYW5zaXRpb24uanMKQEAgLTEyLDYgKzEyLDkgQEAgZnVuY3Rpb24gYXNzZXJ0
X25lcShhLCBiKSB7CiAgICAgaWYgKGEgPT09IGIpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiICE9PSAiICsgYik7CiB9Citub0lubGluZShhc3Nl
cnQpCitub0lubGluZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQogCiBmdW5jdGlv
biBzZChvYmopIHsKICAgICBsZXQgZGF0YSA9ICR2bS5nZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlz
dChvYmopCkBAIC0zMSw2ICszNCw4IEBAIGZ1bmN0aW9uIHNpZChvYmopIHsKICAgICBsZXQgZGF0
YSA9IHNkKG9iaikKICAgICByZXR1cm4gZGF0YVtkYXRhLmxlbmd0aC0xXS5pZAogfQorbm9Jbmxp
bmUoc2QpCitub0lubGluZShzaWQpCiAKIGZ1bmN0aW9uIHRlc3REZWxldGVJc05vdFVuY2FjaGVh
YmxlKGkpIHsKICAgICBsZXQgZm9vID0ge30KQEAgLTYyLDYgKzY3LDcgQEAgZnVuY3Rpb24gdGVz
dERlbGV0ZUlzTm90VW5jYWNoZWFibGUoaSkgewogICAgIGFzc2VydF9lcSgkdm0uZ2V0Q29uY3Vy
cmVudGx5KGZvbywgImJhciIraSksIDEpCiAgICAgYXNzZXJ0KGZvb1siYmFyIiArIGldID09PSAx
KQogfQorbm9JbmxpbmUodGVzdERlbGV0ZUlzTm90VW5jYWNoZWFibGUpCiAKIGZ1bmN0aW9uIHRl
c3RDYW5NYXRlcmlhbGl6ZURlbGV0ZXMoaSkgewogICAgIGxldCBmb28gPSB7fQpAQCAtMTAwLDYg
KzEwNiw4IEBAIGZ1bmN0aW9uIHRlc3RDYW5NYXRlcmlhbGl6ZURlbGV0ZXMoaSkgewogICAgIGFz
c2VydF9lcShkYXRhW2RhdGEubGVuZ3RoLTJdLnByb3BlcnR5LCAiYmFyIiArIGkpCiB9CiAKK25v
SW5saW5lKHRlc3RDYW5NYXRlcmlhbGl6ZURlbGV0ZXMpCisKIGZ1bmN0aW9uIHRlc3RDYW5GbGF0
dGVuKGkpIHsKICAgICBsZXQgZm9vID0ge30KICAgICBmb3IgKGxldCBqPTA7IGo8NTAwOyArK2op
IHsKQEAgLTEzMSw2ICsxMzksNyBAQCBmdW5jdGlvbiB0ZXN0Q2FuRmxhdHRlbihpKSB7CiAgICAg
ICAgICAgICBhc3NlcnRfZXEodmFsLCB1bmRlZmluZWQpCiAgICAgfQogfQorbm9JbmxpbmUodGVz
dENhbkZsYXR0ZW4pCiAKIGZ1bmN0aW9uIHRlc3REZWxldGVXaXRoSW5saW5lQ2FjaGUoKSB7CiAg
ICAgT2JqZWN0LnByb3RvdHlwZS5nbG9iYWxQcm9wZXJ0eSA9IDQyCkBAIC0xNzUsNiArMTg0LDcg
QEAgZnVuY3Rpb24gdGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSgpIHsKIAogICAgIGRvVGVzdCh1
bmRlZmluZWQpCiB9Citub0lubGluZSh0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKQogCiB0ZXN0
RGVsZXRlV2l0aElubGluZUNhY2hlKCkKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVs
ZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9w
ZXJ0eS1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M1M2UwMTIxNmRmMGMzZjhlNjJhNjk4
NGVmYjJhNGI3ZmNmNjkyNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0
ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSw1NDYgQEAKKy8vQCBydW5EZWZh
dWx0KCItLXVzZUJpZ0ludD10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgewor
ICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBm
YWlsZWQiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X2VxKGEsIGIpIHsKKyAgICBpZiAoYSAhPT0g
YikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkOiAiICsgYSArICIg
PT09ICIgKyBiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X25lcShhLCBiKSB7CisgICAgaWYgKGEg
PT09IGIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEg
KyAiICE9PSAiICsgYik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZnVuKSB7CisgICAg
bGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuKCkKKyAgICB9IGNhdGNo
IHsKKyAgICAgICAgdGhyZXcgPSB0cnVlCisgICAgfQorICAgIGFzc2VydCh0aHJldykKK30KK25v
SW5saW5lKGFzc2VydCkKK25vSW5saW5lKGFzc2VydF9lcSkKK25vSW5saW5lKGFzc2VydF9uZXEp
Citub0lubGluZShhc3NlcnRfdGhyb3dzKQorCitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vKCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRl
IGZvby5iYXoKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9v
KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1
MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28oKQorICAgIH0KKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWQpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgp
IHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vMigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAg
ICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29b
ImJheiJdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzIp
CisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzIoKQorICAgIH0KKworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKwor
ICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5r
ZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0
ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzMoKSB7CisgICAgICAgIGxldCBmb28gPSB7
fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBhc3Nl
cnRfZXEoZGVsZXRlIGZvby5iYXIsIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAg
ICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzMpCisKKyAgICBhcnIg
PSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgYXJyW2pdID0gbWFrZUZvbzMoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3Nl
cnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoi
IGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5i
YWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiAr
IGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNz
ZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAg
ICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKQorCitmdW5jdGlv
biB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZvbzQo
KSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAgICBm
b28uYmFyID0gMgorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXosIHRydWUpCisgICAg
ICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRl
bGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28s
ICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQyLAorICAgICAgICAgIGNvbmZpZ3VyYWJs
ZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2Jh
ciwgZmFsc2UpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmZvb2JhciwgZmFsc2UpCisg
ICAgICAgIGFzc2VydF9lcShmb28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAg
IH0KKyAgICBub0lubGluZShtYWtlRm9vNCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtl
Rm9vNCgpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQor
ICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFz
c2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2Vy
dChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3Nl
cnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICB9Cit9Citub0lubGluZSh0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpCisKK2Z1bmN0
aW9uIHRlc3REZWxldGVJbmRleCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNSgpIHsKKyAgICAg
ICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisgICAgICAgIGZvby5iYXIgPSAy
CisgICAgICAgIGZvb1swXSA9IDIzCisgICAgICAgIGZvb1sxXSA9IDI1CisgICAgICAgIGFzc2Vy
dF9lcShkZWxldGUgZm9vLmJhciwgdHJ1ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb29b
MV0sIHRydWUpCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVybiBmb28KKyAg
ICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzUpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFr
ZUZvbzUoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAg
ICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMo
Zm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAg
IGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFz
c2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBh
c3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9v
KSkKKyAgICAgICAgYXNzZXJ0KCEoImJhciIgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0X2VxKGZv
b1swXSwgMjMpCisgICAgICAgIGFzc2VydF9lcShmb29bMV0sIHVuZGVmaW5lZCkKKyAgICAgICAg
Zm9vWzFdID0gMQorICAgICAgICBhc3NlcnRfZXEoZm9vWzFdLCAxKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3REZWxldGVJbmRleCkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljRGVsQnlWYWwo
aSkgeworICAgIGZ1bmN0aW9uIG1ha2VGb282KCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAg
ICAgICAgZm9vWyJiYXoiK2ldID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxl
dGUgZm9vWyJiYXoiK2ldCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUo
bWFrZUZvbzYpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzYoKQorICAgIH0KKwor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBh
cnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2Vx
KE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IitpIGlu
IGZvbykpCisgICAgICAgIGZvby5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEp
CisgICAgICAgIGZvb1siYnVnIiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsg
al0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorCisgICAgfQorfQor
bm9JbmxpbmUodGVzdFBvbHltb3JwaGljRGVsQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RCaWdpbnRE
ZWxldGVCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBtYWtlRm9vNygpIHsKKyAgICAgICAgbGV0IGZv
byA9IHt9CisgICAgICAgIGZvb1sxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwbl0gPSAxCisgICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dCisgICAgICAgIHJldHVybiBmb28K
KyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzcpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTAp
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0g
bWFrZUZvbzcoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0g
MikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAg
ICBhc3NlcnQoISgxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbiBpbiBm
b28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQor
ICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpd
ID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lu
bGluZSh0ZXN0QmlnaW50RGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RTeW1ib2xEZWxldGVC
eVZhbCgpIHsKKyAgICBjb25zdCBzeW1ib2wgPSBTeW1ib2woJ2ZvbycpOworCisgICAgZnVuY3Rp
b24gbWFrZUZvbzgoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9s
XSA9IDEKKyAgICAgICAgYXNzZXJ0KCEoU3ltYm9sKCdmb28nKSBpbiBmb28pKQorICAgICAgICBh
c3NlcnQoc3ltYm9sIGluIGZvbykKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRl
IGZvb1tzeW1ib2xdCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFr
ZUZvbzgpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzgoKQorICAgIH0KKworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJb
al0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9i
amVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9v
KSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAg
ICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9
PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdFN5bWJvbERlbGV0ZUJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0T2JqRGVsZXRlQnlWYWwo
KSB7CisgICAgY29uc3Qgc3ltYm9sID0geyBpOiAiZm9vIiB9OworCisgICAgZnVuY3Rpb24gbWFr
ZUZvbzkoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bc3ltYm9sXSA9IDEK
KyAgICAgICAgYXNzZXJ0KHN5bWJvbCBpbiBmb28pCisgICAgICAgIGFzc2VydCghKHsgaTogImZv
byIgfSBpbiBmb28pKQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vW3N5
bWJvbF0KKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShtYWtlRm9vOSkK
KworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7
ICsraikgeworICAgICAgICBhcnJbal0gPSBtYWtlRm9vOSgpCisgICAgfQorCisgICAgZm9yIChs
ZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisg
ICAgICAgIGFzc2VydChmb28uYmFyID09PSAyKQorICAgICAgICBhc3NlcnRfZXEoT2JqZWN0Lmtl
eXMoZm9vKS5sZW5ndGgsIDEpCisgICAgICAgIGFzc2VydCghKHN5bWJvbCBpbiBmb28pKQorICAg
ICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBm
b29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisg
ICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
T2JqRGVsZXRlQnlWYWwpCisKK2Z1bmN0aW9uIHRlc3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgZnVuY3Rpb24gbWFrZUZvbzEwKCkgeworICAgICAgICBsZXQgZm9vID0ge30K
KyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0
X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5i
YXosIHRydWUpCisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgJ2Zvb2Jhcics
IHsKKyAgICAgICAgICB2YWx1ZTogNDIsCisgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZQor
ICAgICAgICB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgZm9vLmZvb2Jh
cikKKyAgICAgICAgYXNzZXJ0X2VxKGZvby5mb29iYXIsIDQyKQorICAgICAgICByZXR1cm4gZm9v
CisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28xMCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1
MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0g
PSBtYWtlRm9vMTAoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9
PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAg
ICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAg
ICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAg
ICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGlu
IGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdE92
ZXJyaWRlKCkgeworICAgIGFyciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAw
OyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSBmdW5jdGlvbigpIHsgfQorICAgICAg
ICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIHRydWUpCisgICAg
ICAgIGRlbGV0ZSBhcnJbal0ubGVuZ3RoCisgICAgICAgIGFzc2VydF9lcSgkdm0uaGFzT3duTGVu
Z3RoUHJvcGVydHkoYXJyW2pdKSwgZmFsc2UpCisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMCkKKyAgICAgICAgYXNzZXJ0KCEoImJh
eiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcg
PT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1
ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30K
K25vSW5saW5lKHRlc3RPdmVycmlkZSkKKworZnVuY3Rpb24gdGVzdE5vbk9iamVjdCgpIHsKKyAg
ICBmdW5jdGlvbiBkZWxldGVJdChmb28pIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBmb28uYmF6
KQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKGRlbGV0ZUl0KQorCisg
ICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytq
KSB7CisgICAgICAgIGFycltqXSA9IHsgYmF6OiBqIH0KKyAgICB9CisKKyAgICBmb3IgKGxldCBq
ID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAg
ICAgYXNzZXJ0KCJiYXoiIGluIGZvbykKKyAgICAgICAgZGVsZXRlSXQoZm9vKQorICAgICAgICBh
c3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KKworICAgIGFzc2VydChkZWxldGVJdCgiYmF6
IikgPT0gImJheiIpCisgICAgZGVsZXRlSXQoU3ltYm9sKCJoaSIpKQorfQorbm9JbmxpbmUodGVz
dE5vbk9iamVjdCkKKworZnVuY3Rpb24gdGVzdE5vbk9iamVjdFN0cmljdCgpIHsKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBkZWxldGVJdChmb28pIHsKKyAgICAgICAgYXNzZXJ0
KGRlbGV0ZSBmb29bImJheiJdKQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5s
aW5lKGRlbGV0ZUl0KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQg
aiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IHsgYmF6OiBqIH0KKyAgICB9
CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9v
ID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KCJiYXoiIGluIGZvbykKKyAgICAgICAgZGVsZXRl
SXQoZm9vKQorICAgICAgICBkZWxldGVJdCg1KQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBm
b28pKQorICAgIH0KKworICAgIGFzc2VydChkZWxldGVJdCgiYmF6IikgPT0gImJheiIpCisgICAg
ZGVsZXRlSXQoU3ltYm9sKCJoaSIpKQorCisgICAgbGV0IGZvbyA9IHt9CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGZvbywgJ2JheicsIHsKKyAgICAgIHZhbHVlOiA0MiwKKyAgICAgIGNvbmZp
Z3VyYWJsZTogZmFsc2UKKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZUl0
KGZvbykpCit9Citub0lubGluZSh0ZXN0Tm9uT2JqZWN0U3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0
RXhjZXB0aW9uVW53aW5kKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIG11
dGF0ZVRoZW0oYSxiLGMsZCxlLGYsZyxoLGkpIHsKKyAgICAgICAgZy5pID0gNDIKKyAgICB9Cisg
ICAgbm9JbmxpbmUobXV0YXRlVGhlbSkKKworICAgIGZ1bmN0aW9uIGRlbGV0ZUl0KGZvbykgewor
ICAgICAgICBsZXQgY2F1Z2h0ID0gZmFsc2UKKworICAgICAgICB0cnkgeworICAgICAgICAgICAg
dmFyIGEgPSB7IGk6IDEgfQorICAgICAgICAgICAgdmFyIHYgPSB7IGk6IDEwIH0KKyAgICAgICAg
ICAgIHZhciBiID0geyBpOiAxMDAgfQorICAgICAgICAgICAgdmFyIGMgPSB7IGk6IDEwMDAgfQor
ICAgICAgICAgICAgdmFyIGQgPSB7IGk6IDEwMDAwIH0KKyAgICAgICAgICAgIHZhciBlID0geyBp
OiAxMDAwMDAgfQorICAgICAgICAgICAgdmFyIGYgPSB7IGk6IDEwMDAwMDAgfQorICAgICAgICAg
ICAgdmFyIGcgPSB7IGk6IDEwMDAwMDAwIH0KKyAgICAgICAgICAgIHZhciBoID0geyBpOiAxMDAw
MDAwMDAgfQorICAgICAgICAgICAgdmFyIGkgPSB7IGk6IDEwMDAwMDAwMDAgfQorCisgICAgICAg
ICAgICBtdXRhdGVUaGVtKGEsYixjLGQsZSxmLGcsaCxpKQorCisgICAgICAgICAgICBkZWxldGUg
Zm9vWyJiYXoiXQorCisgICAgICAgICAgICBhID0gYiA9IGMgPSBkID0gZSA9IGYgPSBnID0gaCA9
IGkKKyAgICAgICAgfSBjYXRjaCB7CisgICAgICAgICAgICBhc3NlcnRfZXEoYS5pLCAxKQorICAg
ICAgICAgICAgYXNzZXJ0X2VxKGkuaSwgMTAwMDAwMDAwMCkKKyAgICAgICAgICAgIGFzc2VydF9l
cShnLmksIDQyKQorICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBjYXVnaHQKKyAgICB9CisgICAgbm9JbmxpbmUoZGVsZXRlSXQpCisKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDEwMDAwMDsgKytqKSB7CisgICAgICAgIGFzc2VydCghZGVsZXRlSXQo
eyBqLCBiYXo6IDUgfSkpCisgICAgfQorCisgICAgbGV0IGZvbyA9IHt9CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGZvbywgJ2JheicsIHsKKyAgICAgIHZhbHVlOiA0MiwKKyAgICAgIGNvbmZp
Z3VyYWJsZTogZmFsc2UKKyAgICB9KTsKKworICAgIGFzc2VydChkZWxldGVJdChmb28pKQorfQor
bm9JbmxpbmUodGVzdEV4Y2VwdGlvblVud2luZCkKKworZnVuY3Rpb24gdGVzdFREWigpIHsKKyAg
ICBkZWxldGUgZm9vLngKKyAgICBsZXQgZm9vID0geyB4OiA1IH0KK30KK25vSW5saW5lKHRlc3RU
RFopCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdGVzdENhY2hlYWJs
ZURlbGV0ZUJ5SWQoKQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeVZhbCgpCisgICAgdGVzdENh
Y2hlYWJsZUVtcHR5RGVsZXRlQnlJZCgpCisgICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNz
KCkKKyAgICB0ZXN0RGVsZXRlSW5kZXgoKQorICAgIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkp
CisgICAgdGVzdEJpZ2ludERlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwo
KQorICAgIHRlc3RTdHJpY3QoKQorICAgIHRlc3RPdmVycmlkZSgpCisgICAgdGVzdE5vbk9iamVj
dCgpCisgICAgdGVzdE5vbk9iamVjdFN0cmljdCgpCisgICAgYXNzZXJ0X3Rocm93cyh0ZXN0VERa
KQorfQorCit0ZXN0RXhjZXB0aW9uVW53aW5kKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391690</attachid>
            <date>2020-02-25 14:43:52 -0800</date>
            <delta_ts>2020-02-25 17:02:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200225144351.patch</filename>
            <type>text/plain</type>
            <size>220768</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YTM4MjY3ZDFiZGNhOGM1NWNhOTkzNWE1ZGY5MzMxZjk5MTE0MTc4Li4yZTA5NWIwNWUwMDk4NDNj
MzBiYTBkOGFiMjU5ZWI1OGYwOGMwODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTMgQEAKKzIwMjAtMDItMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIgYW5kIEZpbGlwIFBpemxvLgorCisgICAgICAg
IFdlIGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9u
bHkuIFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVz
dGluZy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBj
b2RlIGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2Fj
aGVkIGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3Mg
aXMgYSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0g
RGVsZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlz
dHMsIGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25k
aXRpb25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQg
bXVzdCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBU
aGlzIGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0czoKKworICAgICAg
ICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZSAobmV1dHJhbCkKKyAg
ICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAgICAgICAgZGVmaW5pdGVs
eSAzLjkwOTZ4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBv
bHltb3JwaGljICBkZWZpbml0ZWx5IDEuNTIzOXggZmFzdGVyCisgICAgICAgIGRlbGV0ZS1wcm9w
ZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbiAgICAgIChuZXV0cmFsKQorCisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAg
IChKU09iamVjdERlbGV0ZVByb3BlcnR5Rm9yS2V5KToKKyAgICAgICAgKEpTT2JqZWN0RGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJl
c0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpy
ZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZv
ckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZG9l
c0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmg6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZn
L0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlu
ayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmFkZERlbEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVy
OjphZGREZWxCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6
CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERl
bEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklU
RGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdl
bmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1w
IGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlND
Ojp0cnlDYWNoZURlbEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbEJ5KToKKyAgICAgICAg
KEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAg
ICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVu
dGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDYWNoZWFi
bGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0Ns
YXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L0RlbGV0ZVByb3BlcnR5U2xvdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVy
dHlTbG90OjpEZWxldGVQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3Q6OnNldENvbmZpZ3VyYWJsZU1pc3MpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3Q6OnNldE5vbmNvbmZpZ3VyYWJsZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5
U2xvdDo6c2V0SGl0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hl
YWJsZURlbGV0ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6aXNE
ZWxldGVIaXQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzQ29u
ZmlndXJhYmxlRGVsZXRlTWlzcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5
U2xvdDo6aXNOb25jb25maWd1cmFibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9w
ZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVByb3Bl
cnR5U2xvdDo6ZGlzYWJsZUNhY2hpbmcpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNs
b3Q6OmlzQ2FjaGVhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
cHV0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxs
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICog
cnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFkZEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmly
b25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpXYWxrZXI6
OndhbGspOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5
RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmg6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVOZXdQ
cm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXAgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFk
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hlYWRl
ciBjb25zdCk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZN
OjpmaW5pc2hDcmVhdGlvbik6CisKIDIwMjAtMDItMjQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgTExJbnQgc2hvdWxkIGZhc3QgcGF0aCBmb3IganRy
dWUvZmFsc2Ugb24gU3ltYm9scyBhbmQgT2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0MDdhMzhhYjAwN2E1MzZkZWEw
OTRhNDUzYmY4MDM2NDA2ZTE0ZjlmLi5jYzM0NjY3MzU4YmIxMjBlMGJhYWY0NjExZDBkNGRjZDU5
MDA3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAyLTI1ICBKdXN0aW4gTWljaGF1ZCAg
PGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRl
IGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyIGFuZCBGaWxpcCBQ
aXpsby4KKworICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgorICAgICAgICAoV1RGOjpTcGVjdHJ1
bTo6YWRkKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCBjb25zdCk6CisgICAgICAgIChX
VEY6OlNwZWN0cnVtOjpidWlsZExpc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
Y2xlYXIpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6cmVtb3ZlSWYpOgorICAgICAgICAoV1RG
OjpTcGVjdHJ1bTo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6ZW5k
KTogRGVsZXRlZC4KKwogMjAyMC0wMi0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtKU0NdIFNocmluayBTdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMGVl
YzFkMmViMzc2Mjc2ZGI1OGZjMmQxODRmOGQ5ODJhMGYyM2U2Li43OWVmNTE5NzllZTI0YThhOTk3
OTFkMTU2ZTgxOTljNTNjM2EwNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAt
MDItMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAg
ICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBL
ZWl0aCBNaWxsZXIgYW5kIEZpbGlwIFBpemxvLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHJl
bW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJh
eTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6Cisg
ICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuaDoKKwogMjAyMC0wMi0yNCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBsYXRm
b3JtIGF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDQ5MDgxZWM5YjY1MGY4MzdkMzlkY2Y0ZTNk
YjkyODNmYTIxNmMzMy4uMjNmMzI5NWUyZDYzODUxY2RiNjI4ODAxZmU5OTE0YmQ3N2U3NDI0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yNSAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBi
eSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlciBhbmQgRmlsaXAgUGl6
bG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TlBKU09iamVjdDo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTI0ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1l
bnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDhmNTA3YTQ5YjRjZjczODc4ZDMwY2YyNzJmNzQzZWNmZmE3MmU2N2QuLjUw
Yjc4YTNkZGQ1YmY3MjRjMTFlMTU3NzYxNmZkZDMwNzdiMzhlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMi0yNSAgSnVzdGluIE1pY2hhdWQg
IDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0
ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlciBhbmQgRmlsaXAg
UGl6bG8uCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggc29tZSBpbmNsdWRlIG1pc3Rha2VzIGFuZCBtYWtlIHNvbWUg
Y29kaW5nIHN0eWxlIHR3ZWFrcyB0byBXZWJLaXQgYW5kIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMDM0YjM1N2Mw
NzM4ZTM0OTEyNTg4NThkNzA2OTg5ZmVmY2I0ODMzZC4uOTJjYTkyNDc3OTYyYmMwNGM3YThlYjg2
YTFmNDE1ZDJiMTg3ZjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQpOwogCiAgICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCBjZDUxMWJmZDI4NGEw
MTMyNTJhNjQwNWE2NzA3YWFkMTM3YTFiY2NiLi4wMmNlZGM3OTY2YmVjMGE1M2E5YmMwMmE5ZjM3
ODNlNzlmNzMyZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMzczLDcgKzM3Myw3IEBAIGJvb2wgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDE4LDcgKzQx
OCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgpAQCAtNDI2LDcgKzQyNiw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjCiB7
CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKLSAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOworICAg
IHJldHVybiBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4
IGY3ZjlkYWIzZjI4YWRjMGVhYmIyYmRlOGIyNTA2NzcyYWQyNWZmY2UuLjlkYjg1MjgxODEzZTFh
ZDlhNzRhZmUyODI0ZmZjMzViMDNmMDkwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCkBAIC00NzksNyArNDc5LDcgQEAgYm9vbCBKU09iamVjdERlbGV0ZVBy
b3BlcnR5Rm9yS2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1
ZVIKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICBib29sIHJlc3VsdCA9IEpT
Q2VsbDo6ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOwogICAg
IGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJv
cGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBw
cgogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCi0gICAgYm9vbCBy
ZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSk7CisgICAgYm9v
bCByZXN1bHQgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsKICAgICBoYW5kbGVFeGNlcHRpb25JZk5l
ZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFlNDI3YzMwYzUxMTYzZWRkOWYxMDZk
NDJmOTVlMDlkMDJiZTljNC4uNzU1NmU5NTZmYzYzMmY3ZTJiOWQwZTFhZGJmN2NhODFmOGU4ZjA0
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODE1LDYgKzgxNSw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGlt
ZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAogICAgIHJ1
bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKKyAgICBydW50aW1lL0RlbGV0ZVByb3Bl
cnR5U2xvdC5oCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaAogICAgIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmNDJjMmFlOGZlNTkyYmY2ZDY4Mjg1Mzg5
NzZkMGNmNmRhNmRiMWYuLmZiNzQ1NjUxN2Y4Zjc0YzY5ZjFjOWQ1YmRjMjAyYzRmNmU0NDE4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDYgKzExNzgsNyBAQAogCQk3
MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAxMUFG
REJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFGREJFQTIw
MDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0
ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTczRTM3OTk0
MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1
IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1OTNDODk4QkU3MTRBNjRCRTkz
QTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0RCAvKiBXYXNtQ29udGV4
dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAwNTJE
N0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzk3MSw2ICszOTcyLDcgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5
NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzM0QjY1NTQyM0Y0
QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3Ro
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3Ro
Lmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5n
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VMb29w
U3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1
bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODQsNiArNzA4Niw3IEBACiAJ
CQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAogCQkJ
CUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJMTY5
OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovLAor
CQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLywK
IAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAqLywK
IAkJCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggKi8sCiAJ
CQkJMEZFMDUwMEQxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5jcHAg
Ki8sCkBAIC05MjA5LDYgKzkyMTIsNyBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAv
KiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0QzQ1
RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVy
dHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkgLyog
RGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBCQkZEMDBB
OERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3
QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDY2Miw3ICsxMDY2Niw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1dGVz
ID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJCQlE
ZWZhdWx0QnVpbGRTeXN0ZW1UeXBlRm9yV29ya3NwYWNlID0gT3JpZ2luYWw7CiAJCQkJTGFzdFN3
aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGRlZjY3
NTI5MzlhZTU0OWQ4MTliNTZlODQwMzQ0MDg1OTgzYjU5ZmUuLjdjYWI5YzFiMDNiOTUzNmEwZWNl
NzI3ZDZjNTEzNjIyN2FhYzg3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTczLDYgKzczLDggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNz
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0xl
bmd0aDoKQEAgLTEwNiw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjMs
NiArMTI1LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJl
LCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKK3N0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCisgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQodm0pKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAg
ICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVs
b3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdTdHJ1Y3R1
cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisgICAgICAg
IGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsg
fSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2
ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgp
IGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEg
YnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRpZmll
ci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFj
ZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5
IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBjb25zdAog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlv
bjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAg
ICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAg
ICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpu
ZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0
LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoK
ICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgor
ICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAg
ICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAt
NDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9y
PEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBDdXN0b21B
Y2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAg
Y2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoKICAgICBj
YXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBj
YXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5UHJv
dG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJh
bnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50
ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0dXJlKQog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAo
bV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6
OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogCiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVyZS0+cHJl
dmlvdXNJRCh2aXNpdG9yLnZtKCkpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0
YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAg
ICAgdmFsdWVSZWdzLApAQCAtMTg5Niw2ICsxOTMzLDcxIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGNhc2UgRGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxv
Y2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwor
ICAgICAgICBhbGxvY2F0b3IubG9jayhiYXNlR1BSKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2so
c2NyYXRjaEdQUik7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNo
cG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1
cmUoKS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGJh
c2VHUFIgIT0gdmFsdWVSZWdzLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gc2Ny
YXRjaEdQUik7CisgICAgICAgIEFTU0VSVCh2YWx1ZVJlZ3MuZ3ByKCkgIT0gc2NyYXRjaEdQUik7
CisKKyAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVz
ZXJ2ZWRTdGF0ZSA9CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3Rl
cnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFj
ZTo6Tm9FeHRyYVNwYWNlKTsKKworICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAg
ICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5k
ZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNh
Y2hlIHRoaXMgY2FzZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNj
ZWxsLgorICAgICAgICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5LgorICAgICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2Vs
bCk7CisgICAgICAgIC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0
aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3Vs
ZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFz
SW5kZXhpbmdIZWFkZXI7CisKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVl
UmVncyk7CisKKyAgICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZs
eSkgeworICAgICAgICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwg
dmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgYmFzZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJ
bmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAg
ICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAg
ICBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAg
ICBvZmZzZXRJbklubGluZVN0b3JhZ2UobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7
CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3Ms
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNl
dEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisK
KyAgICAgICAgdWludDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
bmV3U3RydWN0dXJlKCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOworCisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1
ZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3Jl
UmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBz
dGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZTogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKGZhbHNlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRl
LnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlz
czogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUp
LCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmluZGV4IGE3Njc3NjdiZmM2MDM0OGRjNzU5M2E2ODRh
M2Q2NDAyZDU2ZjcxNTkuLmEzNDc5ZDE2MDFhNmNkOTc3Nzk0MGFkNDU1YTMzODM3ZTZlM2I3NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUs
NiArODUsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAg
ICAgIExvYWQsCiAgICAgICAgIFRyYW5zaXRpb24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAg
RGVsZXRlTm9uQ29uZmlndXJhYmxlLAorICAgICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBs
YWNlLAogICAgICAgICBNaXNzLAogICAgICAgICBHZXRHZXR0ZXIsCkBAIC0xNDUsOSArMTQ4LDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0
ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxw
dHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0KCksIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gPSBudWxs
cHRyKTsKIAotICAgIC8vIFRoaXMgY3JlYXRlIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBmb3IgdHJh
bnNpdGlvbnMuCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUo
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLAorICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8o
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogCkBAIC0xNTcsNyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQor
ICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAg
ICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRChtX3N0cnVjdHVyZS0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CkBAIC0xNjUsNyAr
MTcwLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpOwogICAgICAgICBy
ZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAxMzI0MDljMGE0
NTEwYmRmYThlY2UzM2I3NDM0NzE2MDJkN2IwZTc5Li5iMTY2YzMwYzE4YTUyM2E3NjI1ZjM5YWY2
Yjc4OTUwNjdhYTVmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc5NSw2ICs3OTUsMTUgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZSkK
ICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmludCgiVHJh
bnNpdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6
CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICAgICAgb3V0LnByaW50KCJE
ZWxldGVOb25Db25maWd1cmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNz
Q2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVNaXNzIik7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlJlcGxhY2U6CiAgICAgICAgIG91dC5w
cmludCgiUmVwbGFjZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA2MTc4NzM3Zjlm
OGE5Y2QwYjZkZGFkNTdmMWNmMTJlZmU0ZmNhNzA1Li45NmExYmFlY2JlNGNiYmI3NmRiZGVkYTgw
NTY1YTJjNTk4NjU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Niw2ICsyNzYsMTIgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CisgICAgICAgIHJl
c2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgorICAgICAgICByZXNldERl
bEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZGRjZTg1ZWMwMjU1NTc2
YzllMzQ1MWY2NDczNmQxMmMzODk0MjgwMy4uYjU3NWJkZDIxNjE5YzJkZmU0ZjE4MmZhZWQ5MGYy
NjhlOWUyNjE5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU1LDcgKzU1LDkgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBl
IDogaW50OF90IHsKICAgICBHZXRCeVZhbCwKICAgICBQdXQsCiAgICAgSW4sCi0gICAgSW5zdGFu
Y2VPZgorICAgIEluc3RhbmNlT2YsCisgICAgRGVsZXRlQnlJRCwKKyAgICBEZWxldGVCeVZhbAog
fTsKIAogZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCmluZGV4IDI2ZTI4MjkzOWU5YWNh
ODg2NWMyMjE3NzNjMmE0MWUwMjgwOTRkZGEuLjQ4YjViODZmYTRiOWU4NjVlYTQ4ZGM5OWE0OTNi
ZDk0OGQwNzRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJTY29wZS5jcHAKQEAgLTEyOSwxNCArMTI5LDE0IEBAIGJvb2wgRGVidWdnZXJTY29wZTo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0o
KSktPnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogfQogCi1ib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nh
c3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsK
ICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2Nv
cGUoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+
dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52
bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCiB2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmY0Y2UxYjFk
YTRiNTc5MGRlOGFkOTg4YTcxZjYwMmNkZjI2MTY3NC4uNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlh
MWEyMTQ5Nzc1ZWRkODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJTY29wZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDdm
ZmEzOGU2NmQyZTA4ZDc0NTk4OWJkNjEyOWRiZWFhMGZhMGQwN2IuLmU5N2RlMTBmNmY0Y2RjMTVi
YWVmYjEwYjdlYzYwNjI4Mjc4MzU5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMTYxOCw2ICsxNjE4LDIyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6IHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRT
cGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBEZWxldGVCeUlkOiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCeUlkRmx1c2g6IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBkb25lIGluIHRoZSBCeXRlQ29kZVBhcnNlciBiYXNlZCBvbiByZWFkaW5nIHRoZQpAQCAtMjUx
OCw4ICsyNTM0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoK
ICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoK
LSAgICAgICAgY2FzZSBEZWxldGVCeUlkOgotICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAg
ICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAgIGNhc2UgSXNFbXB0eToKICAgICAg
ICAgY2FzZSBJc1VuZGVmaW5lZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKaW5kZXggZTNlMjA4ZDJkYTFjZDczOWJmYWNjOGMzNGM1NDk3Y2M1NjJkYjkz
Ni4uMzg3MTU5MTc4OTAzMTIwYTYxMjY0NWU0YTIzNDM1MTNiYTVkYmVmNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTI0Niw2ICsyNDYsOCBA
QCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBsaW5rQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgbGlua0J1ZmZlcik7CisgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9kZWxCeUlkcywgbGlua0J1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNo
ZXMobV9kZWxCeVZhbHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5j
ZU9mcywgbGlua0J1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAppbmRleCA0ODgwODc0YzI4NWFiN2Q0NDdlYjg5M2E2ZThiNGJiZjAxMDczMWQ0Li4y
ZmI2YWQ4ZjYyZjk1YTI2ZTZjZGI4MjZhYTZkMWNkNjdmMTk0N2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xOTEsNyArMTkxLDE3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fcHV0QnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxK
SVRQdXRCeUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQotICAgIAorCisgICAg
dm9pZCBhZGREZWxCeUlkKGNvbnN0IEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhH
ZW5lcmF0b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9kZWxCeUlkcy5hcHBlbmQoSW5s
aW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZERlbEJ5VmFsKGNvbnN0IEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBn
ZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIG1fZGVsQnlW
YWxzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+KGdlbiwg
c2xvd1BhdGgpKTsKKyAgICB9CisKICAgICB2b2lkIGFkZEluc3RhbmNlT2YoY29uc3QgSklUSW5z
dGFuY2VPZkdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCiAgICAg
ewogICAgICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5z
dGFuY2VPZkdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwpAQCAtMzQ4LDYgKzM1OCw4IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3I+LCA0PiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgVmVjdG9yPElubGluZUNhY2hl
V3JhcHBlcjxKSVRHZXRCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlWYWxzOwogICAgIFZlY3Rv
cjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4sIDQ+IG1fcHV0QnlJZHM7
CisgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeUlkR2VuZXJhdG9yPiwgND4g
bV9kZWxCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yPiwgND4gbV9kZWxCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxK
SVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2luQnlJZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hl
V3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiwgND4gbV9pbnN0YW5jZU9mczsKICAgICBW
ZWN0b3I8SlNDYWxsUmVjb3JkLCA0PiBtX2pzQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDE3YmEyYjJmZjM1YTRmYWYwMTFh
MzIyOTczZTc5NjllN2I0N2U1N2EuLjAyZThkMDY4MDc5MGM1OTc2N2E0OTA1Zjc3NmY2ZmYxYjFi
MTE5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0xMTQ1LDQzICsxMTQ1LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluQnlWYWwoTm9kZSogbm9kZSkKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdz
LnBheWxvYWRHUFIoKSwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKLXsKLSAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotCi0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotCi0gICAgdmFsdWUudXNlKCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSkpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNzZWRC
b29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5v
ZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFs
dWVSZWdzKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQotICAgIGJh
c2UudXNlKCk7Ci0gICAga2V5LnVzZSgpOwotCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywga2V5UmVncyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKLQotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGN1cnJlbnRTY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBlY2Zj
OTAzOTBiNjg3NDg2MDhjZTFkMGMwZjA5MjViZTI3ODgzMzQyLi5iMDE5ZDg1ZGY5YzI1YjEzMDg5
OTJhZTY0N2I1ZWM4YTI3NTNiYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQyNzgsNiArNDI3OCw0NSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnKQogewogfQogCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQoreworICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgc3VwcG9ydCBpbmxpbmUgY2FjaGluZyBvbiAzMiBiaXRzLgorICAgIC8v
IFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODIwNz4uCisg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKworICAgIHZhbHVlLnVzZSgpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQo
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAgIEpTVmFs
dWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGtl
eVJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworCisgICAgYmFzZS51c2UoKTsKKyAgICBrZXkudXNlKCk7CisKKyAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVn
cywga2V5UmVncyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSYW5kb20oTm9kZSog
bm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDM3MjhiODUz
ZmFiYWIyOGJmNDQ1NGM5NTA1NGZjZjU3YzQ1YmQ1NGMuLmIwN2NiMjU3NWQxMDYyNzc4ZDRlYjA3
NGRmYzVmYTYxNjYzZGQ5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTQzOSw2ICs1NDM5LDg4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChOb2RlKiBub2RlKQogICAgIGludDMy
UmVzdWx0KHNjcmF0Y2gxR1BSLCBtX2N1cnJlbnROb2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBzcGVjdWxhdGUobm9k
ZSwgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgYXV0
byogcHJvcGVydHkgPSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7Cisg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpTVmFsdWVSZWdzIGJh
c2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAg
aWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCkpCisgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisKKyAgICBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRp
b25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsK
KyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwor
CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3Ms
IHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
KyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJl
Z3MsIHByb3BlcnR5KTsKKworICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAg
dW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBzcGVjdWxh
dGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDIoKSk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQga2V5
KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VS
ZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXku
anNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Cisg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgIGlmIChuZWVkc1R5cGVD
aGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOworICAgIGlmIChuZWVkc1R5cGVDaGVj
ayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CisKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9
IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJ
Zk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgSklURGVsQnlWYWxH
ZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBrZXlSZWdzLCByZXN1bHRH
UFIsIHNjcmF0Y2hHUFIpOworCisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywga2V5
UmVncyk7CisKKyAgICBtX2ppdC5hZGREZWxCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEYXRlR2V0KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNGJlYmVmMjFhYTBkNDEwYWMwOGNhYjEyODM1
MThhOTIyMmU4NDQ4Yi4uODAzNjM5MDdiOWUxNzI4MzI3NWIyN2E2OTUzMzE4ZGM0ZTY3YjU5YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
NTE0NCwyMCArNTE0NCwxNjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGJhc2UsIHN1YnNjcmlwdCwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFj
Y2Vzc29yQXR0cmlidXRlcygpKSwgYWNjZXNzb3IpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPERl
bEJ5S2luZCBraW5kLCB0eXBlbmFtZSBTdWJzY3JpcHRLaW5kPgorICAgIHZvaWQgY29tcGlsZURl
bEJ5KExWYWx1ZSBiYXNlLCBTdWJzY3JpcHRLaW5kIHN1YnNjcmlwdFZhbHVlKQorICAgIHsKKyAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50OworICAgICAgICBpZiBjb25zdGV4cHIg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBt
X291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGJhc2UsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJ
bnQ2NCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShi
YXNlLCBWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoc3Vic2NyaXB0VmFsdWUsIFZhbHVlUmVwOjpTb21l
TGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgIH0KKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworCisgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50
RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQorICAgICAgICAgICAgcHJlcGFyZVBh
dGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworCisgICAgICAgIFN0YXRlKiBzdGF0
ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRl
eChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgICAgICAgICAgQm94PENDYWxsSGVs
cGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQorICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICAgICAg
ICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpOworICAgICAg
ICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKworICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsK
KworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0g
WyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5
S2luZDo6Tm9ybWFsKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7CisgICAgICAg
ICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBzdWJzY3JpcHQgPSBb
Jl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5k
OjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHN1YnNjcmlwdFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXNbMl0u
Z3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2go
MCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzJdLmdwcigpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsm
XSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6
Ok5vcm1hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlk
R2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybkdQUiwgcGFyYW1zLmdwU2NyYXRjaCgw
KSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNj
cmlwdCwgcmV0dXJuR1BSLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CisKKyAgICAgICAgICAgICAgICBwYXJhbXMuYWRk
TGF0ZVBhdGgoCisgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxp
bmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBz
bG93UGF0aENhbGwpOworCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2so
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUo
bGlua0J1ZmZlciwgbGlua0J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0
Qm9vbGVhbihtX291dC5ub3RaZXJvNjQocGF0Y2hwb2ludCkpOworICAgIH0KKwogICAgIHZvaWQg
Y29tcGlsZURlbGV0ZUJ5SWQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKV07Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJ
bnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlJZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFz
ZSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpKTsKKyAgICAgICAgTFZhbHVlIGJhc2U7CisKKyAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgICAgIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFVudHlwZWRV
c2U6IHsKKyAgICAgICAgICAgIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtpbmQ6
Ok5vcm1hbD4oYmFzZSwgbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51
bWJlcigpXSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlWYWwoKQogICAgIHsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5u
b3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeVZhbCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0KSkpOworICAgICAgICBMVmFsdWUgYmFzZTsK
KyAgICAgICAgTFZhbHVlIHN1YnNjcmlwdDsKKworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAg
YmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgYmFzZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKSB7CisgICAgICAg
IGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAgc3Vic2NyaXB0ID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Ug
a2luZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVE
ZWxCeTxEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsPihiYXNlLCBzdWJzY3JpcHQpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVBcnJheVB1c2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3Rh
dHMuaAppbmRleCA1ZDMwOTI4ZjRhODViNGFkZTQ0NGM0M2Y1YWRkZjIzMTdmNDI2NWI3Li45MDQw
ZGYzODIwNzY0ZWRmOGQ1MTYxMWY4NjBmYzRkNDI2NTZjMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0lDU3RhdHMuaApAQCAtNzAsNyArNzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNy
byhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1
bXApIFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCi0gICAgbWFjcm8oSW5CeUlkU2Vs
ZlBhdGNoKQorICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkgXAorICAgIG1hY3JvKERlbEJ5UmVw
bGFjZVdpdGhKdW1wKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpCiAKIGNs
YXNzIElDRXZlbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDA5
MWM0Zjc4MmEwNzg0ZmM0NTI1ZWQyMDc5NjljZDFiNzg3NDRlODYuLmM2ZTYxYjg5YmY5YTFhMTk1
YzNlODM4NjRjMWNhMTc4NDA4YTViMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTUwMCw2ICs1MDAsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAg
IG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggPSAwOwogICAgIG1fcHV0QnlJZEluZGV4ID0gMDsKICAg
ICBtX2luQnlJZEluZGV4ID0gMDsKKyAgICBtX2RlbEJ5VmFsSW5kZXggPSAwOworICAgIG1fZGVs
QnlJZEluZGV4ID0gMDsKICAgICBtX2luc3RhbmNlT2ZJbmRleCA9IDA7CiAgICAgbV9ieVZhbElu
c3RydWN0aW9uSW5kZXggPSAwOwogICAgIG1fY2FsbExpbmtJbmZvSW5kZXggPSAwOwpAQCAtNTgw
LDYgKzU4Miw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQor
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3N1YikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCkBAIC04NzUs
NiArODc5LDggQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2dldEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZ2V0QnlJZHNXaXRoVGhpcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5s
aW5lQ2FjaGVzKG1fcHV0QnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNh
Y2hlcyhtX2RlbEJ5SWRzLCBwYXRjaEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9kZWxCeVZhbHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2lu
QnlJZHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNl
T2ZzLCBwYXRjaEJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDdiNDQwNzQ5
NjMzMzZmY2I4OTQxZWJkMDViNTk3MzEyOWE5ZTg2NTUuLjY3MTY2NjFkZjRmYWNlYTVlZmVkNWY1
MTA4MWYwNTliNmQyNTNkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTAwLDcgKzUw
MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaWRlbnRpdHlfd2l0
aF9wcm9maWxlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1
Zyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
QEAgLTkxMyw2ICs5MTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAgICAgICBWZWN0
b3I8SklUUHV0QnlJZEdlbmVyYXRvcj4gbV9wdXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVElu
QnlJZEdlbmVyYXRvcj4gbV9pbkJ5SWRzOworICAgICAgICBWZWN0b3I8SklURGVsQnlJZEdlbmVy
YXRvcj4gbV9kZWxCeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBt
X2RlbEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5z
dGFuY2VPZnM7CiAgICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZhbENv
bXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1fY2Fs
bENvbXBpbGF0aW9uSW5mbzsKQEAgLTkzNCw2ICs5MzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdW5zaWduZWQgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCB7IFVJTlRfTUFYIH07CiAgICAg
ICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWdu
ZWQgbV9pbkJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlW
YWxJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlJZEluZGV4IHsg
VUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXggeyBVSU5UX01B
WCB9OwogICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAppbmRleCA5MjBiNzIwM2UzY2Y0YmYwNmVlZDQ1NzNhMzljYjU2YmNjYTY1ZDVhLi5m
NDExMDIxNzY0ZDk4OTY2MjIzZmUxODIwYTJmMzgzOWFjM2U3YjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAt
MTYyLDYgKzE2Miw2OCBAQCBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0T3B0aW1pemU7CiB9CiAKK0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9z
dHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CisgICAgQVNTRVJUKGJhc2Uu
cGF5bG9hZEdQUigpICE9IHJlc3VsdCk7CisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2Uu
cGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0
eS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CisjaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdH
UFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
bV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IHByb3BlcnR5LnRhZ0dQUigpOworI2VuZGlm
CisgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKK30KKwordm9p
ZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYg
aml0KQoreworICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVtcCA9
IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisKK3Zv
aWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQ
YXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAu
bV9qdW1wLmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0UGF0aCwg
c2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3Rh
cnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVn
cyBiYXNlLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJs
b2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1
c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9
IHRydWU7CisgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdCk7CisgICAgbV9z
dHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJl
Z3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BS
ID0gcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRh
Z0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BS
UmVnOworI2VuZGlmCisgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNo
KTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xv
d1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc2xv
d1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7Cit9CisKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJh
dG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAog
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGJmYjkwMjE2YjI5YzI3ZmZkMGVkOGQ3ZjBmNTg3
ZTA4ZmU2ZTczMTYuLjI2ZTcwMGZiYjdhZDE4M2JlMWFjYmE3M2YzN2Y2ZmI0MmZlZmNkMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKQEAgLTE0Miw2ICsxNDIsNTYgQEAgcHJpdmF0ZToKICAgICBQdXRLaW5kIG1fcHV0S2lu
ZDsKIH07CiAKK2NsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7
CitwdWJsaWM6CisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5
VmFsR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3Jh
dGNoKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAg
ICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmlu
YWxpemUoCisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZl
ciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0
YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwor
fTsKKworY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVi
bGljOgorICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5l
cmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1Bh
dGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1f
anVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVmZmVyJiBm
YXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CisKKyAg
ICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0ZToKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRv
ciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5l
cmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGUzNjI2NzMyNWM3NGFlMjJmODYxOGVhOWUyYWQwMDJlNDhkYzYzMzQuLjdiZGYxZjcz
MmJmNGUwNWQ5Yjg1Njk2ZWY0Njg0N2YzYjU2MTA3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjE0Miw3ICsyMTQyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVj
dC0+aGFzUHJvcGVydHlHZW5lcmljKGdsb2JhbE9iamVjdCwgaW5kZXgsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KICAgICAKLXN0YXRpYyBi
b29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
c3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFs
dWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxNTAsMzEgKzIxNTAsNTEgQEAgc3RhdGljIGJv
b2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgVk0mIHYKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgaWYgKCFiYXNlT2JqKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBjb3VsZERl
bGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpKTsKKyAgICBib29sIGNv
dWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCksIHNsb3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5
RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotCi1FbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZt
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpKSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgp
OworCisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCB1aWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7
CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgdWlkKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
KyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRj
aERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwotICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CiB9CiAK
LXN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkpCitz
dGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFs
dWUgYmFzZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0yMTkwLDcgKzIyMTAsNyBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0m
CiAgICAgZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkgPSBrZXkudG9Qcm9wZXJ0
eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKQEAgLTIxOTgsMjAgKzIyMTgsNDIg
QEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCAgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtleSkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVC
eVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSkpKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxs
KCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09i
amVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwo
c3Vic2NyaXB0KSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1
YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGlmIChzdWJzY3Jp
cHQuaXNTeW1ib2woKSB8fCAhcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAg
ICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBiYXNlVmFs
dWUuc3RydWN0dXJlT3JOdWxsKCkpKQorICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxCeShnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRLZXkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1
cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkp
OwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29k
ZWRKU1ZhbHVlIG9iamVjdFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAppbmRleCA2MjEwYzVhMDczNDE5NjgzZDYwZWE4YzQ4Y2Q0M2VlZmY4MmEzMDBjLi42
MDBmY2EyOWRjMjAzODVkYzUwMjIyODAyNTQxMTJjYWMzMWQ2ODQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJn
ZXQpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGFyZ2V0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CitzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGws
IEVuY29kZWRKU1ZhbHVlIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5U
RVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUyZjcxM2U4YWEwYWZiNWU4
MDVjN2NmM2YxZDM4ODM3MWMyZjYuLjJiYTBmYTY4NDhiY2U4MjlhY2Q2NDE5MDVmMDVmNGJkNTRk
Y2JlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC0zODcsOSArMzg3LDM5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2U7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBn
ZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QwLCByZWdUMik7
CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJv
b2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BE
ZWxCeUlkPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkuaW1wbCgpOworCisgICAgSklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1tt
X2RlbEJ5SWRJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIo
cHJvcGVydHkpLmltcGwoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCB1aWQpOworICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBK
U1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1Zh
bHVlUmVncyhyZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zOTgsOSArNDI4LDQyIEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMSwgYmFzZSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDAp
OworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOworICAg
IEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMCwgcmVnVDIpOworICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRj
OGJkYWVlZjE0Yy4uYjY2OWRkOGI3YWQyNmQzZjc3ZDk2ODZkZTYwODM0MzRmMzZkYmM1MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC0xMjMsNyArMTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9w
cm9wZXJ0eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50
aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSku
aW1wbCgpKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEzMyw5ICsxMzUsMTQgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJh
c2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMs
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKSB7IH0KK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9CisKIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldEJ5VmFsPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMDg2
OTZiMWYzYTQ4ZmNhYjY3ZGZkZjFkMDgxOTI1ZTM0ZDkxYjc2NS4uN2JmMTEzZWU4MTE3YmRmYjg4
OTYxZTJhMWZkOTQxMTI3YTNhNGE4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
UHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xk
U3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVB
Y2Nlc3NDaGFpbikpOworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVh
dGVUcmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwg
bmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3Vz
dG9tKCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xv
dC5pc0NhY2hlYWJsZUN1c3RvbSgpKSB7CkBAIC03MzQsNiArNzM0LDczIEBAIHZvaWQgcmVwYXRj
aFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRG
dW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZURlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisKKyAg
ICB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2ssIGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKworICAgICAgICBpZiAoZm9yY2VJQ0Zh
aWx1cmUoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwor
CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUpOworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5p
c09iamVjdCgpIHx8ICFvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIGlmICghc2xv
dC5pc0NhY2hlYWJsZURlbGV0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisKKyAgICAg
ICAgaWYgKHNsb3QuaXNEZWxldGVIaXQoKSkgeworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQg
bmV3T2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNl
dCk7CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gUmV0cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNT
RVJUKG5ld09mZnNldCA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIEFTU0VS
VChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQodm0pID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkp
OworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQpKTsKKyAgICAgICAgICAgIG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywgQ2FjaGVhYmxlSWRl
bnRpZmllcihwcm9wZXJ0eU5hbWUpLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0
dXJlKTsKKyAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewor
ICAgICAgICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKKyAgICAgICAgICAgICAg
ICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6
OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUp
LCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwg
Y29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzLCBDYWNoZWFibGVJZGVudGlmaWVyKHBy
b3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CisKKyAgICAg
ICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVs
QnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIHByb3BlcnR5TmFt
ZSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OworICAgICAgICB9CisgICAgfQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZO
ZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVz
dWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsK
K30KKwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNl
VmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7Cisg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYg
KHRyeUNhY2hlRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwg
b2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNh
Y2hlKSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMs
IGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgcHJvcGVydHlO
YW1lKSk7CisgICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CisgICAg
fQorfQorCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwKICAgICBib29sIHdhc0ZvdW5kLCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKQEAgLTEz
OTEsNiArMTQ1OCwxNSBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAor
dm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6
Tm9ybWFsKQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsK
KyAgICBlbHNlCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXpl
KTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZv
LnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxl
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggNmYwZjI2
NDExZWNkZWExOTJiNzA2MjEwZThhOTk0NGJiNGY5ZmUzOS4uYzFkOTk1OWFkYWZkMzY1NzYyZTg5
MTc5YWIzYzBlZWQ2NmU1ODdkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAg
LTQxLDkgKzQxLDE1IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBEaXJlY3QKIH07CiAK
K2VudW0gY2xhc3MgRGVsQnlLaW5kIHsKKyAgICBOb3JtYWwsCisgICAgTm9ybWFsQnlWYWwKK307
CisKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIENhY2hl
YWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwg
R2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJv
cGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKK3ZvaWQgcmVwYXRjaERl
bEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNW
YWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIFN0cnVjdHVyZVN0dWJJbmZvJiwg
RGVsQnlLaW5kKTsKIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9m
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90
b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtGb3Io
Vk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2Fs
bGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpAQCAtNTMsNiArNTks
NyBAQCB2b2lkIHVubGlua0ZvcihWTSYsIENhbGxMaW5rSW5mbyYpOwogdm9pZCBsaW5rUG9seW1v
cnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ2Fs
bFZhcmlhbnQpOwogdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZv
JiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJik7Cit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlvbkNhbGw8SlNJ
bnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVu
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKaW5kZXggYjkxMWVlMjc4MjYyNjZjNzNmNzZlMDk1NTQyYWRjNjU5MjUwOGM2ZS4uMmJmZmMz
ODE2M2ZlMzFiZTk0MWJlZDZhNWZiNTZkMjk4YmViNjIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC05MjUsNyArOTI1LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wRGVsQnlJZD4oKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwor
ICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOwpAQCAt
MTEwOCw3ICsxMTA4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92
YWwpCiAgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhdXRvIHByb3Bl
cnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5KTsKKyAgICAgICAgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5
KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOwogICAgIH0KICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVj
ZjZmZDA4ZmZkMmJiODhiOWQ1ODdiYWVkMGZmNi4uMTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2Iw
YzE1ZjI2NTg5NzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlu
bGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFi
bGVJZGVudGlmaWVyKEpTQ2VsbCogaWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFi
bGVJZGVudGlmaWVyQ2VsbChpZGVudGlmaWVyKSk7CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmll
cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNz
SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXgg
ZmU2YzZiN2Q4NGM0N2VkZWUxMWFhYzExZjY0ODRhNzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNj
YmJkMjhkODAzMWRhOGExN2VlMDUzNzIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAg
ICB1c2luZyBQdXRCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUlu
ZGV4KTsKIAotICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRl
UHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1
bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShkZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2lu
ZyBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggYzRmNzRjMGMzOTA4ODkwMTQ4NWVlM2Qy
YjFkNWY1YWFhYzE5ZDg3ZC4uOGRkZDk4YTFiZmIwZmVjMTVhN2Q3MzJhY2MzYzJjZWY4NWQwNDBi
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmEKICAgICBy
ZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBz
bG90KTsKIH0KIAotYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQor
Ym9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0
PENsb25lZEFyZ3VtZW50cyo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTIyOSw3ICsyMjksNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8
fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhp
c09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAg
ICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgaWRlbnQpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKIH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAppbmRleCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQw
YmEwY2FkMTU3NjA1ZmY1Li4wMGM1MzQ3NTYwNWE3M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
aApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lh
bHNNYXRlcmlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJj
M2EyNzE5YzJhOTM1M2U3ZDc1MjFhODc5YmQxMmQ3NDAwNjkuLjQ0ZDhmYjRiNDIyYTkyZDAzYjgx
YWIwYWYxOGQ0ZjY1YjFlOGM4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtOTg1LDcgKzk4NSw3IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gSlNDZWxsOjpkZWxl
dGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKICAgICB9CiAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZmNmI0ODAwZWY1
Nzg1NjFjYWVkYzlkZGJiYzgyZjI1MzJlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApAQCAtMCwwICsxLDgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNs
b3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Qg
eworcHVibGljOgorICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hlYWJsZSwgRGVsZXRl
SGl0LCBDb25maWd1cmFibGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUgfTsKKworICAgIERl
bGV0ZVByb3BlcnR5U2xvdCgpCisgICAgICAgIDogbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKKyAg
ICAgICAgLCBtX2NhY2hlYWJpbGl0eShDYWNoaW5nQWxsb3dlZCkKKyAgICAgICAgLCBtX3R5cGUo
VW5jYWNoZWFibGUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlTWlz
cygpCisgICAgeworICAgICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxldGVNaXNzOworICAg
IH0KKworICAgIHZvaWQgc2V0Tm9uY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAgICAgIG1fdHlw
ZSA9IE5vbmNvbmZpZ3VyYWJsZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhpdChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCisgICAgeworICAgICAgICBtX3R5cGUgPSBEZWxldGVIaXQ7CisgICAgICAg
IG1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKworICAgIGJvb2wgaXNDYWNoZWFibGVEZWxldGUo
KSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBVbmNhY2hlYWJsZTsg
fQorICAgIGJvb2wgaXNEZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRGVsZXRl
SGl0OyB9CisgICAgYm9vbCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsgfQorICAgIGJvb2wgaXNOb25jb25m
aWd1cmFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmlndXJhYmxlOyB9CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fb2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQorICAg
IHsKKyAgICAgICAgbV9jYWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dlZDsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVh
YmlsaXR5ID09IENhY2hpbmdBbGxvd2VkOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKKyAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OworICAgIFR5cGUgbV90eXBl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGYxODIxZDU1NmEzZDQwNDQ5MzY3
NWVhZTI1ZmEyZTQ2NjczZWM0M2EuLjY4NWM3YWNiYzExYzYyZDIzMzc3ZDMyYzRkZTlhMjBiNjU4
NzhhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8RXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpAQCAtOTUsNyArOTUsNyBAQCBib29sIEVy
cm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+c3RhY2tUcmFjZUxpbWl0KQogICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDkzZDUyNzE0
ODZmNjZmZGU3NTNlNDlhNDAxNmYxNjgzOGU5NzU3MjEuLjlhNWE0NjMyMWIzZGJiNzY0YzJhMWI1
MjFkOTI2OGY4ZDE0MzUzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAKaW5kZXggZmQ0OGJiZjM0YzMwNDMwZDJlNzBkZTU3NDk4ZTliNTFlNmFjMjQ0ZC4uMWQ1
MGNkMTc0ZmM0N2Q5MjIxNzE4OGUzMjVmZjU3YWU4ZDE1YjgxYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5NywxMiArMjk3LDEy
IEBAIGJvb2wgRXJyb3JJbnN0YW5jZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29s
IEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JJ
bnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9ySW5z
dGFuY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNlbGwpOwogICAgIHRo
aXNPYmplY3QtPm1hdGVyaWFsaXplRXJyb3JJbmZvSWZOZWVkZWQodm0sIHByb3BlcnR5TmFtZSk7
Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aAppbmRleCBmMWZhYzU5NjgyZDllMDI2NTA4Y2I0ZmY4YzliMjY3YjRlZTc2ZTg3Li40MDA2MDhk
MDhhODM0Y2QzMWU2MTJlNzNhYjUzMWNiMGEzY2ExMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCBjb21wdXRlRXJy
b3JJbmZvKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHMuaAppbmRleCBjZTEwZjdmZTQ4NzNlNGE0N2JlMTQxZTI1NTY5YWQ2NDhhZmY5
ZDI4Li40NzEyMTY3MzAzNjQ4MjhmZTI3NzBlMjM0ODY5YWNlNzA5MDhkMWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC01MCw3
ICs1MCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMxYmI0MzBmNmQ1OGIx
ZDViMTE1ZGE1MTNjNWJjYzBiZjUzLi5hNWE5ZWNiMzIyYTIwZGE4ZmUyNDMzZmZkNTQ3YTc4YWZj
NjAyY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAgYm9vbCBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm8KICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpw
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CkBAIC0xNTgsNyAr
MTYwLDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4KLWJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQp
Citib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxU
eXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDcg
KzE3Nyw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbmRleCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5oCmluZGV4IDAzNDg3ZjYxZTBmMmZjNzUxYmE3MDNiNzBjYTM2ZDAyMjIxNjM0ZGUu
LjYwMWYxZTQ5ZjE1Y2Q1MDFhMGUwYTc1ZWUyODUwNmYzMmIwZGIzYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xMjcsNyArMTI3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jikg
eyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0
ZToKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA2ZDA3NTkxNzExZWVkYmMyOGUwZTRkYTc4
NDk4MjJhYjhkNjZmNWQxLi5iY2UzNjU1YTMxOTJlYTI5MGZlN2YwNDA4MjRhMzg4NmY2YjA0ODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzA2LDcg
KzMwNiw3IEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwpA
QCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzRm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9p
ZCogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAzMTE2NWI1
ZmY0OTI1NGNjMWE2YzQ3OTAyYjc5MTBhYzRhN2Q5YmZmLi5jZGMzOWI1MTJkN2VlM2ExNWNmMWFl
YzJlMGEyZDkzZDlhYWFkMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMzZDFiYjYwZjhiNTMzYjE4
NjA1OGVlYWQ4MWI3NS4uNTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFiMWVkYzRhNzQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDAsNiAr
NDAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKK2NsYXNz
IERlbGV0ZVByb3BlcnR5U2xvdDsKIGNsYXNzIEpTQmlnSW50OwogY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgSlNDZWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5k
ZXggMjcxMzUyYjIxNzQ3MDM1NmRmNDAzZmRkOWNkZTYwZGVmODg4MTYwNy4uMjRlZDY1MjMzNzky
MzRlYjBjMThiMDZmMDI2NDE3OTFkOGM4MDY0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCkBAIC0xMjYsMTAgKzEyNiwxNyBAQCBib29sIEpTQ2VsbDo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGlkZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwogfQogCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKK30KKwogYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IGlkZW50aWZpZXIpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVj
dChnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9i
YWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXIpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNsb3QpOwogfQogCiBib29s
IEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggZDU2NTZmOGJmZGZmNjMyOTkyYWMxZGE0NTFlMzVjMWE1
NDhkNDY3ZS4uMTA2NzQ5ZGUzY2UxNWY0M2UyMzlkYTFiZmUzMzJjNzIzMTFhYWRmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE4MSw3ICsxODEsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAg
Ym9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RhdGljIEpTVmFsdWUgdG9U
aGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCAxNDZhOTEzMmQ0NzM1MjQyYzEw
NmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJiMDllMzdmOGE0NzQzMTliZjc2YzMy
ZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNw
cApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5lT3duUHJvcGVydHko
CiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEpTRGF0
YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTRGF0YVZpZXc6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4MmE2N2U5N2VmYmI0ZjMyZjFiYzEy
ZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVlNmNjN2I5ZjcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC03Miw3ICs3Miw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZWU4NWVlMDY0NmM5ZGRhZjllNmU5N2FmMTdiOWY5YzAz
NzdkMThlMC4uOGI4ZDUwNjUzNmU1M2Y5MjhiYzM2OWQyZWJmZDVhNjMwYjA4NmI4NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTU4Niw3ICs1
ODYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTYxNyw3
ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7
CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGFk
ZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZhY2QuLjE4YWI0NzU0M2ZkNzgyOTc4
YWZlYTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZjA4Zjg1MjQ2OWJlZmQ2
YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2NWNlMWMzNTY1NTBlY2Q1OGI3N2Zl
ZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUsNyArMzA1LDcgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBw
dXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAwY2FmYmQyNzZjZjc0ZDBj
ODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi4xYTBjZjU5ZmZmZDNjMGEzYTNkZjI2NTNlYTEzM2E4
NThlNDYwMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNDM4LDcgKzQzOCw3
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlZmluZU93blByb3Bl
cnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAg
IEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTQ4NCw3
ICs0ODQsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1l
KSk7CisgICAgcmV0dXJuIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1NjZjNWQ0YTE4YTkyODcx
ZjdlLi5mZTIxN2ZiMGNhYjUzMGZlMzBhYTliMTk4ZTNmNzllMjA1YWU0ZDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMzE0
LDcgKzEzMTQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgbWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcAppbmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45NzRi
OTJiNTRlMWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0x
MjcsMTMgKzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0aGlz
T2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0u
cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5k
ZXggZDAxM2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMyZGQ0
OTNmZjdhNGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJF
X0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAwYjcy
OWY3YzczZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9u
bWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpTTW9k
dWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAg
ICBpZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9u
OjpUeXBlOjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7
CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5k
ZXggZGFlYWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2ZiOThi
YjJhODJkYWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3Ry
dWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXgg
MmJkYjEzMDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNhNjVh
ZDExOTAyZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5LDEy
ICsxOTksMTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2Ut
ZXhvdGljLW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAgIGlm
IChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4
cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4
IDhlZWY2MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdhMTNl
N2VmYmZjZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNmOWNi
MDFlMmJmMzIxYjA2ZWQ0MTk2YzkuLjk5YjNkMDg4ZGI0YzllZjJjM2ZmMDU4NmRmN2Q2YmRkMzFm
ZjRhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CkBAIC03NjAsNyArNzYwLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpT
VmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUg
PSBjYWxsUmV2aXZlcihvYmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFs
dWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVj
dCwgbV9nbG9iYWxPYmplY3QsIHByb3ApOworICAgICAgICAgICAgICAgICAgICBKU0NlbGw6OmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3ApOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1
dChvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9wLCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDNhNTEyMWQ2OWRmYjRmYjJm
YjlmODg1Y2E3ZmYzZmU1NWMwNGRkODAuLjQ1ZjQyMzZhMWJiNzc0ZWJiNTIzMDc3MjZlN2VmZGZl
ODRiYWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
QEAgLTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAKIC8vIEVD
TUEgOC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xOTk5LDgg
KzE5OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJvcGVydHlJ
c1ByZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAgICAgaWYg
KGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQ
cm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJs
ZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZp
cmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
CiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10oY29uc3QgR0NTYWZlQ29uY3VycmVudEpTQ2Vs
bExvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVk
V2F0Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5
ICYmICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5k
ZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNl
dCk7CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1
cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJ
RCgpLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0Owog
ICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRP
ZmZzZXQpOwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAog
ICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9IGVs
c2UKKyAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTIwMzEsNyArMjAzNiw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAKICAg
ICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpKSk7CisgICAgICAgIHJldHVybiBKU0NlbGw6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSkp
OwogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdNb2RlKCkpIHsKICAgICBj
YXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAgLTM2MjUsNyArMzYzMCw3IEBAIGJvb2wg
dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkg
Y2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAo
ZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50
LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRv
cihnbG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlw
dG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAg
ICAgIH0KQEAgLTM2NDEsNyArMzY0Niw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAg
ICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0
LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVz
T3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM2NjUsNyAr
MzY3MCw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFs
T2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRy
aWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM3
MTgsNyArMzcyMyw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKIAogICAgIEdldHRlclNldHRl
ciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
Z2V0dGVyLCBzZXR0ZXIpOwogCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIEpTQ2VsbDo6
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIHVuc2lnbmVkIGF0dHJzID0g
ZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7CiAgICAgb2Jq
ZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
U2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2NTExNjBiZTBiMDE3ODcwY2U5MDk2
YmY5MmE1NWRjZjBlNmNkYmJlLi42YmRhOWUxZTA3ZTc5OGZiOTIzNDgzNzcyZjA3YjdmNmNkYzAx
NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRl
ICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5k
ZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC02MjMsNyArNjI0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRleCA5YzQ3OTM0ZTRhM2Q5MTk5ZmE5
ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEyZDIyMTkxMjdjZDk5YjMwMjA5MzA4ODcy
MTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApAQCAt
OTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09i
amVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlZmluZU93
blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTUHJveHk6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRh
cmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgp
KS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Byb3h5Ojppc0V4dGVuc2libGUoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFlNjY4ZDI1OTBkOWI5N2M4ZjRiYmEyYmZm
YjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5NGMwYjI1ODk1Nzk4ZmM1ZjllZjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBAIC05Myw3ICs5Myw3IEBA
IHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJv
cGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDYzMGUxYjc4YmIyMDZlN2Fm
NjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMxNTBlOTZhZWNkNTM3NDczMWZkYThkOWE3
YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgdm9pZCBKU1N5bWJvbFRh
YmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7CiB9CiAK
LWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhp
c09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNkZWQ5OGIzMzVkZjczNmIyMS4uYjU2OGU4
ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJl
dHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTeW1ib2xUYWJsZU9i
amVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4MTU5OGZmZWYyYTVlMTRhODBmZDRlNTRk
YzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTllNWY5MGM2NjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC02ODUsMTIg
KzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFBy
b3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9i
amVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHREZWxldGUgPSBbJl0gKCkgLT4g
Ym9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzT2JqZWN0LT50YXJnZXQoKTsK
LSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+
ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0
ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1EZWxldGUoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDE3Y2EyOWZiMGEzZmRkYmE3MWViNjgy
NDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgxOGE0Njc0YTUyMmJmNjBhMmNhMDllYWMx
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNhMDljMDA0ODFhNTE1MzgyNy4uMWNlMWI0
YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmViYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03MSwxMiArNzEsMTIgQEAgYm9v
bCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJl
Z0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBSZWdFeHBPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAocHJvcGVydHlO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2MzcxOTFhODlmMGI3Yzk2YzVmYmI3MTQuLjg1
N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNlMGIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0g
KG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgfCBsYXN0SW5kZXhJc05vdFdy
aXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAppbmRleCA1MTU3NTI3NjVlY2Iw
MmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRiYzY3YzU3ZjgxNTYxZmE3OGQxOTRlZmFm
MDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIFN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBTdHJp
Y3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2IxMDk2YjI2ZDE4NzA3NGNiZjE3ZWI4M2My
OS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBmZGJiN2ExMDA3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNjb3BlOwogICAgIH0KIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NzdiOWNhZmIzZmEw
MDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZkZDkyNzNiNzUwNThhNDdmNzY5YTNmY2Y4
Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRp
b24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNl
bGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByCiAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
IChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4
LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2IzYTNlNGRhMzUyZjIyNzg2NTIzLi42OWYy
NmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA2NGM4MDBiNjE5
YTQ5Nzk1YWViMGUxNDM1ZDNiYjdmNDQ3MTA5ZWI3Li44MzJjZTQ0YWJlNGNhYWE2Yjc0MmZmOWFi
MGVjNjAwYzc0NzY0OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKQEAgLTUzOSw4ICs1MzksNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3
UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBk
ZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAobmV3U3RydWN0dXJlKQogICAg
ICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01NDgsMTYgKzU0NywxMyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQs
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKikKK1N0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJ
bXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewotICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hl
YWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAK
LSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IGZh
bHNlOworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgaWYgKFN0cnVjdHVyZSogZXhp
c3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVy
dHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkgewogICAgICAgICB2YWxpZGF0
ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdU
cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdU
cmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01NjcsMTEgKzU2MywzMSBAQCBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBudWxscHRyOwogfQogCitTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsK
KyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBpbnZhbGlkT2Zmc2V0
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0
dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBp
bnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDb25jdXJyZW50SlND
ZWxsTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPmNlbGxMb2NrKCkpOworICAgIHJldHVybiByZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQorCiBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQs
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsK
KyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFt
ZS51aWQoKSkgIT0gaW52YWxpZE9mZnNldCk7CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0g
MDsKICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9
IHNfbWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZpb3VzSUQodm0pKQpAQCAtMTIwMyw3
ICsxMjE5LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hh
cGUoSlNWYWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9seVByb3QKIAogdm9pZCBTdHJ1Y3R1cmU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0
aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOworICAgIG91dC5wcmlu
dChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGlkKCkpKSwgIiwgIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwogICAgIAog
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKaW5kZXggNTM4NDRiOTFhNmVlOWYxNDZjZjg0NGRkMDA1NzU4ZTZmY2M3
NDYzNS4uMzIwYTQ3YTdiODM0NTlhMmI4ZDk3YjIxZDQ0NTdhMTgxYWEyOGVlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNp
bmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xOTIsNyAr
MTkzLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
ID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90
b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0
cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNp
dGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiA9IG51bGxwdHIpOwpAQCAtNTMwLDYgKzUzMiw3IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAg
ICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsK
ICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QpOwogCkBAIC04MTEsNiArODE0LDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChT
dHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
cm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3
aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxl
LCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVz
IHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRl
eCAyM2Q3OGZjYjkxNDJmOTUwMjdiZDcyN2Y4NWM0YmQxN2YwYzkxNzMyLi4zZGMxN2I3MzM1OTk0
ZTgzZTExMTAyZDBlOWVjYWIwZDZlNDk4MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNTIsMTAgKzI1MiwyMyBAQCBpbmxp
bmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkg
Y29uc3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZSht
X2Jsb2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVy
biBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3Rl
ZnVsVHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhp
bmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxs
ID0gZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlU
eXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IG11c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGI4NDZiYTU5YTUx
M2Y4YWM0NWNjZDYwYjIyNzI1MDhlMWJiNzJhOC4uOTEyMWJjNjYwODk0ZDI5NmZiZmE0ZTBkMjhj
NzhhMTg2YWZhNWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFT
SCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KQEAgLTI4NTAsNiArMjg1MCwxNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkdldENvbmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdGlvbi0+YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFs
KHZtKSkpOworfQorCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
ICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMjk4Myw2ICsyOTkyLDgg
QEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rp
b24odm0sICJnZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCIsIEpTRG9sbGFyVk1IZWxwZXI6OmZ1
bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZt
LCAiZ2V0Q29uY3VycmVudGx5IiwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHksIDIpOwogCisgICAg
YWRkRnVuY3Rpb24odm0sICJoYXNPd25MZW5ndGhQcm9wZXJ0eSIsIGZ1bmN0aW9uSGFzT3duTGVu
Z3RoUHJvcGVydHksIDEpOworCiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0
Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVF
ZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBqc051bGwoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
cGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4
OTEwOGE4ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJi
MjE5NGFhYzcwZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAg
IHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJU
eXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYg
KzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkp
IGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09
IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1
YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUo
KTsgfQogICAgIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsg
fQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3Rf
aXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAg
LTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJv
bSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+
IGJ1aWxkTGlzdCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9p
dGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAg
ICAgbGlzdC5hcHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAt
MTA2LDE3ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIo
KQorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5j
bGVhcigpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAg
IHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExv
Y2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAo
dHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIp
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwg
cGFpci52YWx1ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAg
ICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFw
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCmluZGV4IDRlMDA5ZmVkNmJkMGUzMTE1N2M2NjQwOWM3YjM1ZmNjN2VmZjIzMjMuLmEz
MGNlZDE5ZjhmYzNlMmU2ZDNjNDQxNWI0YTc3OWE1MGM5MGM4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxMiwxMyArMzEy
LDEzIEBAIGJvb2wgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRl
eCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRo
cm93KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cg
ZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxZWYwNmMyNmVlMjUyZGU2NjhjMWRlZGU5MWM1
ZGRmNmEwZGRmZGU1Li44NGI5YTEzZTE5ZWExODlkZjMwNzQ3NjA2NWRkMzczZTUxZTRmNjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApA
QCAtMTYzLDEzICsxNjMsMTMgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHUKICAgICByZXR1cm4g
SlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTG9j
YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9u
bHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlF
cnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGUyZWVkZmQ1
YjBjNWFhNzE4NzBkYTc2NTQzOTdlMzViOTlhODJjYWMuLjBjYjY3ZWYyOWM2MmJmOGNjNDQ2YTBl
Y2UzMWM5ZmU1MzUxNTdhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBK
U1JlbW90ZURPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkLCBKU1ZhbHVlLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU1JlbW90ZURP
TVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSkKK2Jvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IDAzZGQ5YzE2MWE4Mzk5MTJkNDM5MzQyZDI2NWJjNWZkMTViNmE0MTYu
LmI3Y2QxZmNhNDM5OWNlODk5NmFhYTZlY2E3OTUwNzM2YzA1MzIzOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzAx
LDcgKzEzMDEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogICAgICMgVGhpcyBpbXBs
ZW1lbnRzIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1v
YmplY3QtZGVsZXRlIGZvciB0aGUKICAgICAjIGZvciB0aGUgZGVsZXRlUHJvcGVydHkgb3ZlcnJp
ZGUgaG9vay4KIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKVxuIik7CisgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIntcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIHRoaXNP
YmplY3QgPSAqanNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CkBAIC0xMzIxLDcgKzEz
MjEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogCiAgICAgIyBGSVhNRTogSW5zdGVh
ZCBvZiBjYWxsaW5nIGRvd24gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5LCBwZXJoYXBzIHdlIHNo
b3VsZCBpbXBsZW1lbnQKICAgICAjIHRoZSByZW1haW5lZCBvZiB0aGUgYWxnb3JpdGhtIG91cnNl
bHZlcy4KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9CiAKQEAgLTI2OTYsNyArMjY5
Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJy
aWRlc0RlbGV0ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Jik7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQpO1xuIik7CiAgICAgfQogCkBAIC00MzI0LDcgKzQzMjQsOCBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICAgICAgfQpAQCAtNzUxMiw3ICs3NTEzLDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7
cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3Ry
bGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICB9XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRp
bmcuY3BwCmluZGV4IGI1ZWE1NDhlMWQxMjcyZTE4NmRiOTQ0Y2U2MTk4NTBmNGZkMmU4MDguLmU2
MzMyMzlkYWVmY2VmMDQwOWM4YjQ2M2I4NzBmNjZiODEwNWQ3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTEzNyw3ICsxMzcsOCBAQCB2b2lkIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0
dGluZ09wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTE0NSw3
ICsxNDYsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmli
dXRlIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYg
KGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFy
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDgwZmFm
MzUxMDU0N2EyYWRlNzdjYjdlYzk1YjI5MTkyZDkwMWFhNDkuLmVmNjYwMzM0ZTMxODFiNjdkZTUy
NGIzZDM1ZGYxNjU2NGY2NTZhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKQEAgLTEwOCw3ICsxMDgsOCBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJh
U2VjcmV0QXR0cmlidXRlIiksIHN0cmxlbigiYVNlY3JldEF0dHJpYnV0ZSIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmIChoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkK
ICAgICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBiZmY0YzNiMDlkYTU5NDFiZmY3
MWRjZGJiMzg1MjU0OGEwMGMzZjFkLi44NzgzZTE1YzI4MTM3NjYzNGZkYzc1ZGVmZmM4NWRkYTk2
NTQ4OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
LmNwcApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG8KICAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9
ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGlmIChpc1Zpc2libGVOYW1lZFBy
b3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFBy
b3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIH0KLSAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxs
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCmluZGV4
IDBlYTRiYjExYjg2MDUzMDExNjU3ZmQ2ZWE2M2YyNDZkNGQ4MmU1MGEuLjEzOGQ0YzE4ZjhmNDZi
YzM0MzMxMDliZDAzMjM5NTYzN2QwYWMzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0
aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNzk0ZDU5NzZmMTNmMDcxOGI0Y2VlNTE2
MzM4MzBjY2QzMGYxYzMzMy4uNTc5ZjJhMGU2YThjN2E5MjU1NjE5ZDg0NDUyNmJhOGRkYjJkYWE4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAg
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYg
dGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24q
PihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQs
NyArMjA0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KIAogICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDc5
MWJlMTgyZWIxYjM2OTY5MjFkZTk3Njk1MjcyOWYwYjRmMGIzNGEuLjA1NWQzZGY5MjM4MThjMDA3
NjdmMTg5NWRmNjcyNWY1YmMwZWRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Qzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGIzMzc2ZTNhOWZlNTJiOGEwYTZkM2Q0
MDVhNmFhZmVjNDFiY2YwODcuLjI1MDIzYTMxYTE0NjQyMjg3YTBiMWI1MGRkZjRkZjQ2MTlkZGYy
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHCiAgICAgSlNP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0
ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBi
b29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZQogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
IGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmgKaW5kZXggNTRlMDI1NDc4ZTFkYzM5OTA3MDczM2U0OTliMDE2MzE0OTAxMjQ5ZS4u
YTg1OGEyNzE1NGJkM2M2MzY0ZmM0NWE2NDdmZjQyYjZiNDcyNTA2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJy
YXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggZThkOTc0
MTlhZmE1ZDlhZTY4ZGEwNGVhNTQxZWFiZjUwZDQ3ODczNi4uZjZmMzY2ZTIyMmU0MTQ0YTc0YjYz
NzU0ZmJkMDc4OThmOThiNjZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KICAg
ICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0
dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxs
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAppbmRleCBhOTk0NWJhZmM2MTE0M2U1NzZm
ZmQ2MGZlYzhlZWU2OTY0YjlmMDMwLi4yZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2Qx
ODY4OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0g
SlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggMTEwMGFhM2NlYzBiMWUxMGY3OTA3MzBhZjUx
MzA5NzAwNjAwYjk1ZS4uMWZiM2YxYmVhOGRhZjJmMGQwOWUyOTZjNTg3ZmZlMDQ3MDg2M2ZlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcApAQCAtMTU3LDQ1ICsxNTcsNTIgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRl
U2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRT
ZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiks
IHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVk
KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbnRyaWVzIiksIHN0cmxlbigiZW50cmllcyIpKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRv
ckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImtleXMiKSwgc3RybGVuKCJrZXlzIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJh
dG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidmFsdWVzIiksIHN0cmxlbigidmFs
dWVzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRv
bUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZm9yRWFjaCIpLCBzdHJs
ZW4oImZvckVhY2giKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1
Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0
KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggNGMxMDcxMDEzMTA5YjVmZWVjYjQzMjU3MTQ4NDA2OTJkODkw
NmYyMS4uZjU2ODQzMjRhNjY3YmE5NmRlNzUzNjA4MTg3M2QyNTIwYWE4ZTUzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTE5ODQsMTQgKzE5ODQsMTYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2IKICAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVF
bmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3Rh
dGljIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAg
fQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0
aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
ICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiB9CkBA
IC0yMzQ3LDkwICsyMzQ5LDEwNCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24iKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAo
ISh3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5h
YmxlZCIpLCBzdHJsZW4oImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVF
bmFibGVkIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9CiAgICAgaWYgKCF3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJ3b3JsZFNwZWNpZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRT
cGVjaWZpY01ldGhvZCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2Fs
Y3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0
KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0
U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNy
ZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24i
KSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAo
IWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRp
b25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNT
ZWN1cmVDb250ZXh0KCl8fCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWxsb3dzTWVkaWFEZXZpY2VzKCkpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigibWVkaWFEZXZpY2VzIiksIHN0cmxlbigibWVkaWFEZXZpY2VzIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAg
ICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhh
c1NlcnZpY2VXb3JrZXJTY2hlbWUoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzZXJ2aWNlV29y
a2VycyIpLCBzdHJsZW4oInNlcnZpY2VXb3JrZXJzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
ICAgICBpZiAoIShSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RG
ZWF0dXJlRW5hYmxlZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkudGVzdEZlYXR1cmUxRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAj
ZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
dGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0
aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpLCBzdHJsZW4oInJ1bnRpbWVDb25kaXRpb25hbGx5
UmVhZFdyaXRlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0
ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiY29u
ZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIC8vIEFkZGluZyBiYWNrIGF0
dHJpYnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2
YXJpYW50IGFib3ZlLiAKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAppbmRleCBmZWViZGVmN2JjNDVlOThjOTMwOGZkZmJkZTExMGI5OWZkZGRjYTJjLi5h
NDE3ZjVjMzhiZGE3OTRmMTZlZmRhNDI2MjVmMjMwYTQwMDE5YTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTM5Miw3ICszOTIsNyBAQCBib29sIF9OUE5fUmVtb3Zl
UHJvcGVydHkoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChpLT5pc1N0cmluZygpKQotICAgICAgICAgICAgb2JqLT5p
bXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxHbG9i
YWxPYmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmplY3Qs
IGktPnN0cmluZygpKSk7CisgICAgICAgICAgICBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KG9iai0+
aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgob2JqLT5p
bXAsIGxleGljYWxHbG9iYWxPYmplY3QsIGktPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDIyZjBiOGQ5ZDhmYWU0YTc5
YzZiNjMxZTkzNWNiNmFkYzdkOTRmZmYuLmRlM2E0M2RlZjBiOTc4YzA3ODEzZDgwMDQ3MmU5Zjk5
YWVmNzg0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0KQEAgLTQ1OCw3ICs0NTgsNyBAQCAtICh2b2lkKXJlbW92ZVdlYlNjcmlwdEtleTooTlNT
dHJpbmcgKilrZXkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVj
dDsKIAotICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtz
ZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCBTdHJpbmcoa2V5KSkpOworICAgIEpTQzo6SlNDZWxsOjpkZWxldGVQcm9wZXJ0eShbc2VsZiBf
aW1wXSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3Ry
aW5nKGtleSkpKTsKIAogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAg
ICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCA1ZWQyMWYxMzRlZjRhYWI1
ZGMwYzU1YTQ1ZGU2YTYzZDI3YzZiZTJlLi42MjI5NjM2OGViYjkwYzUwYjlkZTdmYTA3ODJjOWM2
ZmEyODU5MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApA
QCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxU
eXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUpOwogCiAgICAgYm9vbCB0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsg
Ly8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1
cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0
aGUgbG9uZ2VyIHRlcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KaW5kZXggMTllZDE5Y2JjN2FlM2VlNDY3Nzk2YjEwM2NiZmU3NjE2MDlhZDczMC4uNmU4Nzdk
MmViN2Y0NGQwM2EyOGUxNzEwODNiZDNkMGYwYmI5ODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIENhbGxUeXBlIE9i
amNGYWxsYmFja09iamVjdEltcDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1ib29sIE9iamNGYWxs
YmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwCmluZGV4IDRkMjk3YzcwZDZiMWI2YzFhZjg4ZjkxNGJlODVmNjBkZjAzY2M5YjEu
LmVjMzU4OGZjNTY1OTU1M2Y1MjcyODNjNThhNzM1ODAyMTMyOWFjNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIFJ1bnRp
bWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCkt
PnNldFZhbHVlQXQobGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKIH0KIAotYm9v
bCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKQorYm9vbCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmlu
ZGV4IGZjZjVlMzNmYjExNDAxODUxMDc5OTMwZmJkMTE3NjEzNTQ1MmM3ZTYuLjI5ODEyYTY2ZDZm
MDEyNGUzODM2MjVmOTU2MDE5Y2EzM2JjM2JkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgdW5zaWduZWQg
Z2V0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheS0+Z2V0TGVuZ3RoKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGEwMzZiNjY2MmQ0ODcyZjY4
ZGM1MjY0NWJhMWFmMmJhMTUzMzAzMmQuLjlkNWQ2MGRlZjM1NzU0YmUxZTBlMDYyMGU0MWVkYjk4
ZWZlMzllZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAt
MjAwLDcgKzIwMCw3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpCiB7CiAgICAgLy8gQ2FuIG5ldmVyIHJlbW92ZSBhIHByb3BlcnR5IG9mIGEgUnVu
dGltZU9iamVjdC4KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5oCmluZGV4IDZjYmY3YmY3OTZiMGE4OTQwNGI5NDIyNzVkNjUxZTYwZTczMjQ1ODIu
LjNjMTBkOGJkNTBmM2I3ZGFhNDg0MjIxNGI5ZTA0ZjA0M2FmZGYyZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5jcHAKaW5kZXggMmVmYjIyNTIzZjkyMWU5MmFiZDAyMTZlYjBjZDFmZmQxMDAzNjJiZS4uMDVk
MTI5MjkzOTU4MmYwNGM0MzJkMzBjMTQyZGJhNWRhYTBiZjExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCBib29sIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNO
UE9iamVjdCo+KGNlbGwpLT5kZWxldGVQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBucElk
ZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRl
eCA4NTU4ODk0OWEzMDYwNGM2OWY3N2NjYzNmNjBlNTQ2OTc3ZmZhYzZkLi40ODAzYzBiYzU3MWY5
NzdkZGMyNzIyYmJhYjk2YjZkMjdjMmE5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC05NSw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJv
cGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHAKaW5kZXggMzZmMjhlZTZmYjAxMDJkOGMxNzcxM2M2MDhiNjE0ZWFmODVkZGI3Ni4u
YTdmYjZiNWU5MmQ2NjE1ZmFkYTE4NjQyNzE2ZjExMmVlZGIzYjk5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5j
cHAKQEAgLTIyOSw4ICsyMjksOCBAQCBib29sIE5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KE5Q
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG1fanNPYmpl
Y3QuZ2V0KCksIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworCisgICAgICAgIEpT
Q2VsbDo6ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgaWRlbnRpZmllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2pzT2JqZWN0LT5o
YXNQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSkp
IHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAzMmFmYTI4MGZhOTI3ZDg3NzMyMGViODFj
YmQ5MDcxMDI1NTk3ZS4uZGM2MmQ1NTQxNDJhMzFjOGE4MDU2NmJkNmRkM2FlN2VlOTRiMzUyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTE0MSw4ICsx
MTQxLDggQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJlbW92ZVByb3BlcnR5
KHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGkKICAgICAgICAgc2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworCisgICAgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgc2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTQ2YTc1NWFkOWY5MzJiMWI1MTcyOWNhNDA2
ZmM0ZjE4ZTk3ZTI3NS4uMWYyMWU3Y2IxMzQ0YjQ3MzdiZDI2ODQ2YTQ0M2U1MTRjODE3OWZmMiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw3MCBAQAorMjAyMC0wMi0yNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlciBhbmQgRmlsaXAgUGl6bG8uIAorCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFp
bi5qczoKKyAgICAgICAgKGRlbGV0ZS5DLnByb3RvdHlwZS56KToKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRk
ZWQuCisgICAgICAgIChDKToKKyAgICAgICAgKG5vSW5saW5lLkMuZm9vKToKKyAgICAgICAgKG5v
SW5saW5lLmZvby5GKToKKyAgICAgICAgKG5vSW5saW5lLkYpOgorICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAg
KEMpOgorICAgICAgICAobm9JbmxpbmUuQy5EKToKKyAgICAgICAgKG5vSW5saW5lLkQuZm9vKToK
KyAgICAgICAgKG5vSW5saW5lLmZvby5FKToKKyAgICAgICAgKG5vSW5saW5lLkUuRik6CisgICAg
ICAgIChub0lubGluZS5GKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanM6CisgICAgICAgICogc3RyZXNzL2RlbGV0
ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qczoKKyAgICAgICAgKHNkKTog
RGVsZXRlZC4KKyAgICAgICAgKHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxlKTogRGVsZXRlZC4K
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0Q2FuRmxhdHRlbik6IERlbGV0ZWQu
CisgICAgICAgICh0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlLk9iamVjdC5wcm90b3R5cGUuZ2xv
YmFsUHJvcGVydHkuNDIubWFrZUZvbyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0RGVsZXRlV2l0
aElubGluZUNhY2hlLm5vSW5saW5lLmRvVGVzdCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0RGVs
ZXRlV2l0aElubGluZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGVsZXRlLXBy
b3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0X3Ro
cm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5s
aW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRf
ZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
LnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURl
bGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0
ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3Mu
bWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleC5tYWtlRm9vNSk6CisgICAgICAg
IChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4KToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZh
bC5tYWtlRm9vNik6CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHlt
b3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlW
YWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLm1ha2VGb283KToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxldGVCeVZhbCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLm1ha2VG
b284KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RCaWdpbnREZWxldGVCeVZhbC50ZXN0U3ltYm9s
RGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLnRl
c3RPYmpEZWxldGVCeVZhbC5tYWtlRm9vOSk6CisgICAgICAgIChub0lubGluZS50ZXN0U3ltYm9s
RGVsZXRlQnlWYWwudGVzdE9iakRlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RP
YmpEZWxldGVCeVZhbC50ZXN0U3RyaWN0Lm1ha2VGb28xMCk6CisgICAgICAgIChub0lubGluZS50
ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdCk6CisgICAgICAgIChub0lubGluZS50ZXN0U3Ry
aWN0LnRlc3RPdmVycmlkZS5hcnIuaik6CisgICAgICAgIChub0lubGluZS50ZXN0U3RyaWN0LnRl
c3RPdmVycmlkZSk6CisgICAgICAgIChub0lubGluZS50ZXN0T3ZlcnJpZGUudGVzdE5vbk9iamVj
dC5kZWxldGVJdCk6CisgICAgICAgIChub0lubGluZS50ZXN0T3ZlcnJpZGUudGVzdE5vbk9iamVj
dCk6CisgICAgICAgIChub0lubGluZS50ZXN0Tm9uT2JqZWN0LnRlc3ROb25PYmplY3RTdHJpY3Qu
ZGVsZXRlSXQpOgorICAgICAgICAobm9JbmxpbmUudGVzdE5vbk9iamVjdC50ZXN0Tm9uT2JqZWN0
U3RyaWN0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3ROb25PYmplY3RTdHJpY3QudGVzdEV4Y2Vw
dGlvblVud2luZC5tdXRhdGVUaGVtKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3ROb25PYmplY3RT
dHJpY3QudGVzdEV4Y2VwdGlvblVud2luZC5ub0lubGluZS5kZWxldGVJdCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0Tm9uT2JqZWN0U3RyaWN0LnRlc3RFeGNlcHRpb25VbndpbmQpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdEV4Y2VwdGlvblVud2luZC50ZXN0VERaKToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RURFopOgorCiAyMDIwLTAyLTE5ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGlu
Z0Bzb255LmNvbT4KIAogICAgICAgICBDb21wdXRlZCBQcm9wZXJ0aWVzIHdpdGggaW5jcmVtZW50
IHNvbWV0aW1lcyBwcm9kdWNlcyBpbmNvcnJlY3QgcmVzdWx0cwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBl
LWNoYWluLmpzCmluZGV4IDQ5YTMxYjdmMjQ3YzFiZDBhY2E4MmNiMjJkZjIwZThmMWJmNjFiZGQu
LjU0YmJhODJlNjk5YzYyY2NjYTg5NDUxNmU2MmI3ZTZjYTFmNTEyMDIgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFp
bi5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1w
cm90b3R5cGUtY2hhaW4uanMKQEAgLTEsNCArMSw0IEBACi0vL0Agc2tpcCBpZiAkbW9kZWwgPT0g
IkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5
CisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KIGZ1bmN0aW9uIGFzc2VydChi
KSB7CiAgICAgaWYgKCFiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3I7CkBAIC0yOCw3ICsyOCw3
IEBAIGZ1bmN0aW9uIGRvVGVzdCh6VmFsKSB7CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3Ig
KGxldCBpPTA7IGk8MTAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CiAgICAgY29uc3QgWCA9IHsgaSB9CiAgICAgQy5wcm90b3R5cGUueiA9IFgKICAgICBkb1Rl
c3QoWCkKQEAgLTM2LDcgKzM2LDcgQEAgZm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKIAog
ZGVsZXRlIEMucHJvdG90eXBlLnoKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwMDA7ICsraSkgewor
Zm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyArK2kpIHsKICAgICBnZXRaKHt6OiBpfSkKICAg
ICBkb1Rlc3QodW5kZWZpbmVkKQogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTZiODZkNTVhMTlmOWMwOWU1MGRlMWJkNTYzOTRkYTUxMGU0Yzc0OQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0
eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHNraXAg
aWYgJG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCisKK2Z1bmN0aW9uIEMocHJvcCkgeworICAgIHRo
aXNbcHJvcF0gPSA0CisgICAgZGVsZXRlIHRoaXNbcHJvcF0KK30KK25vSW5saW5lKEMpCisKK2Z1
bmN0aW9uIGZvbyhvLCBwcm9wKSB7CisgICAgZGVsZXRlIG9bcHJvcF0KK30KK25vSW5saW5lKGZv
bykKKworZnVuY3Rpb24gRihwcm9wKSB7CisgICAgdGhpc1twcm9wXSA9IDQKKyAgICBmb28odGhp
cywgcHJvcCkKK30KK25vSW5saW5lKEYpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpIHsKKyAgICBuZXcgQygiZm9vMSIpCisgICAgbmV3IEYoImZvbzEiKQorICAgIG5ldyBDKCJm
b28yIikKKyAgICBuZXcgRigiZm9vMiIpCisgICAgbmV3IEMoImZvbzMiKQorICAgIG5ldyBGKCJm
b28zIikKKyAgICBuZXcgQygiZm9vNCIpCisgICAgbmV3IEYoImZvbzQiKQorICAgIG5ldyBDKCJm
b281IikKKyAgICBuZXcgRigiZm9vNSIpCisgICAgbmV3IEMoImZvbzYiKQorICAgIG5ldyBGKCJm
b282IikKKyAgICBuZXcgQygiZm9vNyIpCisgICAgbmV3IEYoImZvbzciKQorICAgIG5ldyBDKCJm
b284IikKKyAgICBuZXcgRigiZm9vOCIpCisgICAgbmV3IEMoImZvbzkiKQorICAgIG5ldyBGKCJm
b285IikKKyAgICBuZXcgQygiZm9vMTAiKQorICAgIG5ldyBGKCJmb28xMCIpCit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hl
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNo
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMDA4NjNjNjQxYTlhNzlkZWM5ZmUxNDdhOTVhODNlZWM3M2ZmM2M5
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDM1IEBACisvL0Agc2tpcCBpZiAkbW9kZWwg
PX4gL15BcHBsZSBXYXRjaC8KKworZnVuY3Rpb24gQygpIHsKKyAgICB0aGlzLnggPSA0OworICAg
IGRlbGV0ZSB0aGlzLngKK30KK25vSW5saW5lKEMpCisKK2Z1bmN0aW9uIEQoKSB7CisgICAgZGVs
ZXRlIHRoaXMueAorfQorbm9JbmxpbmUoRCkKKworZnVuY3Rpb24gZm9vKG8pIHsKKyAgICBkZWxl
dGUgby54Cit9Citub0lubGluZShmb28pCisKK2Z1bmN0aW9uIEUoKSB7CisgICAgdGhpcy54ID0g
NAorICAgIGZvbyh0aGlzKQorfQorbm9JbmxpbmUoRSkKKworZnVuY3Rpb24gRigpIHsKKyAgICBm
b28odGhpcykKK30KK25vSW5saW5lKEYpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7
ICsraSkgeworICAgIG5ldyBDCisgICAgbmV3IEQKKyAgICBuZXcgRQorICAgIG5ldyBGCit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMt
Y2FjaGVhYmxlLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1w
cm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCmluZGV4IDc3OTVkYzU4MTU3OGU0
YzM5ODFjMjJhYzg3NmM0NTU0MTNlNjRkM2MuLmE5MzlhYWUzYWM4YWNjYzIyMTRkZDdlN2Q4MDI0
NDIxYTgxNjQ1ZDkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1w
cm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCisrKyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCkBA
IC0yNCw1ICsyNCw1IEBAIGZ1bmN0aW9uIGRvVGVzdCgpIHsKIH0KIG5vSW5saW5lKGRvVGVzdCk7
CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwMDsgKytpKSBkb1Rlc3QoKQorZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDAwMDAwOyArK2kpIGRvVGVzdCgpCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcyBiL0pTVGVz
dHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcwpp
bmRleCA0MDNjN2MwOWNjMTIzZjNiMTg1NDY4MGI2YzE3ZGQ0NTZhNWRlZjMxLi5hNGJhMWU0NGRh
YzhhOWEzMzFkZTAzYjA1MzVlMzkyNDkzZTY1YzExIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5zaXRpb24uanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpz
CkBAIC0xMiw2ICsxMiw5IEBAIGZ1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgewogICAgIGlmIChh
ID09PSBiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBh
ICsgIiAhPT0gIiArIGIpOwogfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2Vx
KQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKIAogZnVuY3Rpb24gc2Qob2JqKSB7CiAgICAgbGV0IGRh
dGEgPSAkdm0uZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3Qob2JqKQpAQCAtMzEsNiArMzQsOCBA
QCBmdW5jdGlvbiBzaWQob2JqKSB7CiAgICAgbGV0IGRhdGEgPSBzZChvYmopCiAgICAgcmV0dXJu
IGRhdGFbZGF0YS5sZW5ndGgtMV0uaWQKIH0KK25vSW5saW5lKHNkKQorbm9JbmxpbmUoc2lkKQog
CiBmdW5jdGlvbiB0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZShpKSB7CiAgICAgbGV0IGZvbyA9
IHt9CkBAIC02Miw2ICs2Nyw3IEBAIGZ1bmN0aW9uIHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxl
KGkpIHsKICAgICBhc3NlcnRfZXEoJHZtLmdldENvbmN1cnJlbnRseShmb28sICJiYXIiK2kpLCAx
KQogICAgIGFzc2VydChmb29bImJhciIgKyBpXSA9PT0gMSkKIH0KK25vSW5saW5lKHRlc3REZWxl
dGVJc05vdFVuY2FjaGVhYmxlKQogCiBmdW5jdGlvbiB0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVz
KGkpIHsKICAgICBsZXQgZm9vID0ge30KQEAgLTEwMCw2ICsxMDYsOCBAQCBmdW5jdGlvbiB0ZXN0
Q2FuTWF0ZXJpYWxpemVEZWxldGVzKGkpIHsKICAgICBhc3NlcnRfZXEoZGF0YVtkYXRhLmxlbmd0
aC0yXS5wcm9wZXJ0eSwgImJhciIgKyBpKQogfQogCitub0lubGluZSh0ZXN0Q2FuTWF0ZXJpYWxp
emVEZWxldGVzKQorCiBmdW5jdGlvbiB0ZXN0Q2FuRmxhdHRlbihpKSB7CiAgICAgbGV0IGZvbyA9
IHt9CiAgICAgZm9yIChsZXQgaj0wOyBqPDUwMDsgKytqKSB7CkBAIC0xMzEsNiArMTM5LDcgQEAg
ZnVuY3Rpb24gdGVzdENhbkZsYXR0ZW4oaSkgewogICAgICAgICAgICAgYXNzZXJ0X2VxKHZhbCwg
dW5kZWZpbmVkKQogICAgIH0KIH0KK25vSW5saW5lKHRlc3RDYW5GbGF0dGVuKQogCiBmdW5jdGlv
biB0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKCkgewogICAgIE9iamVjdC5wcm90b3R5cGUuZ2xv
YmFsUHJvcGVydHkgPSA0MgpAQCAtMTc1LDYgKzE4NCw3IEBAIGZ1bmN0aW9uIHRlc3REZWxldGVX
aXRoSW5saW5lQ2FjaGUoKSB7CiAKICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQorbm9JbmxpbmUo
dGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSkKIAogdGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSgp
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2Fj
aGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNjNTNlMDEyMTZkZjBjM2Y4ZTYyYTY5ODRlZmIyYTRiN2ZjZjY5MjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hl
LmpzCkBAIC0wLDAgKzEsNTQ2IEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIp
CisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorCitm
dW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHRocmV3ID0gdHJ1
ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShhc3NlcnQpCitub0lubGlu
ZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9JbmxpbmUoYXNzZXJ0X3Rocm93
cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24g
bWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVy
biBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBBcnJh
eSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIg
PT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAg
ICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitm
dW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZv
bzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4g
Zm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5
KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltq
XSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIg
PT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAg
ICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQor
CitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9u
IG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEK
KyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0
cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28z
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbyku
bGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3Nl
cnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQo
Zm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0
KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisg
ICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENh
Y2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAgICBsZXQgZm9vID0g
e30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNz
ZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZv
by5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKwor
ICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAg
IHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOwor
ICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3Nl
cnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZv
b2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZv
bzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQorICAgIH0KKworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0K
KworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVj
dC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAg
ICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0ZXN0RGVsZXRlSW5kZXgoKSB7
CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAg
ICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBmb29bMF0gPSAyMwor
ICAgICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRy
dWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0cnVlKQorICAgICAgICBkZWxl
dGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b281KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb281KCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pd
CisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28p
KQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAg
ICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09
IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJi
YXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0sIDIzKQorICAgICAgICBhc3Nl
cnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sxXSA9IDEKKyAgICAgICAgYXNz
ZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0RGVsZXRlSW5kZXgpCisK
K2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1siYmF6IitpXSA9IDEK
KyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6IitpXQorICAgICAg
ICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQorCisgICAgYXJyID0g
bmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAgICAgICBmb28uYmFn
ID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBq
XSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2Vy
dCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhp
Y0RlbEJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzcoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dID0gMQorICAgICAgICBmb28u
YmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTBuXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1h
a2VGb283KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb283KCkKKyAgICB9CisKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJy
W2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShP
YmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG4gaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9
IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0g
PSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdEJpZ2ludERlbGV0ZUJ5
VmFsKQorCitmdW5jdGlvbiB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwoKSB7CisgICAgY29uc3Qgc3lt
Ym9sID0gU3ltYm9sKCdmb28nKTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb284KCkgeworICAgICAg
ICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydCgh
KFN5bWJvbCgnZm9vJykgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KHN5bWJvbCBpbiBmb28pCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQorICAgICAgICBy
ZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb284KQorCisgICAgYXJyID0gbmV3
IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb284KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZv
by5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwg
MSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAx
CisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0g
MworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RTeW1ib2xEZWxldGVCeVZh
bCkKKworZnVuY3Rpb24gdGVzdE9iakRlbGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0IHN5bWJvbCA9
IHsgaTogImZvbyIgfTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb285KCkgeworICAgICAgICBsZXQg
Zm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydChzeW1ib2wg
aW4gZm9vKQorICAgICAgICBhc3NlcnQoISh7IGk6ICJmb28iIH0gaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisgICAgICAgIHJldHVybiBm
b28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzkpCisKKyAgICBhcnIgPSBuZXcgQXJyYXko
NTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pd
ID0gbWFrZUZvbzkoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9
PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAg
ICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAg
ICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdE9iakRlbGV0ZUJ5VmFsKQorCitmdW5j
dGlvbiB0ZXN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIG1h
a2VGb28xMCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1
ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQy
LAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFz
c2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvby5mb29iYXIpCisgICAgICAgIGFzc2VydF9lcShm
b28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZSht
YWtlRm9vMTApCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzEwKCkKKyAgICB9CisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0g
YXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9l
cShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkK
KyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBq
XSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RPdmVycmlkZSgpIHsKKyAgICBhcnIgPSBu
ZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAg
ICAgYXJyW2pdID0gZnVuY3Rpb24oKSB7IH0KKyAgICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNPd25M
ZW5ndGhQcm9wZXJ0eShhcnJbal0pLCB0cnVlKQorICAgICAgICBkZWxldGUgYXJyW2pdLmxlbmd0
aAorICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIGZh
bHNlKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9v
KS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZv
by5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVn
IiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T3ZlcnJpZGUp
CisKK2Z1bmN0aW9uIHRlc3ROb25PYmplY3QoKSB7CisgICAgZnVuY3Rpb24gZGVsZXRlSXQoZm9v
KSB7CisgICAgICAgIGFzc2VydChkZWxldGUgZm9vLmJheikKKyAgICAgICAgcmV0dXJuIGZvbwor
ICAgIH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkK
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSB7
IGJhejogaiB9CisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydCgiYmF6IiBpbiBmb28p
CisgICAgICAgIGRlbGV0ZUl0KGZvbykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICB9CisKKyAgICBhc3NlcnQoZGVsZXRlSXQoImJheiIpID09ICJiYXoiKQorICAgIGRlbGV0
ZUl0KFN5bWJvbCgiaGkiKSkKK30KK25vSW5saW5lKHRlc3ROb25PYmplY3QpCisKK2Z1bmN0aW9u
IHRlc3ROb25PYmplY3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rp
b24gZGVsZXRlSXQoZm9vKSB7CisgICAgICAgIGFzc2VydChkZWxldGUgZm9vWyJiYXoiXSkKKyAg
ICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSB7IGJhejogaiB9CisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydCgiYmF6IiBpbiBmb28pCisgICAgICAgIGRlbGV0ZUl0KGZvbykKKyAgICAgICAgZGVsZXRl
SXQoNSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9CisKKyAgICBhc3Nl
cnQoZGVsZXRlSXQoImJheiIpID09ICJiYXoiKQorICAgIGRlbGV0ZUl0KFN5bWJvbCgiaGkiKSkK
KworICAgIGxldCBmb28gPSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdiYXon
LCB7CisgICAgICB2YWx1ZTogNDIsCisgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgfSk7
CisgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGVJdChmb28pKQorfQorbm9JbmxpbmUodGVz
dE5vbk9iamVjdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdEV4Y2VwdGlvblVud2luZCgpIHsKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBtdXRhdGVUaGVtKGEsYixjLGQsZSxmLGcs
aCxpKSB7CisgICAgICAgIGcuaSA9IDQyCisgICAgfQorICAgIG5vSW5saW5lKG11dGF0ZVRoZW0p
CisKKyAgICBmdW5jdGlvbiBkZWxldGVJdChmb28pIHsKKyAgICAgICAgbGV0IGNhdWdodCA9IGZh
bHNlCisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciBhID0geyBpOiAxIH0KKyAgICAg
ICAgICAgIHZhciB2ID0geyBpOiAxMCB9CisgICAgICAgICAgICB2YXIgYiA9IHsgaTogMTAwIH0K
KyAgICAgICAgICAgIHZhciBjID0geyBpOiAxMDAwIH0KKyAgICAgICAgICAgIHZhciBkID0geyBp
OiAxMDAwMCB9CisgICAgICAgICAgICB2YXIgZSA9IHsgaTogMTAwMDAwIH0KKyAgICAgICAgICAg
IHZhciBmID0geyBpOiAxMDAwMDAwIH0KKyAgICAgICAgICAgIHZhciBnID0geyBpOiAxMDAwMDAw
MCB9CisgICAgICAgICAgICB2YXIgaCA9IHsgaTogMTAwMDAwMDAwIH0KKyAgICAgICAgICAgIHZh
ciBpID0geyBpOiAxMDAwMDAwMDAwIH0KKworICAgICAgICAgICAgbXV0YXRlVGhlbShhLGIsYyxk
LGUsZixnLGgsaSkKKworICAgICAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKworICAgICAgICAg
ICAgYSA9IGIgPSBjID0gZCA9IGUgPSBmID0gZyA9IGggPSBpCisgICAgICAgIH0gY2F0Y2ggewor
ICAgICAgICAgICAgYXNzZXJ0X2VxKGEuaSwgMSkKKyAgICAgICAgICAgIGFzc2VydF9lcShpLmks
IDEwMDAwMDAwMDApCisgICAgICAgICAgICBhc3NlcnRfZXEoZy5pLCA0MikKKyAgICAgICAgICAg
IGNhdWdodCA9IHRydWUKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2F1Z2h0CisgICAgfQor
ICAgIG5vSW5saW5lKGRlbGV0ZUl0KQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCAxMDAwMDA7
ICsraikgeworICAgICAgICBhc3NlcnQoIWRlbGV0ZUl0KHsgaiwgYmF6OiA1IH0pKQorICAgIH0K
KworICAgIGxldCBmb28gPSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdiYXon
LCB7CisgICAgICB2YWx1ZTogNDIsCisgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgfSk7
CisKKyAgICBhc3NlcnQoZGVsZXRlSXQoZm9vKSkKK30KK25vSW5saW5lKHRlc3RFeGNlcHRpb25V
bndpbmQpCisKK2Z1bmN0aW9uIHRlc3RURFooKSB7CisgICAgZGVsZXRlIGZvby54CisgICAgbGV0
IGZvbyA9IHsgeDogNSB9Cit9Citub0lubGluZSh0ZXN0VERaKQorCitmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7ICsraSkgeworICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKCkKKyAgICB0ZXN0
Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKQorICAgIHRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQo
KQorICAgIHRlc3RDYWNoZWFibGVEZWxldGVCeUlkTWlzcygpCisgICAgdGVzdERlbGV0ZUluZGV4
KCkKKyAgICB0ZXN0UG9seW1vcnBoaWNEZWxCeVZhbChpKQorICAgIHRlc3RCaWdpbnREZWxldGVC
eVZhbCgpCisgICAgdGVzdFN5bWJvbERlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0U3RyaWN0KCkKKyAg
ICB0ZXN0T3ZlcnJpZGUoKQorICAgIHRlc3ROb25PYmplY3QoKQorICAgIHRlc3ROb25PYmplY3RT
dHJpY3QoKQorICAgIGFzc2VydF90aHJvd3ModGVzdFREWikKK30KKwordGVzdEV4Y2VwdGlvblVu
d2luZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391704</attachid>
            <date>2020-02-25 17:02:22 -0800</date>
            <delta_ts>2020-02-25 17:38:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207522-20200225170221.patch</filename>
            <type>text/plain</type>
            <size>221195</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YTM4MjY3ZDFiZGNhOGM1NWNhOTkzNWE1ZGY5MzMxZjk5MTE0MTc4Li4yZTA5NWIwNWUwMDk4NDNj
MzBiYTBkOGFiMjU5ZWI1OGYwOGMwODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTMgQEAKKzIwMjAtMDItMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIgYW5kIEZpbGlwIFBpemxvLgorCisgICAgICAg
IFdlIGFkZCBpbmxpbmUgY2FjaGluZyBmb3IgZGVsZXRlQnlJZC92YWwgZm9yIGJhc2VsaW5lIG9u
bHkuIFdlIGFsc28gZml4IGEgY29uY3VycmVuY3kgYnVnIGluIElDU3RhdHMgdXNlZCBmb3IgdGVz
dGluZy4KKyAgICAgICAgV2UgYWRkIHRocmVlIG5ldyBhY2Nlc3MgY2FzZXMgKG5vIGlubGluZSBj
b2RlIGlzIGVtaXR0ZWQgYXQgdGhpcyB0aW1lKTogCisgICAgICAgIC0gRGVsZXRlIGlzIGEgY2Fj
aGVkIGRlbGV0ZSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQorICAgICAgICAtIERlbGV0ZU1pc3Mg
aXMgYSBkZWxldGUgb2YgYSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IGV4aXN0CisgICAgICAgIC0g
RGVsZXRlTm9uQ29uZmlndXJhYmxlIGlzIGEgZGVsZXRlIG9mIGEgcHJvcGVydHkgdGhhdCBleGlz
dHMsIGJ1dCBzaG91bGQgbm90IGJlIGRlbGV0ZWQuCisgICAgICAgIFRoZXJlIGFyZSBubyBjb25k
aXRpb25zIHJlcXVpcmVkIGZvciB0aGVzZSBjYWNoZXMsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgaWQg
bXVzdCBjaGFuZ2UgYW5kIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbWF0dGVyLgorICAgICAgICBU
aGlzIGdpdmVzIHRoZSBmb2xsb3dpbmcgbWljcm9iZW5jaG1hcmsgcmVzdWx0czoKKworICAgICAg
ICBkZWxldGUtcHJvcGVydHkta2VlcHMtY2FjaGVhYmxlLXN0cnVjdHVyZSAobmV1dHJhbCkKKyAg
ICAgICAgZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZSAgICAgICAgICAgICAgZGVmaW5pdGVs
eSAzLjkwOTZ4IGZhc3RlcgorICAgICAgICBkZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLXBv
bHltb3JwaGljICBkZWZpbml0ZWx5IDEuNTIzOXggZmFzdGVyCisgICAgICAgIGRlbGV0ZS1wcm9w
ZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFpbiAgICAgIChuZXV0cmFsKQorCisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAg
IChKU09iamVjdERlbGV0ZVByb3BlcnR5Rm9yS2V5KToKKyAgICAgICAgKEpTT2JqZWN0RGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nl
c3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJl
c0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpy
ZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZv
ckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZG9l
c0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHA6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmg6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZn
L0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlu
ayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmFkZERlbEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVy
OjphZGREZWxCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6
CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERl
bEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklU
RGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdl
bmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1w
IGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlND
Ojp0cnlDYWNoZURlbEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbEJ5KToKKyAgICAgICAg
KEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAg
ICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVu
dGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDYWNoZWFi
bGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0Ns
YXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L0RlbGV0ZVByb3BlcnR5U2xvdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVy
dHlTbG90OjpEZWxldGVQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3Q6OnNldENvbmZpZ3VyYWJsZU1pc3MpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3Q6OnNldE5vbmNvbmZpZ3VyYWJsZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5
U2xvdDo6c2V0SGl0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Ojppc0NhY2hl
YWJsZURlbGV0ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdDo6aXNE
ZWxldGVIaXQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNsb3Q6OmlzQ29u
ZmlndXJhYmxlRGVsZXRlTWlzcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVByb3BlcnR5
U2xvdDo6aXNOb25jb25maWd1cmFibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9w
ZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZVByb3Bl
cnR5U2xvdDo6ZGlzYWJsZUNhY2hpbmcpOgorICAgICAgICAoSlNDOjpEZWxldGVQcm9wZXJ0eVNs
b3Q6OmlzQ2FjaGVhYmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckNvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eSk6
CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
cHV0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxs
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3Lmg6CisgICAgICAgICog
cnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFkZEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmly
b25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRl
UHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpXYWxrZXI6
OndhbGspOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5
RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm94eS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJveHkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmg6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVOZXdQ
cm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmR1bXAgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFk
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hlYWRl
ciBjb25zdCk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uSGFzT3duTGVuZ3RoUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZN
OjpmaW5pc2hDcmVhdGlvbik6CisKIDIwMjAtMDItMjQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgTExJbnQgc2hvdWxkIGZhc3QgcGF0aCBmb3IganRy
dWUvZmFsc2Ugb24gU3ltYm9scyBhbmQgT2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0MDdhMzhhYjAwN2E1MzZkZWEw
OTRhNDUzYmY4MDM2NDA2ZTE0ZjlmLi5jYzM0NjY3MzU4YmIxMjBlMGJhYWY0NjExZDBkNGRjZDU5
MDA3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAyLTI1ICBKdXN0aW4gTWljaGF1ZCAg
PGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgQ2FjaGUgZGVsZXRl
IGJ5IGlkL3ZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyIGFuZCBGaWxpcCBQ
aXpsby4KKworICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgorICAgICAgICAoV1RGOjpTcGVjdHJ1
bTo6YWRkKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCBjb25zdCk6CisgICAgICAgIChX
VEY6OlNwZWN0cnVtOjpidWlsZExpc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6
Y2xlYXIpOgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6cmVtb3ZlSWYpOgorICAgICAgICAoV1RG
OjpTcGVjdHJ1bTo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTcGVjdHJ1bTo6ZW5k
KTogRGVsZXRlZC4KKwogMjAyMC0wMi0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtKU0NdIFNocmluayBTdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMGVl
YzFkMmViMzc2Mjc2ZGI1OGZjMmQxODRmOGQ5ODJhMGYyM2U2Li43OWVmNTE5NzllZTI0YThhOTk3
OTFkMTU2ZTgxOTljNTNjM2EwNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAt
MDItMjUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAg
ICAgIElubGluZSBDYWNoZSBkZWxldGUgYnkgaWQvdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBL
ZWl0aCBNaWxsZXIgYW5kIEZpbGlwIFBpemxvLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1JlbW90ZURPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpk
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVsZXRlUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGVQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IHJl
bW92ZVdlYlNjcmlwdEtleTpdKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
aDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJh
eTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6Cisg
ICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuaDoKKwogMjAyMC0wMi0yNCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSBmb3IgdGhlIHBsYXRm
b3JtIGF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDQ5MDgxZWM5YjY1MGY4MzdkMzlkY2Y0ZTNk
YjkyODNmYTIxNmMzMy4uMjNmMzI5NWUyZDYzODUxY2RiNjI4ODAxZmU5OTE0YmQ3N2U3NDI0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yNSAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBi
eSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlciBhbmQgRmlsaXAgUGl6
bG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TlBKU09iamVjdDo6cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTI0ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1l
bnQgU1BJIGZvciB0aGUgcGxhdGZvcm0gYXV0aGVudGljYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDhmNTA3YTQ5YjRjZjczODc4ZDMwY2YyNzJmNzQzZWNmZmE3MmU2N2QuLjUw
Yjc4YTNkZGQ1YmY3MjRjMTFlMTU3NzYxNmZkZDMwNzdiMzhlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMi0yNSAgSnVzdGluIE1pY2hhdWQg
IDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0
ZSBieSBpZC92YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlciBhbmQgRmlsaXAg
UGl6bG8uCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
cmVtb3ZlUHJvcGVydHkpOgorCiAyMDIwLTAyLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggc29tZSBpbmNsdWRlIG1pc3Rha2VzIGFuZCBtYWtlIHNvbWUg
Y29kaW5nIHN0eWxlIHR3ZWFrcyB0byBXZWJLaXQgYW5kIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMDM0YjM1N2Mw
NzM4ZTM0OTEyNTg4NThkNzA2OTg5ZmVmY2I0ODMzZC4uOTJjYTkyNDc3OTYyYmMwNGM3YThlYjg2
YTFmNDE1ZDJiMTg3ZjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQpOwogCiAgICAgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCBjZDUxMWJmZDI4NGEw
MTMyNTJhNjQwNWE2NzA3YWFkMTM3YTFiY2NiLi4wMmNlZGM3OTY2YmVjMGE1M2E5YmMwMmE5ZjM3
ODNlNzlmNzMyZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMzczLDcgKzM3Myw3IEBAIGJvb2wgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1ib29sIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDE4LDcgKzQx
OCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gUGFyZW50OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgpAQCAtNDI2LDcgKzQyNiw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjCiB7
CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKLSAgICByZXR1
cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSkpOworICAg
IHJldHVybiBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4
IGY3ZjlkYWIzZjI4YWRjMGVhYmIyYmRlOGIyNTA2NzcyYWQyNWZmY2UuLjlkYjg1MjgxODEzZTFh
ZDlhNzRhZmUyODI0ZmZjMzViMDNmMDkwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCkBAIC00NzksNyArNDc5LDcgQEAgYm9vbCBKU09iamVjdERlbGV0ZVBy
b3BlcnR5Rm9yS2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1
ZVIKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBib29sIHJlc3VsdCA9IGpzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50KTsKKyAgICBib29sIHJlc3VsdCA9IEpT
Q2VsbDo6ZGVsZXRlUHJvcGVydHkoanNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQpOwogICAg
IGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBjdHgsIGV4Y2VwdGlvbik7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJv
cGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBw
cgogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogCi0gICAgYm9vbCBy
ZXN1bHQgPSBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShqc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJnZtKSk7CisgICAgYm9v
bCByZXN1bHQgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGpzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsKICAgICBoYW5kbGVFeGNlcHRpb25JZk5l
ZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFlNDI3YzMwYzUxMTYzZWRkOWYxMDZk
NDJmOTVlMDlkMDJiZTljNC4uNzU1NmU5NTZmYzYzMmY3ZTJiOWQwZTFhZGJmN2NhODFmOGU4ZjA0
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODE1LDYgKzgxNSw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGlt
ZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAogICAgIHJ1
bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKKyAgICBydW50aW1lL0RlbGV0ZVByb3Bl
cnR5U2xvdC5oCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaAogICAgIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmNDJjMmFlOGZlNTkyYmY2ZDY4Mjg1Mzg5
NzZkMGNmNmRhNmRiMWYuLmZiNzQ1NjUxN2Y4Zjc0YzY5ZjFjOWQ1YmRjMjAyYzRmNmU0NDE4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDYgKzExNzgsNyBAQAogCQk3
MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAxMUFG
REJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFGREJFQTIw
MDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0
ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTczRTM3OTk0
MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1
IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1OTNDODk4QkU3MTRBNjRCRTkz
QTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0RCAvKiBXYXNtQ29udGV4
dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAwNTJE
N0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzk3MSw2ICszOTcyLDcgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5
NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzM0QjY1NTQyM0Y0
QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3Ro
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3Ro
Lmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5n
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VMb29w
U3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1
bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwODQsNiArNzA4Niw3IEBACiAJ
CQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAogCQkJ
CUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCiAJCQkJMTY5
OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oICovLAor
CQkJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLywK
IAkJCQkwRkUwNTAwRjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCAqLywK
IAkJCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggKi8sCiAJ
CQkJMEZFMDUwMEQxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5jcHAg
Ki8sCkBAIC05MjA5LDYgKzkyMTIsNyBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAv
KiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0QzQ1
RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVy
dHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkgLyog
RGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBCQkZEMDBB
OERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3
QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDY2Miw3ICsxMDY2Niw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1dGVz
ID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJCQlE
ZWZhdWx0QnVpbGRTeXN0ZW1UeXBlRm9yV29ya3NwYWNlID0gT3JpZ2luYWw7CiAJCQkJTGFzdFN3
aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMDAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGRlZjY3
NTI5MzlhZTU0OWQ4MTliNTZlODQwMzQ0MDg1OTgzYjU5ZmUuLjdjYWI5YzFiMDNiOTUzNmEwZWNl
NzI3ZDZjNTEzNjIyN2FhYzg3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTczLDYgKzczLDggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNz
OgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0xl
bmd0aDoKQEAgLTEwNiw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjMs
NiArMTI1LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJl
LCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKK3N0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCisgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQodm0pKTsKKyAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAg
ICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIHRoZSBqc2NlbGwuCisgICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVs
b3cuCisgICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOworICAgICAgICBuZXdTdHJ1Y3R1
cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOworCisgICAgICAg
IGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsg
fSwgeyB9KSk7Cit9CisKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KQEAgLTI2Miw2
ICsyODAsOSBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgp
IGNvbnN0CiAgICAgY2FzZSBMb2FkOgogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEg
YnlfdmFsIGZvciB0aGVzZSBwdXRzLCBidXQgd2UgZG8gY2FyZSBhYm91dCB0aGUgaWRlbnRpZmll
ci4KICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxl
dGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFj
ZTogCiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMzA5LDYgKzMzMCw5
IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJbnQzMlByb3BlcnR5Q2hlY2soKSBjb25zdAog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgVHJhbnNpdGlv
bjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAg
ICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBsYWNlOiAKICAgICBjYXNlIE1pc3M6CiAg
ICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0zNTYsNiArMzgwLDkgQEAgYm9vbCBBY2Nlc3NDYXNlOjpu
ZWVkc1NjcmF0Y2hGUFIoKSBjb25zdAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBM
b2FkOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERl
bGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CiAgICAgY2FzZSBSZXBs
YWNlOiAKICAgICBjYXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC00NDcsNiArNDc0
LDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoK
ICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgor
ICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKICAg
ICBjYXNlIFJlcGxhY2U6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAt
NDkyLDYgKzUyMiw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9y
PEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBDdXN0b21B
Y2Nlc3NvclNldHRlcjoKICAgICAgICAgZG9lc0NhbGxzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAg
Y2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIFJlcGxhY2U6CiAgICAg
Y2FzZSBNaXNzOgpAQCAtNjE0LDYgKzY0Nyw5IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuUmVwbGFj
ZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgY29uc3QKIAogICAgIGNhc2UgTG9hZDoKICAgICBj
YXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgogICAgIGNhc2UgUmVwbGFjZToKICAgICBj
YXNlIE1pc3M6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC02NjMsNyArNjk5LDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5UHJv
dG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24pCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJh
bnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKCkpLCAiIC0+ICIsIHBvaW50
ZXJEdW1wKG5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKG1fc3RydWN0dXJlKQog
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAic3RydWN0dXJlID0gIiwgcG9pbnRlckR1bXAo
bV9zdHJ1Y3R1cmUuZ2V0KCkpKTsKQEAgLTcwNSw2ICs3NDEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6
OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogCiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6
CiAgICAgICAgIGlmICh2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZChtX3N0cnVjdHVyZS0+cHJl
dmlvdXNJRCh2aXNpdG9yLnZtKCkpKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICBlbHNlCkBAIC0xODUxLDcgKzE4ODgs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0
YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCByZXN1bHRSZWdpc3RlclRvRXhjbHVkZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAg
ICAgdmFsdWVSZWdzLApAQCAtMTg5Niw2ICsxOTMzLDcxIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzbG93UGF0aC5lbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGNhc2UgRGVsZXRlOiB7CisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxv
Y2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOworICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwor
ICAgICAgICBhbGxvY2F0b3IubG9jayhiYXNlR1BSKTsKKyAgICAgICAgYWxsb2NhdG9yLmxvY2so
c2NyYXRjaEdQUik7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNo
cG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1
cmUoKS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKGJh
c2VHUFIgIT0gdmFsdWVSZWdzLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKGJhc2VHUFIgIT0gc2Ny
YXRjaEdQUik7CisgICAgICAgIEFTU0VSVCh2YWx1ZVJlZ3MuZ3ByKCkgIT0gc2NyYXRjaEdQUik7
CisKKyAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVz
ZXJ2ZWRTdGF0ZSA9CisgICAgICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3Rl
cnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFj
ZTo6Tm9FeHRyYVNwYWNlKTsKKworICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKKyAg
ICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5k
ZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKKyAgICAgICAgLy8gV2UgZG8gbm90IGNh
Y2hlIHRoaXMgY2FzZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNj
ZWxsLgorICAgICAgICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5LgorICAgICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2Vs
bCk7CisgICAgICAgIC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0
aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgorICAgICAgICBib29sIHNob3Vs
ZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFz
SW5kZXhpbmdIZWFkZXI7CisKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVl
UmVncyk7CisKKyAgICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZs
eSkgeworICAgICAgICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwg
dmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgYmFzZUdQUik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJ
bmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAg
ICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBiYXNlR1BSLAorICAgICAgICAgICAgICAgICAg
ICBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKworICAgICAgICAgICAgICAgICAg
ICBvZmZzZXRJbklubGluZVN0b3JhZ2UobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFsdWUpKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7
CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKKyAgICAgICAgICAgICAgICB2YWx1ZVJlZ3Ms
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNl
dEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAqIHNpemVvZihKU1ZhbHVlKSkpOworICAgICAgICB9CisK
KyAgICAgICAgdWludDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
bmV3U3RydWN0dXJlKCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOworCisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHJ1
ZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOworCisgICAgICAgIGFsbG9jYXRvci5yZXN0b3Jl
UmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICBz
dGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZTogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKGZhbHNlKSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIHN0YXRl
LnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgRGVsZXRlTWlz
czogeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHRydWUp
LCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5TGVuZ3RoOiB7CiAg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmluZGV4IGE3Njc3NjdiZmM2MDM0OGRjNzU5M2E2ODRh
M2Q2NDAyZDU2ZjcxNTkuLmEzNDc5ZDE2MDFhNmNkOTc3Nzk0MGFkNDU1YTMzODM3ZTZlM2I3NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtODUs
NiArODUsOSBAQCBwdWJsaWM6CiAgICAgZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CiAgICAg
ICAgIExvYWQsCiAgICAgICAgIFRyYW5zaXRpb24sCisgICAgICAgIERlbGV0ZSwKKyAgICAgICAg
RGVsZXRlTm9uQ29uZmlndXJhYmxlLAorICAgICAgICBEZWxldGVNaXNzLAogICAgICAgICBSZXBs
YWNlLAogICAgICAgICBNaXNzLAogICAgICAgICBHZXRHZXR0ZXIsCkBAIC0xNDUsOSArMTQ4LDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0
ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxw
dHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0KCksIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gPSBudWxs
cHRyKTsKIAotICAgIC8vIFRoaXMgY3JlYXRlIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBmb3IgdHJh
bnNpdGlvbnMuCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUo
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+KTsKKworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLAorICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8o
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogCkBAIC0xNTcsNyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uKQor
ICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKICAg
ICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlvdXNJRChtX3N0cnVjdHVyZS0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CkBAIC0xNjUsNyAr
MTcwLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpOwogICAgICAgICBy
ZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAxMzI0MDljMGE0
NTEwYmRmYThlY2UzM2I3NDM0NzE2MDJkN2IwZTc5Li5iMTY2YzMwYzE4YTUyM2E3NjI1ZjM5YWY2
Yjc4OTUwNjdhYTVmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTc5NSw2ICs3OTUsMTUgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZSkK
ICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmludCgiVHJh
bnNpdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6
CisgICAgICAgIG91dC5wcmludCgiRGVsZXRlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICAgICAgb3V0LnByaW50KCJE
ZWxldGVOb25Db25maWd1cmFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWNjZXNz
Q2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgb3V0LnByaW50KCJEZWxldGVNaXNzIik7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlJlcGxhY2U6CiAgICAgICAgIG91dC5w
cmludCgiUmVwbGFjZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA2MTc4NzM3Zjlm
OGE5Y2QwYjZkZGFkNTdmMWNmMTJlZmU0ZmNhNzA1Li45NmExYmFlY2JlNGNiYmI3NmRiZGVkYTgw
NTY1YTJjNTk4NjU1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Niw2ICsyNzYsMTIgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CisgICAgICAgIHJl
c2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgorICAgICAgICByZXNldERl
bEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZGRjZTg1ZWMwMjU1NTc2
YzllMzQ1MWY2NDczNmQxMmMzODk0MjgwMy4uYjU3NWJkZDIxNjE5YzJkZmU0ZjE4MmZhZWQ5MGYy
NjhlOWUyNjE5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTU1LDcgKzU1LDkgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBl
IDogaW50OF90IHsKICAgICBHZXRCeVZhbCwKICAgICBQdXQsCiAgICAgSW4sCi0gICAgSW5zdGFu
Y2VPZgorICAgIEluc3RhbmNlT2YsCisgICAgRGVsZXRlQnlJRCwKKyAgICBEZWxldGVCeVZhbAog
fTsKIAogZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCmluZGV4IDI2ZTI4MjkzOWU5YWNh
ODg2NWMyMjE3NzNjMmE0MWUwMjgwOTRkZGEuLjQ4YjViODZmYTRiOWU4NjVlYTQ4ZGM5OWE0OTNi
ZDk0OGQwNzRmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJTY29wZS5jcHAKQEAgLTEyOSwxNCArMTI5LDE0IEBAIGJvb2wgRGVidWdnZXJTY29wZTo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0o
KSktPnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogfQogCi1ib29sIERlYnVnZ2VyU2NvcGU6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgRGVidWdnZXJTY29wZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgRGVidWdnZXJTY29wZSogc2NvcGUgPSBqc0Nh
c3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwogICAgIEFTU0VSVChzY29wZS0+aXNWYWxpZCgpKTsK
ICAgICBpZiAoIXNjb3BlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoc2NvcGUtPmpzU2Nv
cGUoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+
dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52
bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCiB2b2lkIERlYnVnZ2VyU2NvcGU6OmdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggZmY0Y2UxYjFk
YTRiNTc5MGRlOGFkOTg4YTcxZjYwMmNkZjI2MTY3NC4uNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlh
MWEyMTQ5Nzc1ZWRkODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJTY29wZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDdm
ZmEzOGU2NmQyZTA4ZDc0NTk4OWJkNjEyOWRiZWFhMGZhMGQwN2IuLmU5N2RlMTBmNmY0Y2RjMTVi
YWVmYjEwYjdlYzYwNjI4Mjc4MzU5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMTYxOCw2ICsxNjE4LDIyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6IHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRT
cGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDIoKSk7CisjZW5kaWYKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBEZWxldGVCeUlkOiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworI2VuZGlmCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCeUlkRmx1c2g6IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBkb25lIGluIHRoZSBCeXRlQ29kZVBhcnNlciBiYXNlZCBvbiByZWFkaW5nIHRoZQpAQCAtMjUx
OCw4ICsyNTM0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoK
ICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoK
LSAgICAgICAgY2FzZSBEZWxldGVCeUlkOgotICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAg
ICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAgIGNhc2UgSXNFbXB0eToKICAgICAg
ICAgY2FzZSBJc1VuZGVmaW5lZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKaW5kZXggZTNlMjA4ZDJkYTFjZDczOWJmYWNjOGMzNGM1NDk3Y2M1NjJkYjkz
Ni4uMzg3MTU5MTc4OTAzMTIwYTYxMjY0NWU0YTIzNDM1MTNiYTVkYmVmNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTI0Niw2ICsyNDYsOCBA
QCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9nZXRCeUlkc1dpdGhUaGlzLCBsaW5rQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX2dldEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9wdXRCeUlkcywgbGlua0J1ZmZlcik7CisgICAgZmluYWxpemVJbmxp
bmVDYWNoZXMobV9kZWxCeUlkcywgbGlua0J1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNo
ZXMobV9kZWxCeVZhbHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5j
ZU9mcywgbGlua0J1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAppbmRleCA0ODgwODc0YzI4NWFiN2Q0NDdlYjg5M2E2ZThiNGJiZjAxMDczMWQ0Li4y
ZmI2YWQ4ZjYyZjk1YTI2ZTZjZGI4MjZhYTZkMWNkNjdmMTk0N2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xOTEsNyArMTkxLDE3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fcHV0QnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxK
SVRQdXRCeUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQotICAgIAorCisgICAg
dm9pZCBhZGREZWxCeUlkKGNvbnN0IEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhH
ZW5lcmF0b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9kZWxCeUlkcy5hcHBlbmQoSW5s
aW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZERlbEJ5VmFsKGNvbnN0IEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBn
ZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAgICB7CisgICAgICAgIG1fZGVsQnlW
YWxzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+KGdlbiwg
c2xvd1BhdGgpKTsKKyAgICB9CisKICAgICB2b2lkIGFkZEluc3RhbmNlT2YoY29uc3QgSklUSW5z
dGFuY2VPZkdlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCiAgICAg
ewogICAgICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5z
dGFuY2VPZkdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwpAQCAtMzQ4LDYgKzM1OCw4IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3I+LCA0PiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgVmVjdG9yPElubGluZUNhY2hl
V3JhcHBlcjxKSVRHZXRCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlWYWxzOwogICAgIFZlY3Rv
cjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHV0QnlJZEdlbmVyYXRvcj4sIDQ+IG1fcHV0QnlJZHM7
CisgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeUlkR2VuZXJhdG9yPiwgND4g
bV9kZWxCeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yPiwgND4gbV9kZWxCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxK
SVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2luQnlJZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hl
V3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiwgND4gbV9pbnN0YW5jZU9mczsKICAgICBW
ZWN0b3I8SlNDYWxsUmVjb3JkLCA0PiBtX2pzQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDE3YmEyYjJmZjM1YTRmYWYwMTFh
MzIyOTczZTc5NjllN2I0N2U1N2EuLjAyZThkMDY4MDc5MGM1OTc2N2E0OTA1Zjc3NmY2ZmYxYjFi
MTE5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0xMTQ1LDQzICsxMTQ1LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluQnlWYWwoTm9kZSogbm9kZSkKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRSZWdz
LnBheWxvYWRHUFIoKSwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKLXsKLSAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotCi0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotCi0gICAgdmFsdWUudXNlKCk7Ci0KLSAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSkpOwotICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICB1bmJsZXNzZWRC
b29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5v
ZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFs
dWVSZWdzKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQotICAgIGJh
c2UudXNlKCk7Ci0gICAga2V5LnVzZSgpOwotCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywga2V5UmVncyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKLQotICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGN1cnJlbnRTY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBlY2Zj
OTAzOTBiNjg3NDg2MDhjZTFkMGMwZjA5MjViZTI3ODgzMzQyLi5iMDE5ZDg1ZGY5YzI1YjEzMDg5
OTJhZTY0N2I1ZWM4YTI3NTNiYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQyNzgsNiArNDI3OCw0NSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnKQogewogfQogCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQoreworICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgc3VwcG9ydCBpbmxpbmUgY2FjaGluZyBvbiAzMiBiaXRzLgorICAgIC8v
IFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODIwNz4uCisg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKworICAgIHZhbHVlLnVzZSgpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQo
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAgIEpTVmFs
dWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGtl
eVJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworCisgICAgYmFzZS51c2UoKTsKKyAgICBrZXkudXNlKCk7CisKKyAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVn
cywga2V5UmVncyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSYW5kb20oTm9kZSog
bm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDM3MjhiODUz
ZmFiYWIyOGJmNDQ1NGM5NTA1NGZjZjU3YzQ1YmQ1NGMuLmIwN2NiMjU3NWQxMDYyNzc4ZDRlYjA3
NGRmYzVmYTYxNjYzZGQ5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTQzOSw2ICs1NDM5LDg4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdDb2RlUG9pbnRBdChOb2RlKiBub2RlKQogICAgIGludDMy
UmVzdWx0KHNjcmF0Y2gxR1BSLCBtX2N1cnJlbnROb2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBzcGVjdWxhdGUobm9k
ZSwgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgYXV0
byogcHJvcGVydHkgPSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7Cisg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpTVmFsdWVSZWdzIGJh
c2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAg
aWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCkpCisgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisKKyAgICBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRp
b25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsK
KyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwor
CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3Ms
IHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
KyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJl
Z3MsIHByb3BlcnR5KTsKKworICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAg
dW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBzcGVjdWxh
dGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDIoKSk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQga2V5
KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIEpTVmFsdWVSZWdzIGJhc2VS
ZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXku
anNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Cisg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgIGlmIChuZWVkc1R5cGVD
aGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOworICAgIGlmIChuZWVkc1R5cGVDaGVj
ayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CisKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9
IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJ
Zk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgSklURGVsQnlWYWxH
ZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBrZXlSZWdzLCByZXN1bHRH
UFIsIHNjcmF0Y2hHUFIpOworCisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywga2V5
UmVncyk7CisKKyAgICBtX2ppdC5hZGREZWxCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICB1bmJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEYXRlR2V0KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNGJlYmVmMjFhYTBkNDEwYWMwOGNhYjEyODM1
MThhOTIyMmU4NDQ4Yi4uODAzNjM5MDdiOWUxNzI4MzI3NWIyN2E2OTUzMzE4ZGM0ZTY3YjU5YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
NTE0NCwyMCArNTE0NCwxNjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGds
b2JhbE9iamVjdCksIGJhc2UsIHN1YnNjcmlwdCwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFj
Y2Vzc29yQXR0cmlidXRlcygpKSwgYWNjZXNzb3IpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPERl
bEJ5S2luZCBraW5kLCB0eXBlbmFtZSBTdWJzY3JpcHRLaW5kPgorICAgIHZvaWQgY29tcGlsZURl
bEJ5KExWYWx1ZSBiYXNlLCBTdWJzY3JpcHRLaW5kIHN1YnNjcmlwdFZhbHVlKQorICAgIHsKKyAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50OworICAgICAgICBpZiBjb25zdGV4cHIg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQgPSBt
X291dC5wYXRjaHBvaW50KEludDY0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGJhc2UsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJ
bnQ2NCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShi
YXNlLCBWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoc3Vic2NyaXB0VmFsdWUsIFZhbHVlUmVwOjpTb21l
TGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgIH0KKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworCisgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50
RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQorICAgICAgICAgICAgcHJlcGFyZVBh
dGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworCisgICAgICAgIFN0YXRlKiBzdGF0
ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOworICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
KworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRl
eChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgICAgICAgICAgQm94PENDYWxsSGVs
cGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQorICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICAgICAg
ICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpOworICAgICAg
ICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKworICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsK
KworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0g
WyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5
S2luZDo6Tm9ybWFsKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7CisgICAgICAg
ICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBzdWJzY3JpcHQgPSBb
Jl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5k
OjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHN1YnNjcmlwdFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXNbMl0u
Z3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2go
MCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzJdLmdwcigpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsm
XSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6
Ok5vcm1hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlk
R2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybkdQUiwgcGFyYW1zLmdwU2NyYXRjaCgw
KSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNj
cmlwdCwgcmV0dXJuR1BSLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CisKKyAgICAgICAgICAgICAgICBwYXJhbXMuYWRk
TGF0ZVBhdGgoCisgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxp
bmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBz
bG93UGF0aENhbGwpOworCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2so
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUo
bGlua0J1ZmZlciwgbGlua0J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgc2V0
Qm9vbGVhbihtX291dC5ub3RaZXJvNjQocGF0Y2hwb2ludCkpOworICAgIH0KKwogICAgIHZvaWQg
Y29tcGlsZURlbGV0ZUJ5SWQoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKV07Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJ
bnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlJZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFz
ZSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpKTsKKyAgICAgICAgTFZhbHVlIGJhc2U7CisKKyAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgICAgIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFVudHlwZWRV
c2U6IHsKKyAgICAgICAgICAgIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtpbmQ6
Ok5vcm1hbD4oYmFzZSwgbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51
bWJlcigpXSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlWYWwoKQogICAgIHsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgc2V0Qm9vbGVhbihtX291dC5u
b3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVCeVZhbCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgYmFzZSwgc3Vic2NyaXB0KSkpOworICAgICAgICBMVmFsdWUgYmFzZTsK
KyAgICAgICAgTFZhbHVlIHN1YnNjcmlwdDsKKworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAg
YmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgYmFzZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bV9ub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKSB7CisgICAgICAg
IGNhc2UgQ2VsbFVzZTogeworICAgICAgICAgICAgc3Vic2NyaXB0ID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Ug
a2luZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVE
ZWxCeTxEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsPihiYXNlLCBzdWJzY3JpcHQpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVBcnJheVB1c2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3Rh
dHMuaAppbmRleCA1ZDMwOTI4ZjRhODViNGFkZTQ0NGM0M2Y1YWRkZjIzMTdmNDI2NWI3Li45MDQw
ZGYzODIwNzY0ZWRmOGQ1MTYxMWY4NjBmYzRkNDI2NTZjMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0lDU3RhdHMuaApAQCAtNzAsNyArNzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNy
byhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1
bXApIFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCi0gICAgbWFjcm8oSW5CeUlkU2Vs
ZlBhdGNoKQorICAgIG1hY3JvKEluQnlJZFNlbGZQYXRjaCkgXAorICAgIG1hY3JvKERlbEJ5UmVw
bGFjZVdpdGhKdW1wKSBcCisgICAgbWFjcm8oRGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMpCiAKIGNs
YXNzIElDRXZlbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDA5
MWM0Zjc4MmEwNzg0ZmM0NTI1ZWQyMDc5NjljZDFiNzg3NDRlODYuLmM2ZTYxYjg5YmY5YTFhMTk1
YzNlODM4NjRjMWNhMTc4NDA4YTViMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTUwMCw2ICs1MDAsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAg
IG1fZ2V0QnlJZFdpdGhUaGlzSW5kZXggPSAwOwogICAgIG1fcHV0QnlJZEluZGV4ID0gMDsKICAg
ICBtX2luQnlJZEluZGV4ID0gMDsKKyAgICBtX2RlbEJ5VmFsSW5kZXggPSAwOworICAgIG1fZGVs
QnlJZEluZGV4ID0gMDsKICAgICBtX2luc3RhbmNlT2ZJbmRleCA9IDA7CiAgICAgbV9ieVZhbElu
c3RydWN0aW9uSW5kZXggPSAwOwogICAgIG1fY2FsbExpbmtJbmZvSW5kZXggPSAwOwpAQCAtNTgw
LDYgKzU4Miw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQor
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGVsX2J5X3ZhbCkKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3N1YikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCkBAIC04NzUs
NiArODc5LDggQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2dldEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZ2V0QnlJZHNXaXRoVGhpcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5s
aW5lQ2FjaGVzKG1fcHV0QnlJZHMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNh
Y2hlcyhtX2RlbEJ5SWRzLCBwYXRjaEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMo
bV9kZWxCeVZhbHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2lu
QnlJZHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNl
T2ZzLCBwYXRjaEJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDdiNDQwNzQ5
NjMzMzZmY2I4OTQxZWJkMDViNTk3MzEyOWE5ZTg2NTUuLjY3MTY2NjFkZjRmYWNlYTVlZmVkNWY1
MTA4MWYwNTliNmQyNTNkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTAwLDcgKzUw
MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfaWRlbnRpdHlfd2l0
aF9wcm9maWxlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1
Zyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VuZChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
QEAgLTkxMyw2ICs5MTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAgICAgICBWZWN0
b3I8SklUUHV0QnlJZEdlbmVyYXRvcj4gbV9wdXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVElu
QnlJZEdlbmVyYXRvcj4gbV9pbkJ5SWRzOworICAgICAgICBWZWN0b3I8SklURGVsQnlJZEdlbmVy
YXRvcj4gbV9kZWxCeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBt
X2RlbEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5z
dGFuY2VPZnM7CiAgICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZhbENv
bXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1fY2Fs
bENvbXBpbGF0aW9uSW5mbzsKQEAgLTkzNCw2ICs5MzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdW5zaWduZWQgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCB7IFVJTlRfTUFYIH07CiAgICAg
ICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWdu
ZWQgbV9pbkJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlW
YWxJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlJZEluZGV4IHsg
VUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXggeyBVSU5UX01B
WCB9OwogICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAppbmRleCA5MjBiNzIwM2UzY2Y0YmYwNmVlZDQ1NzNhMzljYjU2YmNjYTY1ZDVhLi5m
NDExMDIxNzY0ZDk4OTY2MjIzZmUxODIwYTJmMzgzOWFjM2U3YjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAt
MTYyLDYgKzE2Miw2OCBAQCBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0T3B0aW1pemU7CiB9CiAKK0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9z
dHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CisgICAgQVNTRVJUKGJhc2Uu
cGF5bG9hZEdQUigpICE9IHJlc3VsdCk7CisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2Uu
cGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0
eS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CisjaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdH
UFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
bV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9IHByb3BlcnR5LnRhZ0dQUigpOworI2VuZGlm
CisgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsKK30KKwordm9p
ZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYg
aml0KQoreworICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVtcCA9
IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisKK3Zv
aWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQ
YXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAu
bV9qdW1wLmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXplKAorICAgICAgICBmYXN0UGF0aCwg
c2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3Rh
cnQpKTsKK30KKworSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVn
cyBiYXNlLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJs
b2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1
c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9
IHRydWU7CisgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdCk7CisgICAgbV9z
dHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJl
Z3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BS
ID0gcmVzdWx0OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRh
Z0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BS
UmVnOworI2VuZGlmCisgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNo
KTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAgIG1fc2xv
d1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKK30KKwordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1fc2xv
d1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7Cit9CisKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJh
dG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAog
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGJmYjkwMjE2YjI5YzI3ZmZkMGVkOGQ3ZjBmNTg3
ZTA4ZmU2ZTczMTYuLjI2ZTcwMGZiYjdhZDE4M2JlMWFjYmE3M2YzN2Y2ZmI0MmZlZmNkMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKQEAgLTE0Miw2ICsxNDIsNTYgQEAgcHJpdmF0ZToKICAgICBQdXRLaW5kIG1fcHV0S2lu
ZDsKIH07CiAKK2NsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7
CitwdWJsaWM6CisgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5
VmFsR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBzY3Jh
dGNoKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAg
ICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKworICAgIHZvaWQgZmlu
YWxpemUoCisgICAgICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZl
ciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKKworICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0
YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwor
fTsKKworY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVi
bGljOgorICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoKSB7IH0KKworICAgIEpJVERlbEJ5SWRHZW5l
cmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1Bh
dGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1f
anVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5rQnVmZmVyJiBm
YXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CisKKyAg
ICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKKworcHJpdmF0ZToKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307CisKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRv
ciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5l
cmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGUzNjI2NzMyNWM3NGFlMjJmODYxOGVhOWUyYWQwMDJlNDhkYzYzMzQuLjdiZGYxZjcz
MmJmNGUwNWQ5Yjg1Njk2ZWY0Njg0N2YzYjU2MTA3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjE0Miw3ICsyMTQyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKG9iamVj
dC0+aGFzUHJvcGVydHlHZW5lcmljKGdsb2JhbE9iamVjdCwgaW5kZXgsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KICAgICAKLXN0YXRpYyBi
b29sIGRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
c3RhdGljIGJvb2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFs
dWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIxNTAsMzEgKzIxNTAsNTEgQEAgc3RhdGljIGJv
b2wgZGVsZXRlQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgVk0mIHYKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgaWYgKCFiYXNlT2JqKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBjb3VsZERl
bGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpKTsKKyAgICBib29sIGNv
dWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCksIHNsb3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5
RXJyb3IpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAotCi1FbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZt
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpKSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Owor
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgp
OworCisgICAgYm9vbCByZXN1bHQgPSBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgc2xvdCwgYmFzZVZhbHVlLCB1aWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7
CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgdWlkKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
KyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRj
aERlbEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwotICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKKyAgICBEZWxldGVQcm9w
ZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgdm0sIHNsb3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CiB9CiAK
LXN0YXRpYyBib29sIGRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBrZXkpCitz
dGF0aWMgYm9vbCBkZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgVk0mIHZtLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFs
dWUgYmFzZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0yMTkwLDcgKzIyMTAsNyBAQCBzdGF0aWMgYm9vbCBkZWxldGVCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0m
CiAgICAgZWxzZSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkgPSBrZXkudG9Qcm9wZXJ0
eUtleShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKKyAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwogICAgIH0KICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKQEAgLTIxOTgsMjAgKzIyMTgsNDIg
QEAgc3RhdGljIGJvb2wgZGVsZXRlQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJgogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCAgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtleSkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkZWxldGVC
eVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSkpKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworCisgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxs
KCk7CisKKyAgICBib29sIHJlc3VsdCA9IGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCB2bSwgc2xvdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09i
amVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwo
c3Vic2NyaXB0KSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1
YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgICAgIGlmIChzdWJzY3Jp
cHQuaXNTeW1ib2woKSB8fCAhcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAg
ICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBiYXNlVmFs
dWUuc3RydWN0dXJlT3JOdWxsKCkpKQorICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxCeShnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KQorc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRLZXkpKTsKKyAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICByZXR1
cm4gZGVsZXRlQnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBzbG90LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkp
OwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29k
ZWRKU1ZhbHVlIG9iamVjdFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAppbmRleCA2MjEwYzVhMDczNDE5NjgzZDYwZWE4YzQ4Y2Q0M2VlZmY4MmEzMDBjLi42
MDBmY2EyOWRjMjAzODVkYzUwMjIyODAyNTQxMTJjYWMzMWQ2ODQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRTdWJzY3JpcHQsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJn
ZXQpIFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGFyZ2V0KSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0KSBXVEZfSU5URVJOQUw7CitzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGws
IEVuY29kZWRKU1ZhbHVlIG9iamVjdCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBKU09iamVjdCogb2JqZWN0KSBXVEZfSU5U
RVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5hbWVzKEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUyZjcxM2U4YWEwYWZiNWU4
MDVjN2NmM2YxZDM4ODM3MWMyZjYuLjJiYTBmYTY4NDhiY2U4MjlhY2Q2NDE5MDVmMDVmNGJkNTRk
Y2JlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC0zODcsOSArMzg3LDM5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2U7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKwor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CisgICAgSklURGVsQnlJZEdlbmVyYXRvciBn
ZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QwLCByZWdUMik7
CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgIGJveEJv
b2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BE
ZWxCeUlkPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkID0gbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkuaW1wbCgpOworCisgICAgSklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1tt
X2RlbEJ5SWRJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIo
cHJvcGVydHkpLmltcGwoKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCB1aWQpOworICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBK
U1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1Zh
bHVlUmVncyhyZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zOTgsOSArNDI4LDQyIEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgcmVnVDEpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMSwgYmFzZSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDAp
OworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOworICAg
IEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMCwgcmVnVDIpOworICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3Bl
cnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKworICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsSlNSZXN1bHQsIGRzdCwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDAsIHJlZ1QxKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworCisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRj
OGJkYWVlZjE0Yy4uYjY2OWRkOGI3YWQyNmQzZjc3ZDk2ODZkZTYwODM0MzRmMzZkYmM1MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC0xMjMsNyArMTIzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgaW50IHByb3BlcnR5ID0gYnl0ZWNvZGUubV9w
cm9wZXJ0eTsKICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgbV9jb2RlQmxvY2stPmlkZW50
aWZpZXIocHJvcGVydHkpLmltcGwoKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkR2VuZXJpYywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBudWxscHRyLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSku
aW1wbCgpKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
KTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEzMyw5ICsxMzUsMTQgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgZW1pdExvYWQyKGJh
c2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVzdWx0LCBkc3QsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMs
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgbnVsbHB0ciwgSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKSB7IH0KK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikgeyB9CisKIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldEJ5VmFsPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMDg2
OTZiMWYzYTQ4ZmNhYjY3ZGZkZjFkMDgxOTI1ZTM0ZDkxYjc2NS4uN2JmMTEzZWU4MTE3YmRmYjg4
OTYxZTJhMWZkOTQxMTI3YTNhNGE4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
UHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgaWRlbnQsIG9mZnNldCwgb2xk
U3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVB
Y2Nlc3NDaGFpbikpOworICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVh
dGVUcmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwg
bmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3Vz
dG9tKCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CiAgICAgICAgICAgICBpZiAoc2xv
dC5pc0NhY2hlYWJsZUN1c3RvbSgpKSB7CkBAIC03MzQsNiArNzM0LDczIEBAIHZvaWQgcmVwYXRj
aFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTVmFsdWUKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRG
dW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZURlbEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisKKyAg
ICB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2ssIGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKworICAgICAgICBpZiAoZm9yY2VJQ0Zh
aWx1cmUoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwor
CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUpOworICAgICAgICBpZiAoIWJhc2VWYWx1ZS5p
c09iamVjdCgpIHx8ICFvbGRTdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIGlmICghc2xv
dC5pc0NhY2hlYWJsZURlbGV0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisKKyAgICAg
ICAgaWYgKHNsb3QuaXNEZWxldGVIaXQoKSkgeworICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQg
bmV3T2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdT
dHJ1Y3R1cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNl
dCk7CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gUmV0cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSB8fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgQVNT
RVJUKG5ld09mZnNldCA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIEFTU0VS
VChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQodm0pID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkp
OworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQpKTsKKyAgICAgICAgICAgIG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywgQ2FjaGVhYmxlSWRl
bnRpZmllcihwcm9wZXJ0eU5hbWUpLCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0
dXJlKTsKKyAgICAgICAgfSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewor
ICAgICAgICAgICAgaWYgKHNsb3QuaXNOb25jb25maWd1cmFibGUoKSkKKyAgICAgICAgICAgICAg
ICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6
OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZSwgQ2FjaGVhYmxlSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUp
LCBpbnZhbGlkT2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIHsgfSwgbnVsbHB0cik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwg
Y29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzLCBDYWNoZWFibGVJZGVudGlmaWVyKHBy
b3BlcnR5TmFtZSksIGludmFsaWRPZmZzZXQsIG9sZFN0cnVjdHVyZSwgeyB9LCBudWxscHRyKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CisKKyAgICAg
ICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVs
QnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIHByb3BlcnR5TmFt
ZSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OworICAgICAgICB9CisgICAgfQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZO
ZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVz
dWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsK
K30KKwordm9pZCByZXBhdGNoRGVsQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNl
VmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCit7Cisg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYg
KHRyeUNhY2hlRGVsQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwg
b2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNh
Y2hlKSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMs
IGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgcHJvcGVydHlO
YW1lKSk7CisgICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CisgICAg
fQorfQorCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwKICAgICBib29sIHdhc0ZvdW5kLCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKQEAgLTEz
OTEsNiArMTQ1OCwxNSBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAor
dm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQoreworICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6
Tm9ybWFsKQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsK
KyAgICBlbHNlCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXpl
KTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZv
LnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxl
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggNmYwZjI2
NDExZWNkZWExOTJiNzA2MjEwZThhOTk0NGJiNGY5ZmUzOS4uYzFkOTk1OWFkYWZkMzY1NzYyZTg5
MTc5YWIzYzBlZWQ2NmU1ODdkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAg
LTQxLDkgKzQxLDE1IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKICAgICBEaXJlY3QKIH07CiAK
K2VudW0gY2xhc3MgRGVsQnlLaW5kIHsKKyAgICBOb3JtYWwsCisgICAgTm9ybWFsQnlWYWwKK307
CisKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIENhY2hl
YWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwg
R2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJv
cGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKK3ZvaWQgcmVwYXRjaERl
bEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNW
YWx1ZSwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIFN0cnVjdHVyZVN0dWJJbmZvJiwg
RGVsQnlLaW5kKTsKIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9m
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90
b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtGb3Io
Vk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2Fs
bGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwpAQCAtNTMsNiArNTks
NyBAQCB2b2lkIHVubGlua0ZvcihWTSYsIENhbGxMaW5rSW5mbyYpOwogdm9pZCBsaW5rUG9seW1v
cnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ2Fs
bFZhcmlhbnQpOwogdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZv
JiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJik7Cit2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlvbkNhbGw8SlNJ
bnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVu
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKaW5kZXggYjkxMWVlMjc4MjYyNjZjNzNmNzZlMDk1NTQyYWRjNjU5MjUwOGM2ZS4uMmJmZmMz
ODE2M2ZlMzFiZTk0MWJlZDZhNWZiNTZkMjk4YmViNjIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC05MjUsNyArOTI1LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCkKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wRGVsQnlJZD4oKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwor
ICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvcikpOwpAQCAt
MTEwOCw3ICsxMTA4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92
YWwpCiAgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICBhdXRvIHByb3Bl
cnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5KTsKKyAgICAgICAgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5
KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOwogICAgIH0KICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKaW5kZXggZmZiM2ViOWQwMDVj
ZjZmZDA4ZmZkMmJiODhiOWQ1ODdiYWVkMGZmNi4uMTA3YjVkNjA3MjAzNzA1MWY2YTdjMWU5Y2Iw
YzE1ZjI2NTg5NzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCkBAIC00Miw2ICs0Miw3IEBAIGlu
bGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFibGVJZGVudGlmaWVyKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyOjpDYWNoZWFi
bGVJZGVudGlmaWVyKEpTQ2VsbCogaWRlbnRpZmllcikKIHsKKyAgICBBU1NFUlQoaXNDYWNoZWFi
bGVJZGVudGlmaWVyQ2VsbChpZGVudGlmaWVyKSk7CiAgICAgc2V0Q2VsbEJpdHMoaWRlbnRpZmll
cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNz
SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXgg
ZmU2YzZiN2Q4NGM0N2VkZWUxMWFhYzExZjY0ODRhNzJkNDE3YmM0Ni4uN2E1OWI4ZmRiMGMyMmNj
YmJkMjhkODAzMWRhOGExN2VlMDUzNzIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAg
ICB1c2luZyBQdXRCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJv
dyk7CiAgICAgUHV0QnlJbmRleEZ1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShwdXRCeUlu
ZGV4KTsKIAotICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIgPSBib29sICgqKShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgdXNpbmcgRGVsZXRl
UHJvcGVydHlGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBEZWxldGVQcm9wZXJ0eUZ1
bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShkZWxldGVQcm9wZXJ0eSk7CiAKICAgICB1c2lu
ZyBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggYzRmNzRjMGMzOTA4ODkwMTQ4NWVlM2Qy
YjFkNWY1YWFhYzE5ZDg3ZC4uOGRkZDk4YTFiZmIwZmVjMTVhN2Q3MzJhY2MzYzJjZWY4NWQwNDBi
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmEKICAgICBy
ZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBz
bG90KTsKIH0KIAotYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50KQor
Ym9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0
PENsb25lZEFyZ3VtZW50cyo+KGNlbGwpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTIyOSw3ICsyMjksNyBAQCBib29sIENsb25lZEFyZ3VtZW50czo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB8
fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhp
c09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCk7CiAg
ICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgaWRlbnQpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKIH0KIAogYm9vbCBDbG9uZWRBcmd1bWVudHM6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAppbmRleCBmZDNhMjdiZjczNTU0ZDVlZTRhNmUzMWQw
YmEwY2FkMTU3NjA1ZmY1Li4wMGM1MzQ3NTYwNWE3M2IyYjNlYjM4ZDNjZjgxMzI4ODM0ZmYxYmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
aApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIAogICAgIGJvb2wgc3BlY2lh
bHNNYXRlcmlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJj
M2EyNzE5YzJhOTM1M2U3ZDc1MjFhODc5YmQxMmQ3NDAwNjkuLjQ0ZDhmYjRiNDIyYTkyZDAzYjgx
YWIwYWYxOGQ0ZjY1YjFlOGM4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtOTg1LDcgKzk4NSw3IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eSk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gSlNDZWxsOjpkZWxl
dGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5KTsKICAgICB9CiAg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlbGV0ZVByb3BlcnR5U2xvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDZmNmI0ODAwZWY1
Nzg1NjFjYWVkYzlkZGJiYzgyZjI1MzJlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWxldGVQcm9wZXJ0eVNsb3QuaApAQCAtMCwwICsxLDgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNs
b3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Qg
eworcHVibGljOgorICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hlYWJsZSwgRGVsZXRl
SGl0LCBDb25maWd1cmFibGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUgfTsKKworICAgIERl
bGV0ZVByb3BlcnR5U2xvdCgpCisgICAgICAgIDogbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKKyAg
ICAgICAgLCBtX2NhY2hlYWJpbGl0eShDYWNoaW5nQWxsb3dlZCkKKyAgICAgICAgLCBtX3R5cGUo
VW5jYWNoZWFibGUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlTWlz
cygpCisgICAgeworICAgICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxldGVNaXNzOworICAg
IH0KKworICAgIHZvaWQgc2V0Tm9uY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAgICAgIG1fdHlw
ZSA9IE5vbmNvbmZpZ3VyYWJsZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhpdChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpCisgICAgeworICAgICAgICBtX3R5cGUgPSBEZWxldGVIaXQ7CisgICAgICAg
IG1fb2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKworICAgIGJvb2wgaXNDYWNoZWFibGVEZWxldGUo
KSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBVbmNhY2hlYWJsZTsg
fQorICAgIGJvb2wgaXNEZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRGVsZXRl
SGl0OyB9CisgICAgYm9vbCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsgfQorICAgIGJvb2wgaXNOb25jb25m
aWd1cmFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmlndXJhYmxlOyB9CisK
KyAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fb2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQorICAg
IHsKKyAgICAgICAgbV9jYWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dlZDsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVh
YmlsaXR5ID09IENhY2hpbmdBbGxvd2VkOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKKyAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OworICAgIFR5cGUgbV90eXBl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGYxODIxZDU1NmEzZDQwNDQ5MzY3
NWVhZTI1ZmEyZTQ2NjczZWM0M2EuLjY4NWM3YWNiYzExYzYyZDIzMzc3ZDMyYzRkZTlhMjBiNjU4
NzhhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8RXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpAQCAtOTUsNyArOTUsNyBAQCBib29sIEVy
cm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+c3RhY2tUcmFjZUxpbWl0KQogICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+
c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CiAKLSAgICByZXR1cm4gQmFzZTo6ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAg
IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDkzZDUyNzE0
ODZmNjZmZGU3NTNlNDlhNDAxNmYxNjgzOGU5NzU3MjEuLjlhNWE0NjMyMWIzZGJiNzY0YzJhMWI1
MjFkOTI2OGY4ZDE0MzUzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBFcnJvclByb3RvdHlwZSopOwogCiAgICAgc3RhdGljIGJv
b2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVBy
b3BlcnR5U2xvdCYpOwogCiBwcml2YXRlOgogICAgIEVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAKaW5kZXggZmQ0OGJiZjM0YzMwNDMwZDJlNzBkZTU3NDk4ZTliNTFlNmFjMjQ0ZC4uMWQ1
MGNkMTc0ZmM0N2Q5MjIxNzE4OGUzMjVmZjU3YWU4ZDE1YjgxYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTI5NywxMiArMjk3LDEy
IEBAIGJvb2wgRXJyb3JJbnN0YW5jZTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1ib29s
IEVycm9ySW5zdGFuY2U6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgRXJyb3JJ
bnN0YW5jZTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEVycm9ySW5z
dGFuY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGNlbGwpOwogICAgIHRo
aXNPYmplY3QtPm1hdGVyaWFsaXplRXJyb3JJbmZvSWZOZWVkZWQodm0sIHByb3BlcnR5TmFtZSk7
Ci0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aAppbmRleCBmMWZhYzU5NjgyZDllMDI2NTA4Y2I0ZmY4YzliMjY3YjRlZTc2ZTg3Li40MDA2MDhk
MDhhODM0Y2QzMWU2MTJlNzNhYjUzMWNiMGEzY2ExMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7Cisg
ICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCBjb21wdXRlRXJy
b3JJbmZvKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHMuaAppbmRleCBjZTEwZjdmZTQ4NzNlNGE0N2JlMTQxZTI1NTY5YWQ2NDhhZmY5
ZDI4Li40NzEyMTY3MzAzNjQ4MjhmZTI3NzBlMjM0ODY5YWNlNzA5MDhkMWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCkBAIC01MCw3
ICs1MCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9v
bCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCBiODM3ZWMxYmI0MzBmNmQ1OGIx
ZDViMTE1ZGE1MTNjNWJjYzBiZjUzLi5hNWE5ZWNiMzIyYTIwZGE4ZmUyNDMzZmZkNTQ3YTc4YWZj
NjAyY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
QXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAgYm9vbCBHZW5lcmlj
QXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm8KICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOworCisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpw
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CkBAIC0xNTgsNyAr
MTYwLDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4KLWJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQp
Citib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBEZWxl
dGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxU
eXBlKj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTc1LDcg
KzE3Nyw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbmRleCkpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5oCmluZGV4IDAzNDg3ZjYxZTBmMmZjNzUxYmE3MDNiNzBjYTM2ZDAyMjIxNjM0ZGUu
LjYwMWYxZTQ5ZjE1Y2Q1MDFhMGUwYTc1ZWUyODUwNmYzMmIwZGIzYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC0xMjcsNyArMTI3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jikg
eyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0
ZToKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2V0dGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA2ZDA3NTkxNzExZWVkYmMyOGUwZTRkYTc4
NDk4MjJhYjhkNjZmNWQxLi5iY2UzNjU1YTMxOTJlYTI5MGZlN2YwNDA4MjRhMzg4NmY2YjA0ODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzA2LDcg
KzMwNiw3IEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK2Jvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwpA
QCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzRm9yUVNvcnQoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9p
ZCogYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAzMTE2NWI1
ZmY0OTI1NGNjMWE2YzQ3OTAyYjc5MTBhYzRhN2Q5YmZmLi5jZGMzOWI1MTJkN2VlM2ExNWNmMWFl
YzJlMGEyZDkzZDlhYWFkMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZmUwMTgwZGQ2MGMzZDFiYjYwZjhiNTMzYjE4
NjA1OGVlYWQ4MWI3NS4uNTg2YWYzZmFiMzc5NTJlM2ZkZTFjZTQ3MGM5OWFiMWVkYzRhNzQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtNDAsNiAr
NDAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKK2NsYXNz
IERlbGV0ZVByb3BlcnR5U2xvdDsKIGNsYXNzIEpTQmlnSW50OwogY2xhc3MgQ2FsbEZyYW1lOwog
Y2xhc3MgSlNDZWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5k
ZXggMjcxMzUyYjIxNzQ3MDM1NmRmNDAzZmRkOWNkZTYwZGVmODg4MTYwNy4uMjRlZDY1MjMzNzky
MzRlYjBjMThiMDZmMDI2NDE3OTFkOGM4MDY0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCkBAIC0xMjYsMTAgKzEyNiwxNyBAQCBib29sIEpTQ2VsbDo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IGlkZQogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwogfQogCitib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgRGVsZXRlUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpZGVudGlmaWVyLCBzbG90KTsKK30KKwogYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IGlkZW50aWZpZXIpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVj
dChnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9i
YWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXIpOworICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIsIHNsb3QpOwogfQogCiBib29s
IEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggZDU2NTZmOGJmZGZmNjMyOTkyYWMxZGE0NTFlMzVjMWE1
NDhkNDY3ZS4uMTA2NzQ5ZGUzY2UxNWY0M2UyMzlkYTFiZmUzMzJjNzIzMTFhYWRmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTE4MSw3ICsxODEsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAg
Ym9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IERlbGV0ZVByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RhdGljIEpTVmFsdWUgdG9U
aGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCAxNDZhOTEzMmQ0NzM1MjQyYzEw
NmU2NTU2NDc3OGUxN2VkN2JhYjhjLi4xYjI1NTIzYzk4ZmJiMDllMzdmOGE0NzQzMTliZjc2YzMy
ZDhhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNw
cApAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5lT3duUHJvcGVydHko
CiB9CiAKIGJvb2wgSlNEYXRhVmlldzo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQorICAgIEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRGF0YVZpZXcqPihjZWxsKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEpTRGF0
YVZpZXc6OmRlbGV0ZVByb3BlcnR5KAogICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+Ynl0ZU9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTRGF0YVZpZXc6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcygKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuaAppbmRleCA4NjQxMGU2MWFkN2U5MWQ4MmE2N2U5N2VmYmI0ZjMyZjFiYzEy
ZTc4Li45OGE4Y2M4YjM5OGZmZGQ3YTFjOTRiZTY1N2Y2NTVlNmNjN2I5ZjcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC03Miw3ICs3Miw3IEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZWU4NWVlMDY0NmM5ZGRhZjllNmU5N2FmMTdiOWY5YzAz
NzdkMThlMC4uOGI4ZDUwNjUzNmU1M2Y5MjhiYzM2OWQyZWJmZDVhNjMwYjA4NmI4NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTU4Niw3ICs1
ODYsNyBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTYxNyw3
ICs2MTcsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcAogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7
CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGFk
ZGRlMmFjMDNhNDEwYzcwOGE3OTM0YjVhNWQwNjg5Y2ExZmZhY2QuLjE4YWI0NzU0M2ZkNzgyOTc4
YWZlYTk3MmM4YzlhYzZkODcwMmNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29s
IGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZjA4Zjg1MjQ2OWJlZmQ2
YzVhZDQzYWYyYTUwMDkyYmVlZmUyYjM5YS4uM2I3YmJkZTc2NWNlMWMzNTY1NTBlY2Q1OGI3N2Zl
ZDlkNjEwNmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMDUsNyArMzA1LDcgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBw
dXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVs
ZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAwY2FmYmQyNzZjZjc0ZDBj
ODVlZjhiZTdkYmU0MDNkM2M3NjRiMzQyLi4xYTBjZjU5ZmZmZDNjMGEzYTNkZjI2NTNlYTEzM2E4
NThlNDYwMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNDM4LDcgKzQzOCw3
IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlZmluZU93blByb3Bl
cnR5KAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCi0gICAgSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorICAg
IEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBCYXNlOjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0
dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTQ4NCw3
ICs0ODQsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoCiAgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwotICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1l
KSk7CisgICAgcmV0dXJuIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCBiM2M5ODBhNDY2MmFlZWVhMTI0MGE1NjZjNWQ0YTE4YTkyODcx
ZjdlLi5mZTIxN2ZiMGNhYjUzMGZlMzBhYTliMTk4ZTNmNzllMjA1YWU0ZDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMzE0
LDcgKzEzMTQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJgogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgbWV0
aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CiAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmNwcAppbmRleCBmMzQ1YzUwMjdhYmE5NDA4NDQ3MWUzMWI3YjhkN2VlMmEyZjg4NzEzLi45NzRi
OTJiNTRlMWEzMzgzMTY5ZGVmYWIyYTlhN2RkZTY0NmRhMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0x
MjcsMTMgKzEyNywxMyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIHJldHVybiB0aGlz
T2JqZWN0LT5wdXRPd25EYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKIH0KIAotYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0u
cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5k
ZXggZDAxM2I1MWVmYTI5N2ViZjAzY2E0MjQwMDE3YTY3YWNjMTNiOTM5Ny4uMDVlNGU2NWMyZGQ0
OTNmZjdhNGUzMWE0ODI2YjcwYzI1MGM1NzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAgICBERUNMQVJF
X0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZmViNTUxMDg3NDgwMzkwZDM0MDllNmNhYTk0ODAwYjcy
OWY3YzczZC4uODU4YTk0MmZlNzM1NWNmOGMxMTgwNWE4ZDA1ZTA2NTNmOGEyMTgzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCi1ib29sIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNNb2R1bGVFbnZpcm9u
bWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIEpTTW9k
dWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAg
ICBpZiAocmVzb2x1dGlvbi50eXBlID09IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9u
OjpUeXBlOjpSZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNl
OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7
CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5k
ZXggZGFlYWI2NjJmYzA0ZGFiZGQyNmQxNDE0NWYzNmViMTdlMjc5MmE3OS4uMDEzMGY4N2ZiOThi
YjJhODJkYWEyOWE1OTYzNTJlNzE5YmI3ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29s
IHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmKTsKIAogcHJpdmF0ZToKICAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3Ry
dWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXgg
MmJkYjEzMDVlYjBjNGJlOTYwODA2NWJkMzQ4NTljN2FmMTQ4YjJhMS4uMWZjNmEyNjViOGNhNjVh
ZDExOTAyZjVkMDEzZWQ2NWQ4NjU2MTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtMTk5LDEy
ICsxOTksMTIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQorYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2Ut
ZXhvdGljLW9iamVjdHMtZGVsZXRlLXAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOwogICAgIGlm
IChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4
cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmluZGV4
IDhlZWY2MjFlM2I4NGZhNjYyOGNmYTJmODE0ZGE2MjhmMDY3ODdkMWQuLjgxMTM2NGRkMTdhMTNl
N2VmYmZjZjFjOWUyODYzMGUyNDJhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1
dEJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGQwZDE3MjFjZjFkZWI4MzNmOWNi
MDFlMmJmMzIxYjA2ZWQ0MTk2YzkuLjk5YjNkMDg4ZGI0YzllZjJjM2ZmMDU4NmRmN2Q2YmRkMzFm
ZjRhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CkBAIC03NjAsNyArNzYwLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpT
VmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUg
PSBjYWxsUmV2aXZlcihvYmplY3QsIGpzU3RyaW5nKHZtLCBwcm9wLnN0cmluZygpKSwgb3V0VmFs
dWUpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVj
dCwgbV9nbG9iYWxPYmplY3QsIHByb3ApOworICAgICAgICAgICAgICAgICAgICBKU0NlbGw6OmRl
bGV0ZVByb3BlcnR5KG9iamVjdCwgbV9nbG9iYWxPYmplY3QsIHByb3ApOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1
dChvYmplY3QsIG1fZ2xvYmFsT2JqZWN0LCBwcm9wLCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKICAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDNhNTEyMWQ2OWRmYjRmYjJm
YjlmODg1Y2E3ZmYzZmU1NWMwNGRkODAuLjQ1ZjQyMzZhMWJiNzc0ZWJiNTIzMDc3MjZlN2VmZGZl
ODRiYWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
QEAgLTE5NzIsNyArMTk3Miw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5R2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0CiB9CiAKIC8vIEVD
TUEgOC42LjIuNQotYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmpl
Y3QqPihjZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xOTk5LDgg
KzE5OTksMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAogICAgIGJvb2wgcHJvcGVydHlJ
c1ByZXNlbnQgPSBpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMpKTsKICAgICBpZiAocHJvcGVydHlJc1ByZXNlbnQpIHsKLSAgICAgICAgaWYg
KGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSAmJiB2bS5kZWxldGVQ
cm9wZXJ0eU1vZGUoKSAhPSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpCisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgJiYgdm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6
SWdub3JlQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBzbG90LnNldE5vbmNvbmZpZ3VyYWJs
ZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZp
cmUodm0sIHN0cnVjdHVyZSk7CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKQEAgLTIwMDgsNyArMjAxMCw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
CiAgICAgICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgW10oY29uc3QgR0NTYWZlQ29uY3VycmVudEpTQ2Vs
bExvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVk
V2F0Y2hwb2ludEZpcmUpOwotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5
ICYmICFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5k
ZXhpbmdIZWFkZXIodGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNl
dCk7CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1
cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJ
RCgpLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0Owog
ICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRP
ZmZzZXQpOwpAQCAtMjAyMCw3ICsyMDI0LDggQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKIAog
ICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5jbGVhcigpOwotICAgIH0KKyAgICB9IGVs
c2UKKyAgICAgICAgc2xvdC5zZXRDb25maWd1cmFibGVNaXNzKCk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTIwMzEsNyArMjAzNiw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICAKICAg
ICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpKSk7CisgICAgICAgIHJldHVybiBKU0NlbGw6OmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSkp
OwogICAgIAogICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdNb2RlKCkpIHsKICAgICBj
YXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKQEAgLTM2MjUsNyArMzYzMCw3IEBAIGJvb2wg
dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCoKICAgICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkg
Y2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAo
ZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50
LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRv
cihnbG9iYWxPYmplY3QsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlw
dG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAg
ICAgIH0KQEAgLTM2NDEsNyArMzY0Niw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAg
ICAgaWYgKCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0
LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVz
T3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM2NjUsNyAr
MzY3MCw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZ2xvYmFs
T2JqZWN0LCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRy
aWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KQEAgLTM3
MTgsNyArMzcyMyw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKIAogICAgIEdldHRlclNldHRl
ciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
Z2V0dGVyLCBzZXR0ZXIpOwogCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIEpTQ2VsbDo6
ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIHVuc2lnbmVkIGF0dHJzID0g
ZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7CiAgICAgb2Jq
ZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
U2V0dGVyLCBhdHRycyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2NTExNjBiZTBiMDE3ODcwY2U5MDk2
YmY5MmE1NWRjZjBlNmNkYmJlLi42YmRhOWUxZTA3ZTc5OGZiOTIzNDgzNzcyZjA3YjdmNmNkYzAx
NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRl
ICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5k
ZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC02MjMsNyArNjI0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmpl
Y3QqLCB1bnNpZ25lZCkgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAppbmRleCA5YzQ3OTM0ZTRhM2Q5MTk5ZmE5
ODQyZGQwNTJjZTg4ZDI0MTUyYWMxLi5kMGJiYzJjNWEyZDIyMTkxMjdjZDk5YjMwMjA5MzA4ODcy
MTIzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcApAQCAt
OTEsMTAgKzkxLDEwIEBAIGJvb2wgSlNQcm94eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gdGhpc09i
amVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlZmluZU93
blByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCi1ib29sIEpTUHJveHk6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRh
cmdldCgpLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LT50YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgp
KS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Byb3h5Ojppc0V4dGVuc2libGUoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJveHkuaAppbmRleCAzNTFlNjY4ZDI1OTBkOWI5N2M4ZjRiYmEyYmZm
YjQwMGRiM2YyMTA5Li41YmU3YmYwZDJlNWE4YjMyYzc5NGMwYjI1ODk1Nzk4ZmM1ZjllZjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCkBAIC05Myw3ICs5Myw3IEBA
IHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJv
cGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDYzMGUxYjc4YmIyMDZlN2Fm
NjE3YzNjNjgyYzM0ZjVlMTc1NWY1ZDUuLjEyNWY2YzMxNTBlOTZhZWNkNTM3NDczMWZkYThkOWE3
YmFmYmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgdm9pZCBKU1N5bWJvbFRh
YmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7CiB9CiAK
LWJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQor
Ym9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhp
c09iamVjdC0+c3ltYm9sVGFibGUoKS0+Y29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQogCiB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKaW5kZXggYzdjMWUyMGE2NTQ3NmJjNzA2OGVlNjNkZWQ5OGIzMzVkZjczNmIyMS4uYjU2OGU4
ZjkyYTk4M2ZiNGNjMjAzYTdhMDYyMTgwYWU0ZmU1OTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJl
dHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mU3ltYm9sVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTeW1ib2xUYWJsZU9i
amVjdCwgbV9zeW1ib2xUYWJsZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcAppbmRleCBiNjUyMDIyMWE4MTU5OGZmZWYyYTVlMTRhODBmZDRlNTRk
YzY5YzZlLi5iMDdlMGEwMjkzMzI4MjYxMDM2ZjQxMTA2ZWVlZTllNWY5MGM2NjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCkBAIC02ODUsMTIg
KzY4NSwxMiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIFBy
b3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9i
amVjdCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHREZWxldGUgPSBbJl0gKCkgLT4g
Ym9vbCB7CiAgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzT2JqZWN0LT50YXJnZXQoKTsK
LSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+
ZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0
ZVByb3BlcnR5KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
IH07CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1EZWxldGUoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDE3Y2EyOWZiMGEzZmRkYmE3MWViNjgy
NDljMDk5Y2EyOGEzZDYyZWQuLmVlNWJkOTA1OGNmYTgxOGE0Njc0YTUyMmJmNjBhMmNhMDllYWMx
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwog
ICAgIHN0YXRpYyBib29sIHByZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2libGUoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAKaW5kZXggNDZkY2I3NTA2ZGE1NzBlNGM5N2ViOTNhMDljMDA0ODFhNTE1MzgyNy4uMWNlMWI0
YzMzYWFmMWE0NWRmMDcyNDFmNGRkMzBjNjdkNjdhMmViYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC03MSwxMiArNzEsMTIgQEAgYm9v
bCBSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1ib29sIFJl
Z0V4cE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBSZWdFeHBPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAocHJvcGVydHlO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxhc3RJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBSZWdFeHBPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCmluZGV4IDVlOTllYjM4YjcxM2E5NDI2MzcxOTFhODlmMGI3Yzk2YzVmYmI3MTQuLjg1
N2NhMmU3MmFmMzQwZWFlMzY1NzAxZDU1Y2EwN2VkODNlMGIxODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBtX3JlZ0V4cEFuZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0g
KG1fcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcgfCBsYXN0SW5kZXhJc05vdFdy
aXRhYmxlRmxhZyk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVy
YXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0R2Vu
ZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcAppbmRleCA1MTU3NTI3NjVlY2Iw
MmQxOWMwNDBlOWYyMWI5NjQ5Zjc1MTdiOTQ3Li41MWRiYzY3YzU3ZjgxNTYxZmE3OGQxOTRlZmFm
MDQ5YzA3YThhZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIFN0cmljdEV2YWxB
Y3RpdmF0aW9uOjpTdHJpY3RFdmFsQWN0aXZhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1Njb3BlCiB7CiB9CiAKLWJvb2wgU3RyaWN0RXZhbEFjdGl2YXRpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKQorYm9vbCBTdHJp
Y3RFdmFsQWN0aXZhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmgKaW5kZXggY2RjYzIxYjdlNWZhN2IxMDk2YjI2ZDE4NzA3NGNiZjE3ZWI4M2My
OS4uMjQxNTQ1ZTgxNjkzNjJiZjY5MjBhOTE5YjhmZTBmZGJiN2ExMDA3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNjb3BlOwogICAgIH0KIAot
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NzdiOWNhZmIzZmEw
MDhmMGY3MDU2OGI2ZGI2ZjRhMTUxODZkMDZlLi40ODZkZDkyNzNiNzUwNThhNDdmNzY5YTNmY2Y4
Nzc1ZTY5MGNkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRp
b24pKTsKIH0KIAotYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNl
bGwpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByCiAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
IChpbmRleCAmJiB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4
LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCB1bnNpZ25lZCBpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuaAppbmRleCBhMzQwNTgxNzg5MzRkODUyNTBhY2IzYTNlNGRhMzUyZjIyNzg2NTIzLi42OWYy
NmI3ZDcyNGJiZWY3MzIzMzE5NDdlODBiN2M3ZmFmY2Y4ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA2NGM4MDBiNjE5
YTQ5Nzk1YWViMGUxNDM1ZDNiYjdmNDQ3MTA5ZWI3Li44MzJjZTQ0YWJlNGNhYWE2Yjc0MmZmOWFi
MGVjNjAwYzc0NzY0OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKQEAgLTUzOSw4ICs1MzksNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3
UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zm
c2V0JiBvZmZzZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBk
ZWZlcnJlZCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBpZiAobmV3U3RydWN0dXJlKQogICAg
ICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01NDgsMTYgKzU0NywxMyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBybwogICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCwgZGVmZXJyZWQpOwogfQogCi1TdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQs
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKikKK1N0cnVjdHVyZSog
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJ
bXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQogewotICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpKTsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hl
YWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAK
LSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpOwotCiAgICAgY29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IGZh
bHNlOworICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgaWYgKFN0cnVjdHVyZSogZXhp
c3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVy
dHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkgewogICAgICAgICB2YWxpZGF0
ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdU
cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdU
cmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01NjcsMTEgKzU2MywzMSBAQCBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlKFZNJiB2bSwgU3RydQogICAgIHJldHVybiBudWxscHRyOwogfQogCitTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eU9mZnNldCYgb2Zmc2V0KQoreworICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsK
KyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBpbnZhbGlkT2Zmc2V0
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgb2Zmc2V0KTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQm
IG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc3RydWN0
dXJlLT5nZXRDb25jdXJyZW50bHkocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzKSA9PSBp
bnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDb25jdXJyZW50SlND
ZWxsTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPmNlbGxMb2NrKCkpOworICAgIHJldHVybiByZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworfQorCiBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQs
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsK
KyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOwotICAgIEFTU0VSVCghU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQsIGRlZmVycmVkKSk7CisgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHByb3BlcnR5TmFt
ZS51aWQoKSkgIT0gaW52YWxpZE9mZnNldCk7CiAKICAgICBpbnQgdHJhbnNpdGlvbkNvdW50ID0g
MDsKICAgICBmb3IgKGF1dG8qIHMgPSBzdHJ1Y3R1cmU7IHMgJiYgdHJhbnNpdGlvbkNvdW50IDw9
IHNfbWF4VHJhbnNpdGlvbkxlbmd0aDsgcyA9IHMtPnByZXZpb3VzSUQodm0pKQpAQCAtMTIwMyw3
ICsxMjE5LDcgQEAgUmVmPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hh
cGUoSlNWYWx1ZSB2YWx1ZSwgYm9vbCYgc2F3UG9seVByb3QKIAogdm9pZCBTdHJ1Y3R1cmU6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoUmF3UG9pbnRlcih0
aGlzKSwgIjpbIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOworICAgIG91dC5wcmlu
dChSYXdQb2ludGVyKHRoaXMpLCAiOlsiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGlkKCkpKSwgIiwgIiwgY2xhc3NJbmZvKCktPmNsYXNzTmFtZSwgIiwgeyIpOwogICAgIAog
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKaW5kZXggNTM4NDRiOTFhNmVlOWYxNDZjZjg0NGRkMDA1NzU4ZTZmY2M3
NDYzNS4uMzIwYTQ3YTdiODM0NTlhMmI4ZDk3YjIxZDQ0NTdhMTgxYWEyOGVlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNp
bmNsdWRlICJEZWxldGVQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBAIC0xOTIsNyAr
MTkzLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
ID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eU9mZnNldCYsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90
b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUsIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYsIFN0
cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNp
dGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiA9IG51bGxwdHIpOwpAQCAtNTMwLDYgKzUzMiw3IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKKyAg
ICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsK
ICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QpOwogCkBAIC04MTEsNiArODE0LDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChT
dHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
cm9wZXJ0eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogCiAgICAgLy8gVGhpcyB3
aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFzIGEgdXNhYmxlIHByb3BlcnR5IHRhYmxl
LCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFuZCB0aGUgbGlzdCBvZiBzdHJ1Y3R1cmVz
IHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRvIGl0LiBJZiBpdCByZXR1cm5zIGEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRl
eCAyM2Q3OGZjYjkxNDJmOTUwMjdiZDcyN2Y4NWM0YmQxN2YwYzkxNzMyLi4zZGMxN2I3MzM1OTk0
ZTgzZTExMTAyZDBlOWVjYWIwZDZlNDk4MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNTIsMTAgKzI1MiwyMyBAQCBpbmxp
bmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkg
Y29uc3QKICAgICAKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZSht
X2Jsb2IudHlwZSgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVy
biBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3Rl
ZnVsVHlwZWRBcnJheTsKIH0KIAoraW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhp
bmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3QKK3sKKyAgICBtdXN0Q2hlY2tDZWxs
ID0gZmFsc2U7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlU
eXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IG11c3RDaGVja0NlbGwgPSB0cnVlOworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOGI4NDZiYTU5YTUx
M2Y4YWM0NWNjZDYwYjIyNzI1MDhlMWJiNzJhOC4uOTEyMWJjNjYwODk0ZDI5NmZiZmE0ZTBkMjhj
NzhhMTg2YWZhNWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFT
SCBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKQorICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5
U2xvdCYpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KQEAgLTI4NTAsNiArMjg1MCwxNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkdldENvbmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBKU09iamVjdCogdGFyZ2V0ID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdGFyZ2V0KTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmdW5jdGlvbi0+YXJlTmFtZUFuZExlbmd0aE9yaWdpbmFs
KHZtKSkpOworfQorCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
ICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMjk4Myw2ICsyOTkyLDgg
QEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgYWRkRnVuY3Rp
b24odm0sICJnZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCIsIEpTRG9sbGFyVk1IZWxwZXI6OmZ1
bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3QsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZt
LCAiZ2V0Q29uY3VycmVudGx5IiwgZnVuY3Rpb25HZXRDb25jdXJyZW50bHksIDIpOwogCisgICAg
YWRkRnVuY3Rpb24odm0sICJoYXNPd25MZW5ndGhQcm9wZXJ0eSIsIGZ1bmN0aW9uSGFzT3duTGVu
Z3RoUHJvcGVydHksIDEpOworCiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0
Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVF
ZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBqc051bGwoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
cGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCBjYjhkM2JiMDMwNTI4
OTEwOGE4ZDg4MWYwMDIzMTQ2ODQzMmZhY2YwLi40NTg1YjEwMGFjN2RhOTQ4MjE0YWQ4YzhmZmJi
MjE5NGFhYzcwZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQgPSAxKQogICAg
IHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBpZiAoIWNvdW50KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJU
eXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKQEAgLTU4LDYg
KzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIENvdW50ZXJUeXBlIGdldChjb25zdCBUJiBrZXkp
IGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CiAgICAgICAgIGlmIChpdGVyID09
IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02Niw4ICs2OCw2IEBAIHB1
YmxpYzoKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUo
KTsgfQogICAgIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsg
fQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgY29uc3Rf
aXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICAKQEAg
LTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQgZnJv
bSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KICAgICBWZWN0b3I8S2V5QW5kQ291bnQ+
IGJ1aWxkTGlzdCgpIGNvbnN0CiAgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgICAgIFZlY3RvcjxLZXlBbmRDb3VudD4gbGlzdDsKICAgICAgICAgZm9yIChjb25zdF9p
dGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQogICAgICAgICAg
ICAgbGlzdC5hcHBlbmQoS2V5QW5kQ291bnQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSkpOwpAQCAt
MTA2LDE3ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBjbGVhcigpIHsgbV9tYXAuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXIo
KQorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX21hcC5j
bGVhcigpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAg
IHZvaWQgcmVtb3ZlSWYoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIExv
Y2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9tYXAucmVtb3ZlSWYoWyZmdW5jdG9yXSAo
dHlwZW5hbWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OktleVZhbHVlUGFpclR5cGUmIHBhaXIp
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihLZXlBbmRDb3VudChwYWlyLmtleSwg
cGFpci52YWx1ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKKyAg
ICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8VCwgQ291bnRlclR5cGU+IG1fbWFw
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCmluZGV4IDRlMDA5ZmVkNmJkMGUzMTE1N2M2NjQwOWM3YjM1ZmNjN2VmZjIzMjMuLmEz
MGNlZDE5ZjhmYzNlMmU2ZDNjNDQxNWI0YTc3OWE1MGM5MGM4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTMxMiwxMyArMzEy
LDEzIEBAIGJvb2wgSlNET01XaW5kb3c6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gQmFzZTo6cHV0QnlJbmRl
eCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgdmFsdWUsIHNob3VsZFRo
cm93KTsKIH0KIAotYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0RPTVdpbmRvdyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9ubHkgYWxsb3cg
ZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTRE9NV2luZG93OjpkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxZWYwNmMyNmVlMjUyZGU2NjhjMWRlZGU5MWM1
ZGRmNmEwZGRmZGU1Li44NGI5YTEzZTE5ZWExODlkZjMwNzQ3NjA2NWRkMzczZTUxZTRmNjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApA
QCAtMTYzLDEzICsxNjMsMTMgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHUKICAgICByZXR1cm4g
SlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKLWJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTTG9j
YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwogICAgIC8vIE9u
bHkgYWxsb3cgZGVsZXRpbmcgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlF
cnJvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU0xvY2F0aW9uOjpkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGUyZWVkZmQ1
YjBjNWFhNzE4NzBkYTc2NTQzOTdlMzViOTlhODJjYWMuLjBjYjY3ZWYyOWM2MmJmOGNjNDQ2YTBl
Y2UzMWM5ZmU1MzUxNTdhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBK
U1JlbW90ZURPTVdpbmRvdzo6cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkLCBKU1ZhbHVlLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU1JlbW90ZURP
TVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSkKK2Jvb2wgSlNSZW1vdGVET01XaW5kb3c6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IDAzZGQ5YzE2MWE4Mzk5MTJkNDM5MzQyZDI2NWJjNWZkMTViNmE0MTYu
LmI3Y2QxZmNhNDM5OWNlODk5NmFhYTZlY2E3OTUwNzM2YzA1MzIzOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMzAx
LDcgKzEzMDEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogICAgICMgVGhpcyBpbXBs
ZW1lbnRzIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1v
YmplY3QtZGVsZXRlIGZvciB0aGUKICAgICAjIGZvciB0aGUgZGVsZXRlUHJvcGVydHkgb3ZlcnJp
ZGUgaG9vay4KIAotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgJHtjbGFzc05hbWV9Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKVxuIik7CisgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIntcbiIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIHRoaXNP
YmplY3QgPSAqanNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CkBAIC0xMzIxLDcgKzEz
MjEsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQogCiAgICAgIyBGSVhNRTogSW5zdGVh
ZCBvZiBjYWxsaW5nIGRvd24gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5LCBwZXJoYXBzIHdlIHNo
b3VsZCBpbXBsZW1lbnQKICAgICAjIHRoZSByZW1haW5lZCBvZiB0aGUgYWxnb3JpdGhtIG91cnNl
bHZlcy4KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuIik7
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9CiAKQEAgLTI2OTYsNyArMjY5
Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgIGlmIChJbnN0YW5jZU92ZXJy
aWRlc0RlbGV0ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Jik7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQpO1xuIik7CiAgICAgfQogCkBAIC00MzI0LDcgKzQzMjQsOCBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3Bl
KHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICAgICAgfQpAQCAtNzUxMiw3ICs3NTEzLDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7
cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3Ry
bGVuKFwiJG5hbWVcIikpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICB9XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRp
bmcuY3BwCmluZGV4IGI1ZWE1NDhlMWQxMjcyZTE4NmRiOTQ0Y2U2MTk4NTBmNGZkMmU4MDguLmU2
MzMyMzlkYWVmY2VmMDQwOWM4YjQ2M2I4NzBmNjZiODEwNWQ3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTEzNyw3ICsxMzcsOCBAQCB2b2lkIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFz
RGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0
dGluZ09wZXJhdGlvbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTE0NSw3
ICsxNDYsOCBAQCB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmli
dXRlIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYg
KGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFy
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDgwZmFm
MzUxMDU0N2EyYWRlNzdjYjdlYzk1YjI5MTkyZDkwMWFhNDkuLmVmNjYwMzM0ZTMxODFiNjdkZTUy
NGIzZDM1ZGYxNjU2NGY2NTZhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKQEAgLTEwOCw3ICsxMDgsOCBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICAgICAgaGFzRGlzYWJsZWRS
dW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJh
U2VjcmV0QXR0cmlidXRlIiksIHN0cmxlbigiYVNlY3JldEF0dHJpYnV0ZSIpKTsKICAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVBy
b3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmIChoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkK
ICAgICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBiZmY0YzNiMDlkYTU5NDFiZmY3
MWRjZGJiMzg1MjU0OGEwMGMzZjFkLi44NzgzZTE1YzI4MTM3NjYzNGZkYzc1ZGVmZmM4NWRkYTk2
NTQ4OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
LmNwcApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHbG8KICAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9
ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CiAgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGlmIChpc1Zpc2libGVOYW1lZFBy
b3BlcnR5PE92ZXJyaWRlQnVpbHRpbnM6Ok5vPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICByZXR1cm4gaW1wbC5kZWxldGVOYW1lZFBy
b3BlcnR5KHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwogICAgIH0KLSAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxs
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCmluZGV4
IDBlYTRiYjExYjg2MDUzMDExNjU3ZmQ2ZWE2M2YyNDZkNGQ4MmU1MGEuLjEzOGQ0YzE4ZjhmNDZi
YzM0MzMxMDliZDAzMjM5NTYzN2QwYWMzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1lcmF0
aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVy
dHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpEZWxldGVQcm9wZXJ0
eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNzk0ZDU5NzZmMTNmMDcxOGI0Y2VlNTE2
MzM4MzBjY2QzMGYxYzMzMy4uNTc5ZjJhMGU2YThjN2E5MjU1NjE5ZDg0NDUyNmJhOGRkYjJkYWE4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LAogICAg
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29s
IEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgYXV0byYg
dGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24q
PihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CkBAIC0yMDQs
NyArMjA0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KIAogICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KLSAgICByZXR1cm4gSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDc5
MWJlMTgyZWIxYjM2OTY5MjFkZTk3Njk1MjcyOWYwYjRmMGIzNGEuLjA1NWQzZGY5MjM4MThjMDA3
NjdmMTg5NWRmNjcyNWY1YmMwZWRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVj
dCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpF
bnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRl
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Qzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGIzMzc2ZTNhOWZlNTJiOGEwYTZkM2Q0
MDVhNmFhZmVjNDFiY2YwODcuLjI1MDIzYTMxYTE0NjQyMjg3YTBiMWI1MGRkZjRkZjQ2MTlkZGYy
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNHCiAgICAgSlNP
YmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvJiB0aGlzT2JqZWN0
ID0gKmpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBi
b29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZQogICAgICAgICBpbXBsLm5hbWVkRGVsZXRlcihwcm9wZXJ0
eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
IGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmgKaW5kZXggNTRlMDI1NDc4ZTFkYzM5OTA3MDczM2U0OTliMDE2MzE0OTAxMjQ5ZS4u
YTg1OGEyNzE1NGJkM2M2MzY0ZmM0NWE2NDdmZjQyYjZiNDcyNTA2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpK
U09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lQXJy
YXkmLCBKU0M6OkVudW1lcmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpOwotICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eShKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggZThkOTc0
MTlhZmE1ZDlhZTY4ZGEwNGVhNTQxZWFiZjUwZDQ3ODczNi4uZjZmMzY2ZTIyMmU0MTQ0YTc0YjYz
NzU0ZmJkMDc4OThmOThiNjZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LAogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLWJvb2wgSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCog
Y2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgYXV0byYgdGhpc09iamVjdCA9ICpqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE8KICAg
ICBpZiAoaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eTxPdmVycmlkZUJ1aWx0aW5zOjpObz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgcmV0
dXJuIGltcGwuZGVsZXRlTmFtZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0
eU5hbWUpKTsKICAgICB9Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxs
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAppbmRleCBhOTk0NWJhZmM2MTE0M2U1NzZm
ZmQ2MGZlYzhlZWU2OTY0YjlmMDMwLi4yZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2Qx
ODY4OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0g
SlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkRlbGV0ZVByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6
OkpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggMTEwMGFhM2NlYzBiMWUxMGY3OTA3MzBhZjUx
MzA5NzAwNjAwYjk1ZS4uMWZiM2YxYmVhOGRhZjJmMGQwOWUyOTZjNTg3ZmZlMDQ3MDg2M2ZlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcApAQCAtMTU3LDQ1ICsxNTcsNTIgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRl
U2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRl
UHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50
aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRT
ZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06
OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
OjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiks
IHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVs
ZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Okln
bm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlz
LCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlT
bG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZG9tSXRlcmF0b3JFbmFibGVk
KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbnRyaWVzIiksIHN0cmxlbigiZW50cmllcyIpKTsK
ICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kb21JdGVyYXRv
ckVuYWJsZWQoKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImtleXMiKSwgc3RybGVuKCJrZXlzIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRvbUl0ZXJh
dG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidmFsdWVzIiksIHN0cmxlbigidmFs
dWVzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAg
ICB9CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRv
bUl0ZXJhdG9yRW5hYmxlZCgpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZm9yRWFjaCIpLCBzdHJs
ZW4oImZvckVhY2giKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1
Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0
KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggNGMxMDcxMDEzMTA5YjVmZWVjYjQzMjU3MTQ4NDA2OTJkODkw
NmYyMS4uZjU2ODQzMjRhNjY3YmE5NmRlNzUzNjA4MTg3M2QyNTIwYWE4ZTUzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTE5ODQsMTQgKzE5ODQsMTYgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2IKICAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVF
bmFibGVkKCkpIHsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3Rh
dGljIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAg
fQogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0
aWMiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIikpOwogICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCAmZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQ
cm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMs
ICZnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogI2VuZGlmCiB9CkBA
IC0yMzQ3LDkwICsyMzQ5LDEwNCBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1
ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24iKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIikpOwogICAgICAgICBWTTo6
RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6
Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVy
dHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAo
ISh3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpIHsKICAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5h
YmxlZCIpLCBzdHJsZW4oImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVF
bmFibGVkIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0s
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgICB9CiAgICAgaWYgKCF3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc29tZVdvcmxkKCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJ3b3JsZFNwZWNpZmljTWV0aG9kIiksIHN0cmxlbigid29ybGRT
cGVjaWZpY01ldGhvZCIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiksIHN0cmxlbigiY2Fs
Y3VsYXRlU2VjcmV0UmVzdWx0IikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0
KCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJnZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigiZ2V0
U2VjcmV0Qm9vbGVhbiIpKTsKICAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNj
b3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAg
ICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKCEoanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpKSB7CiAgICAgICAgIGhhc0Rpc2FibGVk
UnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuIiksIHN0cmxlbigidGVzdEZlYXR1cmVHZXRTZWNy
ZXRCb29sZWFuIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsK
ICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24i
KSwgc3RybGVuKCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rpb24iKSk7CiAgICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxl
dGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAo
IWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlzYWJs
ZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSwgc3RybGVuKCJjb25kaXRp
b25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24iKSk7CiAgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xv
dDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIShqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNT
ZWN1cmVDb250ZXh0KCl8fCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWxsb3dzTWVkaWFEZXZpY2VzKCkpKSB7CiAg
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigibWVkaWFEZXZpY2VzIiksIHN0cmxlbigibWVkaWFEZXZpY2VzIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAg
ICAgaWYgKCEoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpfHwganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhh
c1NlcnZpY2VXb3JrZXJTY2hlbWUoKSkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJv
cGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzZXJ2aWNlV29y
a2VycyIpLCBzdHJsZW4oInNlcnZpY2VXb3JrZXJzIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNs
b3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
ICAgICBpZiAoIShSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RG
ZWF0dXJlRW5hYmxlZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkudGVzdEZlYXR1cmUxRW5hYmxlZCgpKSkgewogICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQ
cm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIikp
OwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAj
ZW5kaWYKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
dGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKICAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVy
dGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJydW50aW1lQ29uZGl0
aW9uYWxseVJlYWRXcml0ZUF0dHJpYnV0ZSIpLCBzdHJsZW4oInJ1bnRpbWVDb25kaXRpb25hbGx5
UmVhZFdyaXRlQXR0cmlidXRlIikpOwogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAg
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7
CiAgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0
ZSIpLCBzdHJsZW4oImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBdHRyaWJ1dGUiKSk7CiAg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBE
ZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJjb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiY29u
ZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtlckF0dHJpYnV0ZSIpKTsKICAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIERlbGV0ZVByb3BlcnR5U2xv
dCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIC8vIEFkZGluZyBiYWNrIGF0
dHJpYnV0ZSwgYnV0IGFzIHJlYWRvbmx5LCBhZnRlciByZW1vdmluZyB0aGUgcmVhZC13cml0ZSB2
YXJpYW50IGFib3ZlLiAKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAppbmRleCBmZWViZGVmN2JjNDVlOThjOTMwOGZkZmJkZTExMGI5OWZkZGRjYTJjLi5h
NDE3ZjVjMzhiZGE3OTRmMTZlZmRhNDI2MjVmMjMwYTQwMDE5YTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTM5Miw3ICszOTIsNyBAQCBib29sIF9OUE5fUmVtb3Zl
UHJvcGVydHkoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChpLT5pc1N0cmluZygpKQotICAgICAgICAgICAgb2JqLT5p
bXAtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqLT5pbXAsIGxleGljYWxHbG9i
YWxPYmplY3QsIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGxleGljYWxHbG9iYWxPYmplY3Qs
IGktPnN0cmluZygpKSk7CisgICAgICAgICAgICBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KG9iai0+
aW1wLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBpLT5zdHJpbmcoKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBvYmotPmltcC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgob2JqLT5p
bXAsIGxleGljYWxHbG9iYWxPYmplY3QsIGktPm51bWJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDIyZjBiOGQ5ZDhmYWU0YTc5
YzZiNjMxZTkzNWNiNmFkYzdkOTRmZmYuLmRlM2E0M2RlZjBiOTc4YzA3ODEzZDgwMDQ3MmU5Zjk5
YWVmNzg0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0KQEAgLTQ1OCw3ICs0NTgsNyBAQCAtICh2b2lkKXJlbW92ZVdlYlNjcmlwdEtleTooTlNT
dHJpbmcgKilrZXkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVj
dDsKIAotICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KFtz
ZWxmIF9pbXBdLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCBTdHJpbmcoa2V5KSkpOworICAgIEpTQzo6SlNDZWxsOjpkZWxldGVQcm9wZXJ0eShbc2VsZiBf
aW1wXSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgU3Ry
aW5nKGtleSkpKTsKIAogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAg
ICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGxleGljYWxHbG9iYWxPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAppbmRleCA1ZWQyMWYxMzRlZjRhYWI1
ZGMwYzU1YTQ1ZGU2YTYzZDI3YzZiZTJlLi42MjI5NjM2OGViYjkwYzUwYjlkZTdmYTA3ODJjOWM2
ZmEyODU5MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaApA
QCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIENhbGxU
eXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUpOwogCiAgICAgYm9vbCB0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsg
Ly8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGlzIGJyb2tlbiBiZWNhdXNlIG5vbmUgb2YgdGhlIHN1
cGVyY2xhc3NlcyBhcmUgbWFya2VkIHZpcnR1YWwuIFdlIG5lZWQgdG8gc29sdmUgdGhpcyBpbiB0
aGUgbG9uZ2VyIHRlcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KaW5kZXggMTllZDE5Y2JjN2FlM2VlNDY3Nzk2YjEwM2NiZmU3NjE2MDlhZDczMC4uNmU4Nzdk
MmViN2Y0NGQwM2EyOGUxNzEwODNiZDNkMGYwYmI5ODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIENhbGxUeXBlIE9i
amNGYWxsYmFja09iamVjdEltcDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OwogfQogCi1ib29sIE9iamNGYWxs
YmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUpCitib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwCmluZGV4IDRkMjk3YzcwZDZiMWI2YzFhZjg4ZjkxNGJlODVmNjBkZjAzY2M5YjEu
LmVjMzU4OGZjNTY1OTU1M2Y1MjcyODNjNThhNzM1ODAyMTMyOWFjNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIFJ1bnRp
bWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCkt
PnNldFZhbHVlQXQobGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgsIHZhbHVlKTsKIH0KIAotYm9v
bCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lKQorYm9vbCBSdW50aW1lQXJyYXk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKQogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmlu
ZGV4IGZjZjVlMzNmYjExNDAxODUxMDc5OTMwZmJkMTE3NjEzNTQ1MmM3ZTYuLjI5ODEyYTY2ZDZm
MDEyNGUzODM2MjVmOTU2MDE5Y2EzM2JjM2JkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSk7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAgCiAgICAgdW5zaWduZWQg
Z2V0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheS0+Z2V0TGVuZ3RoKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCmluZGV4IGEwMzZiNjY2MmQ0ODcyZjY4
ZGM1MjY0NWJhMWFmMmJhMTUzMzAzMmQuLjlkNWQ2MGRlZjM1NzU0YmUxZTBlMDYyMGU0MWVkYjk4
ZWZlMzllZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAt
MjAwLDcgKzIwMCw3IEBAIGJvb2wgUnVudGltZU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBSdW50aW1lT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkKK2Jvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpCiB7CiAgICAgLy8gQ2FuIG5ldmVyIHJlbW92ZSBhIHByb3BlcnR5IG9mIGEgUnVu
dGltZU9iamVjdC4KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5oCmluZGV4IDZjYmY3YmY3OTZiMGE4OTQwNGI5NDIyNzVkNjUxZTYwZTczMjQ1ODIu
LjNjMTBkOGJkNTBmM2I3ZGFhNDg0MjIxNGI5ZTA0ZjA0M2FmZGYyZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlND
ZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKICAgICBzdGF0aWMgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5jcHAKaW5kZXggMmVmYjIyNTIzZjkyMWU5MmFiZDAyMTZlYjBjZDFmZmQxMDAzNjJiZS4uMDVk
MTI5MjkzOTU4MmYwNGM0MzJkMzBjMTQyZGJhNWRhYTBiZjExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCBib29sIEpTTlBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK2Jvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBqc0Nhc3Q8SlNO
UE9iamVjdCo+KGNlbGwpLT5kZWxldGVQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBucElk
ZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAppbmRl
eCA4NTU4ODk0OWEzMDYwNGM2OWY3N2NjYzNmNjBlNTQ2OTc3ZmZhYzZkLi40ODAzYzBiYzU3MWY5
NzdkZGMyNzIyYmJhYjk2YjZkMjdjMmE5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCkBAIC05NSw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJv
cGVydHlTbG90Jik7CiAKLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0M6OkpTQ2Vs
bCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6RGVsZXRlUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKICAgICBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09i
amVjdC5jcHAKaW5kZXggMzZmMjhlZTZmYjAxMDJkOGMxNzcxM2M2MDhiNjE0ZWFmODVkZGI3Ni4u
YTdmYjZiNWU5MmQ2NjE1ZmFkYTE4NjQyNzE2ZjExMmVlZGIzYjk5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5j
cHAKQEAgLTIyOSw4ICsyMjksOCBAQCBib29sIE5QSlNPYmplY3Q6OnJlbW92ZVByb3BlcnR5KE5Q
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG1fanNPYmpl
Y3QuZ2V0KCksIGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOworCisgICAgICAgIEpT
Q2VsbDo6ZGVsZXRlUHJvcGVydHkobV9qc09iamVjdC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgaWRlbnRpZmllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2pzT2JqZWN0LT5o
YXNQcm9wZXJ0eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwLT5udW1iZXIoKSkp
IHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMzAzMmFmYTI4MGZhOTI3ZDg3NzMyMGViODFj
YmQ5MDcxMDI1NTk3ZS4uZGM2MmQ1NTQxNDJhMzFjOGE4MDU2NmJkNmRkM2FlN2VlOTRiMzUyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTE0MSw4ICsx
MTQxLDggQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnJlbW92ZVByb3BlcnR5
KHVpbnQzMl90IG9iamVjdElELCBjb25zdCBJZGVudGkKICAgICAgICAgc2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOworCisgICAgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgc2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTQ2YTc1NWFkOWY5MzJiMWI1MTcyOWNhNDA2
ZmM0ZjE4ZTk3ZTI3NS4uMWYyMWU3Y2IxMzQ0YjQ3MzdiZDI2ODQ2YTQ0M2U1MTRjODE3OWZmMiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw3MCBAQAorMjAyMC0wMi0yNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5saW5lIENhY2hlIGRlbGV0ZSBieSBpZC92YWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzUyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlciBhbmQgRmlsaXAgUGl6bG8uIAorCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFp
bi5qczoKKyAgICAgICAgKGRlbGV0ZS5DLnByb3RvdHlwZS56KToKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qczogQWRk
ZWQuCisgICAgICAgIChDKToKKyAgICAgICAgKG5vSW5saW5lLkMuZm9vKToKKyAgICAgICAgKG5v
SW5saW5lLmZvby5GKToKKyAgICAgICAgKG5vSW5saW5lLkYpOgorICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAg
KEMpOgorICAgICAgICAobm9JbmxpbmUuQy5EKToKKyAgICAgICAgKG5vSW5saW5lLkQuZm9vKToK
KyAgICAgICAgKG5vSW5saW5lLmZvby5FKToKKyAgICAgICAgKG5vSW5saW5lLkUuRik6CisgICAg
ICAgIChub0lubGluZS5GKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWtlZXBzLWNhY2hlYWJsZS1zdHJ1Y3R1cmUuanM6CisgICAgICAgICogc3RyZXNzL2RlbGV0
ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qczoKKyAgICAgICAgKHNkKTog
RGVsZXRlZC4KKyAgICAgICAgKHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxlKTogRGVsZXRlZC4K
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0Q2FuRmxhdHRlbik6IERlbGV0ZWQu
CisgICAgICAgICh0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlLk9iamVjdC5wcm90b3R5cGUuZ2xv
YmFsUHJvcGVydHkuNDIubWFrZUZvbyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0RGVsZXRlV2l0
aElubGluZUNhY2hlLm5vSW5saW5lLmRvVGVzdCk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0RGVs
ZXRlV2l0aElubGluZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHJlc3MvZGVsZXRlLXBy
b3BlcnR5LWlubGluZS1jYWNoZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAg
ICAoYXNzZXJ0X2VxKToKKyAgICAgICAgKGFzc2VydF9uZXEpOgorICAgICAgICAoYXNzZXJ0X3Ro
cm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQubm9JbmxpbmUuYXNzZXJ0X2VxLm5vSW5s
aW5lLmFzc2VydF9uZXEubm9JbmxpbmUuYXNzZXJ0X3Rocm93cy50ZXN0Q2FjaGVhYmxlRGVsZXRl
QnlJZC5tYWtlRm9vKToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ub0lubGluZS5hc3NlcnRf
ZXEubm9JbmxpbmUuYXNzZXJ0X25lcS5ub0lubGluZS5hc3NlcnRfdGhyb3dzLnRlc3RDYWNoZWFi
bGVEZWxldGVCeUlkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDYWNoZWFibGVEZWxldGVCeUlk
LnRlc3RDYWNoZWFibGVEZWxldGVCeVZhbC5tYWtlRm9vMik6CisgICAgICAgIChub0lubGluZS50
ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURl
bGV0ZUJ5SWQubWFrZUZvbzMpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZURlbGV0
ZUJ5VmFsLnRlc3RDYWNoZWFibGVFbXB0eURlbGV0ZUJ5SWQpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3Mu
bWFrZUZvbzQpOgorICAgICAgICAobm9JbmxpbmUudGVzdENhY2hlYWJsZUVtcHR5RGVsZXRlQnlJ
ZC50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdENh
Y2hlYWJsZURlbGV0ZUJ5SWRNaXNzLnRlc3REZWxldGVJbmRleC5tYWtlRm9vNSk6CisgICAgICAg
IChub0lubGluZS50ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MudGVzdERlbGV0ZUluZGV4KToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3REZWxldGVJbmRleC50ZXN0UG9seW1vcnBoaWNEZWxCeVZh
bC5tYWtlRm9vNik6CisgICAgICAgIChub0lubGluZS50ZXN0RGVsZXRlSW5kZXgudGVzdFBvbHlt
b3JwaGljRGVsQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljRGVsQnlW
YWwudGVzdEJpZ2ludERlbGV0ZUJ5VmFsLm1ha2VGb283KToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RQb2x5bW9ycGhpY0RlbEJ5VmFsLnRlc3RCaWdpbnREZWxldGVCeVZhbCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0QmlnaW50RGVsZXRlQnlWYWwudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLm1ha2VG
b284KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RCaWdpbnREZWxldGVCeVZhbC50ZXN0U3ltYm9s
RGVsZXRlQnlWYWwpOgorICAgICAgICAobm9JbmxpbmUudGVzdFN5bWJvbERlbGV0ZUJ5VmFsLnRl
c3RPYmpEZWxldGVCeVZhbC5tYWtlRm9vOSk6CisgICAgICAgIChub0lubGluZS50ZXN0U3ltYm9s
RGVsZXRlQnlWYWwudGVzdE9iakRlbGV0ZUJ5VmFsKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RP
YmpEZWxldGVCeVZhbC50ZXN0U3RyaWN0Lm1ha2VGb28xMCk6CisgICAgICAgIChub0lubGluZS50
ZXN0T2JqRGVsZXRlQnlWYWwudGVzdFN0cmljdCk6CisgICAgICAgIChub0lubGluZS50ZXN0U3Ry
aWN0LnRlc3RPdmVycmlkZS5hcnIuaik6CisgICAgICAgIChub0lubGluZS50ZXN0U3RyaWN0LnRl
c3RPdmVycmlkZSk6CisgICAgICAgIChub0lubGluZS50ZXN0T3ZlcnJpZGUudGVzdE5vbk9iamVj
dC5kZWxldGVJdCk6CisgICAgICAgIChub0lubGluZS50ZXN0T3ZlcnJpZGUudGVzdE5vbk9iamVj
dCk6CisgICAgICAgIChub0lubGluZS50ZXN0Tm9uT2JqZWN0LnRlc3ROb25PYmplY3RTdHJpY3Qu
ZGVsZXRlSXQpOgorICAgICAgICAobm9JbmxpbmUudGVzdE5vbk9iamVjdC50ZXN0Tm9uT2JqZWN0
U3RyaWN0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3ROb25PYmplY3RTdHJpY3QudGVzdEV4Y2Vw
dGlvblVud2luZC5tdXRhdGVUaGVtKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3ROb25PYmplY3RT
dHJpY3QudGVzdEV4Y2VwdGlvblVud2luZC5ub0lubGluZS5kZWxldGVJdCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0Tm9uT2JqZWN0U3RyaWN0LnRlc3RFeGNlcHRpb25VbndpbmQpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdEV4Y2VwdGlvblVud2luZC50ZXN0VERaKToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RURFopOgorCiAyMDIwLTAyLTE5ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGlu
Z0Bzb255LmNvbT4KIAogICAgICAgICBDb21wdXRlZCBQcm9wZXJ0aWVzIHdpdGggaW5jcmVtZW50
IHNvbWV0aW1lcyBwcm9kdWNlcyBpbmNvcnJlY3QgcmVzdWx0cwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBlLWNoYWluLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWZyb20tcHJvdG90eXBl
LWNoYWluLmpzCmluZGV4IDQ5YTMxYjdmMjQ3YzFiZDBhY2E4MmNiMjJkZjIwZThmMWJmNjFiZGQu
LjU0YmJhODJlNjk5YzYyY2NjYTg5NDUxNmU2MmI3ZTZjYTFmNTEyMDIgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1mcm9tLXByb3RvdHlwZS1jaGFp
bi5qcworKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktZnJvbS1w
cm90b3R5cGUtY2hhaW4uanMKQEAgLTEsNCArMSw0IEBACi0vL0Agc2tpcCBpZiAkbW9kZWwgPT0g
IkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5
CisvL0Agc2tpcCBpZiAkbW9kZWwgPX4gL15BcHBsZSBXYXRjaC8KIGZ1bmN0aW9uIGFzc2VydChi
KSB7CiAgICAgaWYgKCFiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3I7CkBAIC0yOCw3ICsyOCw3
IEBAIGZ1bmN0aW9uIGRvVGVzdCh6VmFsKSB7CiB9CiBub0lubGluZShkb1Rlc3QpOwogCi1mb3Ig
KGxldCBpPTA7IGk8MTAwMDA7ICsraSkgeworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CiAgICAgY29uc3QgWCA9IHsgaSB9CiAgICAgQy5wcm90b3R5cGUueiA9IFgKICAgICBkb1Rl
c3QoWCkKQEAgLTM2LDcgKzM2LDcgQEAgZm9yIChsZXQgaT0wOyBpPDEwMDAwOyArK2kpIHsKIAog
ZGVsZXRlIEMucHJvdG90eXBlLnoKIAotZm9yIChsZXQgaT0wOyBpPDEwMDAwMDA7ICsraSkgewor
Zm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwMDAwOyArK2kpIHsKICAgICBnZXRaKHt6OiBpfSkKICAg
ICBkb1Rlc3QodW5kZWZpbmVkKQogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNoZS1wb2x5bW9ycGhpYy5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTZiODZkNTVhMTlmOWMwOWU1MGRlMWJkNTYzOTRkYTUxMGU0Yzc0OQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0
eS1pbmxpbmUtY2FjaGUtcG9seW1vcnBoaWMuanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHNraXAg
aWYgJG1vZGVsID1+IC9eQXBwbGUgV2F0Y2gvCisKK2Z1bmN0aW9uIEMocHJvcCkgeworICAgIHRo
aXNbcHJvcF0gPSA0CisgICAgZGVsZXRlIHRoaXNbcHJvcF0KK30KK25vSW5saW5lKEMpCisKK2Z1
bmN0aW9uIGZvbyhvLCBwcm9wKSB7CisgICAgZGVsZXRlIG9bcHJvcF0KK30KK25vSW5saW5lKGZv
bykKKworZnVuY3Rpb24gRihwcm9wKSB7CisgICAgdGhpc1twcm9wXSA9IDQKKyAgICBmb28odGhp
cywgcHJvcCkKK30KK25vSW5saW5lKEYpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpIHsKKyAgICBuZXcgQygiZm9vMSIpCisgICAgbmV3IEYoImZvbzEiKQorICAgIG5ldyBDKCJm
b28yIikKKyAgICBuZXcgRigiZm9vMiIpCisgICAgbmV3IEMoImZvbzMiKQorICAgIG5ldyBGKCJm
b28zIikKKyAgICBuZXcgQygiZm9vNCIpCisgICAgbmV3IEYoImZvbzQiKQorICAgIG5ldyBDKCJm
b281IikKKyAgICBuZXcgRigiZm9vNSIpCisgICAgbmV3IEMoImZvbzYiKQorICAgIG5ldyBGKCJm
b282IikKKyAgICBuZXcgQygiZm9vNyIpCisgICAgbmV3IEYoImZvbzciKQorICAgIG5ldyBDKCJm
b284IikKKyAgICBuZXcgRigiZm9vOCIpCisgICAgbmV3IEMoImZvbzkiKQorICAgIG5ldyBGKCJm
b285IikKKyAgICBuZXcgQygiZm9vMTAiKQorICAgIG5ldyBGKCJmb28xMCIpCit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hl
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWlubGluZS1jYWNo
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMDA4NjNjNjQxYTlhNzlkZWM5ZmUxNDdhOTVhODNlZWM3M2ZmM2M5
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDM1IEBACisvL0Agc2tpcCBpZiAkbW9kZWwg
PX4gL15BcHBsZSBXYXRjaC8KKworZnVuY3Rpb24gQygpIHsKKyAgICB0aGlzLnggPSA0OworICAg
IGRlbGV0ZSB0aGlzLngKK30KK25vSW5saW5lKEMpCisKK2Z1bmN0aW9uIEQoKSB7CisgICAgZGVs
ZXRlIHRoaXMueAorfQorbm9JbmxpbmUoRCkKKworZnVuY3Rpb24gZm9vKG8pIHsKKyAgICBkZWxl
dGUgby54Cit9Citub0lubGluZShmb28pCisKK2Z1bmN0aW9uIEUoKSB7CisgICAgdGhpcy54ID0g
NAorICAgIGZvbyh0aGlzKQorfQorbm9JbmxpbmUoRSkKKworZnVuY3Rpb24gRigpIHsKKyAgICBm
b28odGhpcykKK30KK25vSW5saW5lKEYpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7
ICsraSkgeworICAgIG5ldyBDCisgICAgbmV3IEQKKyAgICBuZXcgRQorICAgIG5ldyBGCit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkta2VlcHMt
Y2FjaGVhYmxlLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1w
cm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCmluZGV4IDc3OTVkYzU4MTU3OGU0
YzM5ODFjMjJhYzg3NmM0NTU0MTNlNjRkM2MuLmE5MzlhYWUzYWM4YWNjYzIyMTRkZDdlN2Q4MDI0
NDIxYTgxNjQ1ZDkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1w
cm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCisrKyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1rZWVwcy1jYWNoZWFibGUtc3RydWN0dXJlLmpzCkBA
IC0yNCw1ICsyNCw1IEBAIGZ1bmN0aW9uIGRvVGVzdCgpIHsKIH0KIG5vSW5saW5lKGRvVGVzdCk7
CiAKLWZvciAobGV0IGk9MDsgaTwxMDAwMDAwMDsgKytpKSBkb1Rlc3QoKQorZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDAwMDAwOyArK2kpIGRvVGVzdCgpCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcyBiL0pTVGVz
dHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1jaGVjay1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcwpp
bmRleCA0MDNjN2MwOWNjMTIzZjNiMTg1NDY4MGI2YzE3ZGQ0NTZhNWRlZjMxLi5hNGJhMWU0NGRh
YzhhOWEzMzFkZTAzYjA1MzVlMzkyNDkzZTY1YzExIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9kZWxldGUtcHJvcGVydHktY2hlY2stc3RydWN0dXJlLXRyYW5zaXRpb24uanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWNoZWNrLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpz
CkBAIC0xMiw2ICsxMiw5IEBAIGZ1bmN0aW9uIGFzc2VydF9uZXEoYSwgYikgewogICAgIGlmIChh
ID09PSBiKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBh
ICsgIiAhPT0gIiArIGIpOwogfQorbm9JbmxpbmUoYXNzZXJ0KQorbm9JbmxpbmUoYXNzZXJ0X2Vx
KQorbm9JbmxpbmUoYXNzZXJ0X25lcSkKIAogZnVuY3Rpb24gc2Qob2JqKSB7CiAgICAgbGV0IGRh
dGEgPSAkdm0uZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3Qob2JqKQpAQCAtMzEsNiArMzQsOCBA
QCBmdW5jdGlvbiBzaWQob2JqKSB7CiAgICAgbGV0IGRhdGEgPSBzZChvYmopCiAgICAgcmV0dXJu
IGRhdGFbZGF0YS5sZW5ndGgtMV0uaWQKIH0KK25vSW5saW5lKHNkKQorbm9JbmxpbmUoc2lkKQog
CiBmdW5jdGlvbiB0ZXN0RGVsZXRlSXNOb3RVbmNhY2hlYWJsZShpKSB7CiAgICAgbGV0IGZvbyA9
IHt9CkBAIC02Miw2ICs2Nyw3IEBAIGZ1bmN0aW9uIHRlc3REZWxldGVJc05vdFVuY2FjaGVhYmxl
KGkpIHsKICAgICBhc3NlcnRfZXEoJHZtLmdldENvbmN1cnJlbnRseShmb28sICJiYXIiK2kpLCAx
KQogICAgIGFzc2VydChmb29bImJhciIgKyBpXSA9PT0gMSkKIH0KK25vSW5saW5lKHRlc3REZWxl
dGVJc05vdFVuY2FjaGVhYmxlKQogCiBmdW5jdGlvbiB0ZXN0Q2FuTWF0ZXJpYWxpemVEZWxldGVz
KGkpIHsKICAgICBsZXQgZm9vID0ge30KQEAgLTEwMCw2ICsxMDYsOCBAQCBmdW5jdGlvbiB0ZXN0
Q2FuTWF0ZXJpYWxpemVEZWxldGVzKGkpIHsKICAgICBhc3NlcnRfZXEoZGF0YVtkYXRhLmxlbmd0
aC0yXS5wcm9wZXJ0eSwgImJhciIgKyBpKQogfQogCitub0lubGluZSh0ZXN0Q2FuTWF0ZXJpYWxp
emVEZWxldGVzKQorCiBmdW5jdGlvbiB0ZXN0Q2FuRmxhdHRlbihpKSB7CiAgICAgbGV0IGZvbyA9
IHt9CiAgICAgZm9yIChsZXQgaj0wOyBqPDUwMDsgKytqKSB7CkBAIC0xMzEsNiArMTM5LDcgQEAg
ZnVuY3Rpb24gdGVzdENhbkZsYXR0ZW4oaSkgewogICAgICAgICAgICAgYXNzZXJ0X2VxKHZhbCwg
dW5kZWZpbmVkKQogICAgIH0KIH0KK25vSW5saW5lKHRlc3RDYW5GbGF0dGVuKQogCiBmdW5jdGlv
biB0ZXN0RGVsZXRlV2l0aElubGluZUNhY2hlKCkgewogICAgIE9iamVjdC5wcm90b3R5cGUuZ2xv
YmFsUHJvcGVydHkgPSA0MgpAQCAtMTc1LDYgKzE4NCw3IEBAIGZ1bmN0aW9uIHRlc3REZWxldGVX
aXRoSW5saW5lQ2FjaGUoKSB7CiAKICAgICBkb1Rlc3QodW5kZWZpbmVkKQogfQorbm9JbmxpbmUo
dGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSkKIAogdGVzdERlbGV0ZVdpdGhJbmxpbmVDYWNoZSgp
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1pbmxpbmUtY2Fj
aGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNkZjAwZDVmYjcwZGQ0OTMwMzhiZDE2NzE2MzNmZGZkYjMwZWZiZjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktaW5saW5lLWNhY2hl
LmpzCkBAIC0wLDAgKzEsNTY4IEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VCaWdJbnQ9dHJ1ZSIp
CisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIik7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydF9lcShhLCBiKSB7CisgICAgaWYgKGEgIT09IGIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiYXNzZXJ0aW9uIGZhaWxlZDogIiArIGEgKyAiID09PSAiICsgYik7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydF9uZXEoYSwgYikgeworICAgIGlmIChhID09PSBiKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQ6ICIgKyBhICsgIiAhPT0gIiArIGIpOworfQorCitm
dW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZ1bikgeworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIGZ1bigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHRocmV3ID0gdHJ1
ZQorICAgIH0KKyAgICBhc3NlcnQodGhyZXcpCit9Citub0lubGluZShhc3NlcnQpCitub0lubGlu
ZShhc3NlcnRfZXEpCitub0lubGluZShhc3NlcnRfbmVxKQorbm9JbmxpbmUoYXNzZXJ0X3Rocm93
cykKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5SWQoKSB7CisgICAgZnVuY3Rpb24g
bWFrZUZvbygpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb28uYmF6CisgICAgICAgIHJldHVy
biBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbykKKworICAgIGFyciA9IG5ldyBBcnJh
eSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJb
al0gPSBtYWtlRm9vKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIg
PT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAg
ICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDYWNoZWFibGVEZWxldGVCeUlkKQorCitm
dW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlWYWwoKSB7CisgICAgZnVuY3Rpb24gbWFrZUZv
bzIoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb28uYmF6ID0gMQorICAgICAg
ICBmb28uYmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWyJiYXoiXQorICAgICAgICByZXR1cm4g
Zm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb28yKQorCisgICAgYXJyID0gbmV3IEFycmF5
KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltq
XSA9IG1ha2VGb28yKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2op
IHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIg
PT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAg
ICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAg
ICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKQor
CitmdW5jdGlvbiB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxldGVCeUlkKCkgeworICAgIGZ1bmN0aW9u
IG1ha2VGb28zKCkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vLmJheiA9IDEK
KyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmFyLCB0
cnVlKQorICAgICAgICBkZWxldGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQor
ICAgIG5vSW5saW5lKG1ha2VGb28zKQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb28z
KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAg
Y29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbyku
bGVuZ3RoLCAwKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3Nl
cnQoISgiYmFyIiBpbiBmb28pKQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQo
Zm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0
KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisg
ICAgICAgIGFzc2VydCghKCJiYXIiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdENh
Y2hlYWJsZUVtcHR5RGVsZXRlQnlJZCkKKworZnVuY3Rpb24gdGVzdENhY2hlYWJsZURlbGV0ZUJ5
SWRNaXNzKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb280KCkgeworICAgICAgICBsZXQgZm9vID0g
e30KKyAgICAgICAgZm9vLmJheiA9IDEKKyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgYXNz
ZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZv
by5iYXosIHRydWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1ZSkKKwor
ICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAnZm9vYmFyJywgeworICAgICAgICAg
IHZhbHVlOiA0MiwKKyAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgICAgIH0pOwor
ICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3Nl
cnRfZXEoZGVsZXRlIGZvby5mb29iYXIsIGZhbHNlKQorICAgICAgICBhc3NlcnRfZXEoZm9vLmZv
b2JhciwgNDIpCisgICAgICAgIHJldHVybiBmb28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZv
bzQpCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzQoKQorICAgIH0KKworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0K
KworICAgICAgICBhc3NlcnQoZm9vLmJhciA9PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVj
dC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQor
ICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAg
ICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMp
CisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVz
dENhY2hlYWJsZURlbGV0ZUJ5SWRNaXNzKQorCitmdW5jdGlvbiB0ZXN0RGVsZXRlSW5kZXgoKSB7
CisgICAgZnVuY3Rpb24gbWFrZUZvbzUoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAg
ICBmb28uYmF6ID0gMQorICAgICAgICBmb28uYmFyID0gMgorICAgICAgICBmb29bMF0gPSAyMwor
ICAgICAgICBmb29bMV0gPSAyNQorICAgICAgICBhc3NlcnRfZXEoZGVsZXRlIGZvby5iYXIsIHRy
dWUpCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vWzFdLCB0cnVlKQorICAgICAgICBkZWxl
dGUgZm9vLmJhegorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VG
b281KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb281KCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pd
CisKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAgICAg
ICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgICAgICBhc3NlcnQoISgiYmFyIiBpbiBmb28p
KQorICAgICAgICBmb28uYmFnID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAg
ICAgICBmb29bImJ1ZyIgKyBqXSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09
IDMpCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGFzc2VydCghKCJi
YXIiIGluIGZvbykpCisgICAgICAgIGFzc2VydF9lcShmb29bMF0sIDIzKQorICAgICAgICBhc3Nl
cnRfZXEoZm9vWzFdLCB1bmRlZmluZWQpCisgICAgICAgIGZvb1sxXSA9IDEKKyAgICAgICAgYXNz
ZXJ0X2VxKGZvb1sxXSwgMSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0RGVsZXRlSW5kZXgpCisK
K2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpY0RlbEJ5VmFsKGkpIHsKKyAgICBmdW5jdGlvbiBtYWtl
Rm9vNigpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvb1siYmF6IitpXSA9IDEK
KyAgICAgICAgZm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1siYmF6IitpXQorICAgICAg
ICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb282KQorCisgICAgYXJyID0g
bmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAg
ICAgIGFycltqXSA9IG1ha2VGb282KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0
KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0
aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIraSBpbiBmb28pKQorICAgICAgICBmb28uYmFn
ID0gMQorICAgICAgICBhc3NlcnQoZm9vLmJhZyA9PSAxKQorICAgICAgICBmb29bImJ1ZyIgKyBq
XSA9IDMKKyAgICAgICAgYXNzZXJ0KGZvb1siYnVnIiArIGpdID09IDMpCisgICAgICAgIGFzc2Vy
dCghKCJiYXoiK2kgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhp
Y0RlbEJ5VmFsKQorCitmdW5jdGlvbiB0ZXN0QmlnaW50RGVsZXRlQnlWYWwoKSB7CisgICAgZnVu
Y3Rpb24gbWFrZUZvbzcoKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBmb29bMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG5dID0gMQorICAgICAgICBmb28u
YmFyID0gMgorICAgICAgICBkZWxldGUgZm9vWzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTBuXQorICAgICAgICByZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1h
a2VGb283KQorCisgICAgYXJyID0gbmV3IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGFycltqXSA9IG1ha2VGb283KCkKKyAgICB9CisKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJy
W2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShP
YmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MG4gaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9
IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0g
PSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQo
ISgiYmF6IiBpbiBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdEJpZ2ludERlbGV0ZUJ5
VmFsKQorCitmdW5jdGlvbiB0ZXN0U3ltYm9sRGVsZXRlQnlWYWwoKSB7CisgICAgY29uc3Qgc3lt
Ym9sID0gU3ltYm9sKCdmb28nKTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb284KCkgeworICAgICAg
ICBsZXQgZm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydCgh
KFN5bWJvbCgnZm9vJykgaW4gZm9vKSkKKyAgICAgICAgYXNzZXJ0KHN5bWJvbCBpbiBmb28pCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGRlbGV0ZSBmb29bc3ltYm9sXQorICAgICAgICBy
ZXR1cm4gZm9vCisgICAgfQorICAgIG5vSW5saW5lKG1ha2VGb284KQorCisgICAgYXJyID0gbmV3
IEFycmF5KDUwKQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGFycltqXSA9IG1ha2VGb284KCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUw
OyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0gYXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZv
by5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9lcShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwg
MSkKKyAgICAgICAgYXNzZXJ0KCEoc3ltYm9sIGluIGZvbykpCisgICAgICAgIGZvby5iYWcgPSAx
CisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVnIiArIGpdID0g
MworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAgYXNzZXJ0KCEo
ImJheiIgaW4gZm9vKSkKKworICAgIH0KK30KK25vSW5saW5lKHRlc3RTeW1ib2xEZWxldGVCeVZh
bCkKKworZnVuY3Rpb24gdGVzdE9iakRlbGV0ZUJ5VmFsKCkgeworICAgIGNvbnN0IHN5bWJvbCA9
IHsgaTogImZvbyIgfTsKKworICAgIGZ1bmN0aW9uIG1ha2VGb285KCkgeworICAgICAgICBsZXQg
Zm9vID0ge30KKyAgICAgICAgZm9vW3N5bWJvbF0gPSAxCisgICAgICAgIGFzc2VydChzeW1ib2wg
aW4gZm9vKQorICAgICAgICBhc3NlcnQoISh7IGk6ICJmb28iIH0gaW4gZm9vKSkKKyAgICAgICAg
Zm9vLmJhciA9IDIKKyAgICAgICAgZGVsZXRlIGZvb1tzeW1ib2xdCisgICAgICAgIHJldHVybiBm
b28KKyAgICB9CisgICAgbm9JbmxpbmUobWFrZUZvbzkpCisKKyAgICBhcnIgPSBuZXcgQXJyYXko
NTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pd
ID0gbWFrZUZvbzkoKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikg
eworICAgICAgICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnQoZm9vLmJhciA9
PT0gMikKKyAgICAgICAgYXNzZXJ0X2VxKE9iamVjdC5rZXlzKGZvbykubGVuZ3RoLCAxKQorICAg
ICAgICBhc3NlcnQoIShzeW1ib2wgaW4gZm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAg
ICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkKKyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAg
ICAgIGFzc2VydChmb29bImJ1ZyIgKyBqXSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBp
biBmb28pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdE9iakRlbGV0ZUJ5VmFsKQorCitmdW5j
dGlvbiB0ZXN0U3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIG1h
a2VGb28xMCgpIHsKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIGZvby5iYXogPSAxCisg
ICAgICAgIGZvby5iYXIgPSAyCisgICAgICAgIGFzc2VydF9lcShkZWxldGUgZm9vLmJheiwgdHJ1
ZSkKKyAgICAgICAgYXNzZXJ0X2VxKGRlbGV0ZSBmb28uYmF6LCB0cnVlKQorCisgICAgICAgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdmb29iYXInLCB7CisgICAgICAgICAgdmFsdWU6IDQy
LAorICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UKKyAgICAgICAgfSk7CisgICAgICAgIGFz
c2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvby5mb29iYXIpCisgICAgICAgIGFzc2VydF9lcShm
b28uZm9vYmFyLCA0MikKKyAgICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZSht
YWtlRm9vMTApCisKKyAgICBhcnIgPSBuZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgYXJyW2pdID0gbWFrZUZvbzEwKCkKKyAgICB9CisK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgY29uc3QgZm9vID0g
YXJyW2pdCisKKyAgICAgICAgYXNzZXJ0KGZvby5iYXIgPT09IDIpCisgICAgICAgIGFzc2VydF9l
cShPYmplY3Qua2V5cyhmb28pLmxlbmd0aCwgMSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4g
Zm9vKSkKKyAgICAgICAgZm9vLmJhZyA9IDEKKyAgICAgICAgYXNzZXJ0KGZvby5iYWcgPT0gMSkK
KyAgICAgICAgZm9vWyJidWciICsgal0gPSAzCisgICAgICAgIGFzc2VydChmb29bImJ1ZyIgKyBq
XSA9PSAzKQorICAgICAgICBhc3NlcnQoISgiYmF6IiBpbiBmb28pKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3RTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RPdmVycmlkZSgpIHsKKyAgICBhcnIgPSBu
ZXcgQXJyYXkoNTApCisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAg
ICAgYXJyW2pdID0gZnVuY3Rpb24oKSB7IH0KKyAgICAgICAgYXNzZXJ0X2VxKCR2bS5oYXNPd25M
ZW5ndGhQcm9wZXJ0eShhcnJbal0pLCB0cnVlKQorICAgICAgICBkZWxldGUgYXJyW2pdLmxlbmd0
aAorICAgICAgICBhc3NlcnRfZXEoJHZtLmhhc093bkxlbmd0aFByb3BlcnR5KGFycltqXSksIGZh
bHNlKQorICAgIH0KKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBjb25zdCBmb28gPSBhcnJbal0KKworICAgICAgICBhc3NlcnRfZXEoT2JqZWN0LmtleXMoZm9v
KS5sZW5ndGgsIDApCisgICAgICAgIGFzc2VydCghKCJiYXoiIGluIGZvbykpCisgICAgICAgIGZv
by5iYWcgPSAxCisgICAgICAgIGFzc2VydChmb28uYmFnID09IDEpCisgICAgICAgIGZvb1siYnVn
IiArIGpdID0gMworICAgICAgICBhc3NlcnQoZm9vWyJidWciICsgal0gPT0gMykKKyAgICAgICAg
YXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0T3ZlcnJpZGUp
CisKK2Z1bmN0aW9uIHRlc3ROb25PYmplY3QoKSB7CisgICAgZnVuY3Rpb24gZGVsZXRlSXQoZm9v
KSB7CisgICAgICAgIGFzc2VydChkZWxldGUgZm9vLmJheikKKyAgICAgICAgcmV0dXJuIGZvbwor
ICAgIH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAgIGFyciA9IG5ldyBBcnJheSg1MCkK
KworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBhcnJbal0gPSB7
IGJhejogaiB9CisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7Cisg
ICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFzc2VydCgiYmF6IiBpbiBmb28p
CisgICAgICAgIGRlbGV0ZUl0KGZvbykKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkK
KyAgICB9CisKKyAgICBhc3NlcnQoZGVsZXRlSXQoImJheiIpID09ICJiYXoiKQorICAgIGRlbGV0
ZUl0KFN5bWJvbCgiaGkiKSkKK30KK25vSW5saW5lKHRlc3ROb25PYmplY3QpCisKK2Z1bmN0aW9u
IHRlc3ROb25PYmplY3RTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rp
b24gZGVsZXRlSXQoZm9vKSB7CisgICAgICAgIGFzc2VydChkZWxldGUgZm9vWyJiYXoiXSkKKyAg
ICAgICAgcmV0dXJuIGZvbworICAgIH0KKyAgICBub0lubGluZShkZWxldGVJdCkKKworICAgIGFy
ciA9IG5ldyBBcnJheSg1MCkKKworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgewor
ICAgICAgICBhcnJbal0gPSB7IGJhejogaiB9CisgICAgfQorCisgICAgZm9yIChsZXQgaiA9IDA7
IGogPCA1MDsgKytqKSB7CisgICAgICAgIGNvbnN0IGZvbyA9IGFycltqXQorCisgICAgICAgIGFz
c2VydCgiYmF6IiBpbiBmb28pCisgICAgICAgIGRlbGV0ZUl0KGZvbykKKyAgICAgICAgZGVsZXRl
SXQoNSkKKyAgICAgICAgYXNzZXJ0KCEoImJheiIgaW4gZm9vKSkKKyAgICB9CisKKyAgICBhc3Nl
cnQoZGVsZXRlSXQoImJheiIpID09ICJiYXoiKQorICAgIGRlbGV0ZUl0KFN5bWJvbCgiaGkiKSkK
KworICAgIGxldCBmb28gPSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdiYXon
LCB7CisgICAgICB2YWx1ZTogNDIsCisgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgfSk7
CisgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGVJdChmb28pKQorfQorbm9JbmxpbmUodGVz
dE5vbk9iamVjdFN0cmljdCkKKworZnVuY3Rpb24gdGVzdEV4Y2VwdGlvblVud2luZCgpIHsKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBtdXRhdGVUaGVtKGEsYixjLGQsZSxmLGcs
aCxpKSB7CisgICAgICAgIGcuaSA9IDQyCisgICAgfQorICAgIG5vSW5saW5lKG11dGF0ZVRoZW0p
CisKKyAgICBmdW5jdGlvbiBkZWxldGVJdChmb28pIHsKKyAgICAgICAgbGV0IGNhdWdodCA9IGZh
bHNlCisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciBhID0geyBpOiAxIH0KKyAgICAg
ICAgICAgIHZhciB2ID0geyBpOiAxMCB9CisgICAgICAgICAgICB2YXIgYiA9IHsgaTogMTAwIH0K
KyAgICAgICAgICAgIHZhciBjID0geyBpOiAxMDAwIH0KKyAgICAgICAgICAgIHZhciBkID0geyBp
OiAxMDAwMCB9CisgICAgICAgICAgICB2YXIgZSA9IHsgaTogMTAwMDAwIH0KKyAgICAgICAgICAg
IHZhciBmID0geyBpOiAxMDAwMDAwIH0KKyAgICAgICAgICAgIHZhciBnID0geyBpOiAxMDAwMDAw
MCB9CisgICAgICAgICAgICB2YXIgaCA9IHsgaTogMTAwMDAwMDAwIH0KKyAgICAgICAgICAgIHZh
ciBpID0geyBpOiAxMDAwMDAwMDAwIH0KKworICAgICAgICAgICAgbXV0YXRlVGhlbShhLGIsYyxk
LGUsZixnLGgsaSkKKworICAgICAgICAgICAgZGVsZXRlIGZvb1siYmF6Il0KKworICAgICAgICAg
ICAgYSA9IGIgPSBjID0gZCA9IGUgPSBmID0gZyA9IGggPSBpCisgICAgICAgIH0gY2F0Y2ggewor
ICAgICAgICAgICAgYXNzZXJ0X2VxKGEuaSwgMSkKKyAgICAgICAgICAgIGFzc2VydF9lcShpLmks
IDEwMDAwMDAwMDApCisgICAgICAgICAgICBhc3NlcnRfZXEoZy5pLCA0MikKKyAgICAgICAgICAg
IGNhdWdodCA9IHRydWUKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2F1Z2h0CisgICAgfQor
ICAgIG5vSW5saW5lKGRlbGV0ZUl0KQorCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCAxMDAwMDA7
ICsraikgeworICAgICAgICBhc3NlcnQoIWRlbGV0ZUl0KHsgaiwgYmF6OiA1IH0pKQorICAgIH0K
KworICAgIGxldCBmb28gPSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICdiYXon
LCB7CisgICAgICB2YWx1ZTogNDIsCisgICAgICBjb25maWd1cmFibGU6IGZhbHNlCisgICAgfSk7
CisKKyAgICBhc3NlcnQoZGVsZXRlSXQoZm9vKSkKK30KK25vSW5saW5lKHRlc3RFeGNlcHRpb25V
bndpbmQpCisKK2Z1bmN0aW9uIHRlc3RURFooKSB7CisgICAgZGVsZXRlIGZvby54CisgICAgbGV0
IGZvbyA9IHsgeDogNSB9Cit9Citub0lubGluZSh0ZXN0VERaKQorCitmdW5jdGlvbiB0ZXN0UG9s
eVByb3RvKCkgeworICAgIGZ1bmN0aW9uIG1ha2VGb28xMSgpIHsKKyAgICAgICAgY2xhc3MgQyB7
CisgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnggPSA0
MgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgQworICAgIH0K
KyAgICBub0lubGluZShtYWtlRm9vMTEpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7
ICsraSkgeworICAgICAgICBsZXQgbyA9IG1ha2VGb28xMSgpCisgICAgICAgIGFzc2VydF9lcShv
LngsIDQyKQorICAgICAgICBhc3NlcnQoZGVsZXRlIG8ueCkKKyAgICAgICAgYXNzZXJ0KCEoIngi
IGluIG8pKQorCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHlQcm90bykKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZCgpCisg
ICAgdGVzdENhY2hlYWJsZURlbGV0ZUJ5VmFsKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRW1wdHlEZWxl
dGVCeUlkKCkKKyAgICB0ZXN0Q2FjaGVhYmxlRGVsZXRlQnlJZE1pc3MoKQorICAgIHRlc3REZWxl
dGVJbmRleCgpCisgICAgdGVzdFBvbHltb3JwaGljRGVsQnlWYWwoaSkKKyAgICB0ZXN0QmlnaW50
RGVsZXRlQnlWYWwoKQorICAgIHRlc3RTeW1ib2xEZWxldGVCeVZhbCgpCisgICAgdGVzdFN0cmlj
dCgpCisgICAgdGVzdE92ZXJyaWRlKCkKKyAgICB0ZXN0Tm9uT2JqZWN0KCkKKyAgICB0ZXN0Tm9u
T2JqZWN0U3RyaWN0KCkKKyAgICBhc3NlcnRfdGhyb3dzKHRlc3RURFopCisgICAgdGVzdFBvbHlQ
cm90bygpCit9CisKK3Rlc3RFeGNlcHRpb25VbndpbmQoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>