<?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>214539</bug_id>
          
          <creation_ts>2020-07-19 13:23:51 -0700</creation_ts>
          <short_desc>Simplify DisallowScope, DisallowGC, and DisallowVMReentry implementations.</short_desc>
          <delta_ts>2020-07-22 07:27:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>214624</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>caitp</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672952</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-19 13:23:51 -0700</bug_when>
    <thetext>Also do the following:
1. Change DisallowScope and DisallowGC to be based on ASSERT_ENABLED instead of NEBUG.
2. Make DisallowVMReentry always enforceable, not just when ASSERT_ENABLED.
3. Add DisallowVMReentry scopes whenever we create a PropertySlot for VMInquiry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672953</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-19 13:24:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/65795729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672956</commentid>
    <comment_count>2</comment_count>
      <attachid>404683</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-19 13:53:23 -0700</bug_when>
    <thetext>Created attachment 404683
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672957</commentid>
    <comment_count>3</comment_count>
      <attachid>404684</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-19 14:00:46 -0700</bug_when>
    <thetext>Created attachment 404684
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672959</commentid>
    <comment_count>4</comment_count>
      <attachid>404686</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-19 14:24:22 -0700</bug_when>
    <thetext>Created attachment 404686
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672981</commentid>
    <comment_count>5</comment_count>
      <attachid>404693</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-19 19:41:32 -0700</bug_when>
    <thetext>Created attachment 404693
proposed patch.

Changed private name fix after consulting with Caitlin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672983</commentid>
    <comment_count>6</comment_count>
      <attachid>404693</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-19 19:57:50 -0700</bug_when>
    <thetext>Comment on attachment 404693
proposed patch.

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:295
&gt; +    move a0, vm
&gt; +    move a1, protoCallFrame

Found a bug: these arguments are reversed.  Will upload a fixed patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672984</commentid>
    <comment_count>7</comment_count>
      <attachid>404694</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-19 20:00:25 -0700</bug_when>
    <thetext>Created attachment 404694
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672987</commentid>
    <comment_count>8</comment_count>
      <attachid>404696</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-19 20:39:57 -0700</bug_when>
    <thetext>Created attachment 404696
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673127</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-20 10:41:01 -0700</bug_when>
    <thetext>The mac-wk2 EWS appears to be unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673316</commentid>
    <comment_count>10</comment_count>
      <attachid>404696</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-20 16:32:54 -0700</bug_when>
    <thetext>Comment on attachment 404696
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/PropertySlot.h:120
&gt; +        ASSERT_UNUSED(disallowVMEntry, (internalMethodType == InternalMethodType::VMInquiry) == !!disallowVMEntry);

I should also assert that disallowVMEntry.isEngaged().  Will need to add the isEngaged() method.  Will upload another patch for this shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673321</commentid>
    <comment_count>11</comment_count>
      <attachid>404779</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-20 16:46:44 -0700</bug_when>
    <thetext>Created attachment 404779
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673345</commentid>
    <comment_count>12</comment_count>
      <attachid>404779</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-20 19:08:34 -0700</bug_when>
    <thetext>Comment on attachment 404779
proposed patch.

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

&gt; Source/JavaScriptCore/ChangeLog:34
&gt; +        2. Enforcement of DisallowVMReentry is now done in the LLInt&apos;s doVMEntry() instead

is this really needed? The assumption is we&apos;re already in C++ code if we&apos;re creating such an RAII, so we&apos;d need to cross C++ to doVMEntry. Maybe just do it where we call vmEntryToJavaScript?

&gt; Source/JavaScriptCore/ChangeLog:48
&gt; +        5. Add DisallowVMEntry scopes whenever we create a PropertySlot for VMInquiry.
&gt; +           The PropertySlot constructor will now take an optional DisallowVMEntry pointer.
&gt; +           If the slot&apos;s specified internal method type is VMInquiry, then we&apos;ll
&gt; +           RELEASE_ASSERT that the DisallowVMEntry pointer is non-null.

Why not just make the slot have an optional DisallowVMEntry that it creates on VMInquiry?

&gt; Source/JavaScriptCore/ChangeLog:55
&gt; +        6. Fixed a bug in llint_slow_path_get_private_name().  It should be passing
&gt; +           GetOwnProperty to JSObject::getPrivateField() instead of VMInquiry.
&gt; +           JSObject::getPrivateField() can throw an exception, which makes it not
&gt; +           appropriate for a VMInquiry.  There is also no current client that needs it
&gt; +           to handle a VMInquiry.  Added an assertion in JSObject::getPrivateField() to
&gt; +           verify that the client will not be requesting a VMInquiry.

this seems fine, but just saying it&apos;s because it can&apos;t throw doesn&apos;t feel totally complete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673346</commentid>
    <comment_count>13</comment_count>
      <attachid>404779</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-20 19:24:10 -0700</bug_when>
    <thetext>Comment on attachment 404779
proposed patch.

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

still reviewing, some initial comments

&gt; Source/JavaScriptCore/API/JSCallbackObjectFunctions.h:680
&gt; +        disallowVMEntry.release();

not needed

&gt; Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp:654
&gt; +        disallowVMEntry.release();

this shouldn&apos;t be needed

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:174
&gt; +    loadi VM::disallowVMEntryCount[vm], t4
&gt; +    btinz t4, .checkVMEntryPermission

Ignore prior comment on checking this in JITCode::execute. This seems fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673347</commentid>
    <comment_count>14</comment_count>
      <attachid>404779</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-20 19:26:35 -0700</bug_when>
    <thetext>Comment on attachment 404779
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:34
&gt;&gt; +        2. Enforcement of DisallowVMReentry is now done in the LLInt&apos;s doVMEntry() instead
&gt; 
&gt; is this really needed? The assumption is we&apos;re already in C++ code if we&apos;re creating such an RAII, so we&apos;d need to cross C++ to doVMEntry. Maybe just do it where we call vmEntryToJavaScript?

vmEntryToJavaScript itself is a label in LLInt asm.  But yes, there are places in C++ code that we currently always go thru when entering the VM.  It just feels like a stronger guarantee to me that we choke it at the real choke point, rather than an associated one.

&gt;&gt; Source/JavaScriptCore/ChangeLog:48
&gt;&gt; +           RELEASE_ASSERT that the DisallowVMEntry pointer is non-null.
&gt; 
&gt; Why not just make the slot have an optional DisallowVMEntry that it creates on VMInquiry?

That was my original plan.  However, there are places where the lifecycle of the PropertySlot doesn&apos;t match the range of code where we want to disallow VM entry.  I also think it is good to call out that we&apos;re disabling VM entry explicitly and because it&apos;s declared explicitly, it&apos;s clear why we sometimes limit its scope.  Let me what you think after you&apos;re seen the places where it is used.

&gt;&gt; Source/JavaScriptCore/ChangeLog:55
&gt;&gt; +           verify that the client will not be requesting a VMInquiry.
&gt; 
&gt; this seems fine, but just saying it&apos;s because it can&apos;t throw doesn&apos;t feel totally complete

I presume by this, you want me to point out that throwing is observable at the JS spec level and hence does not fit what we expect of behavior of VMInquiry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673369</commentid>
    <comment_count>15</comment_count>
      <attachid>404779</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-20 21:14:43 -0700</bug_when>
    <thetext>Comment on attachment 404779
proposed patch.

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

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:1112
&gt; +            bool found  = JSGlobalLexicalEnvironment::getOwnPropertySlot(globalLexicalEnvironment, globalObject, function-&gt;name(), slot);

style: extra space before =

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:641
&gt; +    throwScope.assertNoException();

it seems possible we could OOM.

&gt; Source/JavaScriptCore/runtime/DisallowVMEntry.h:37
&gt; +template&lt;class VMType = VM&gt;

template &lt;typename VMType = VM&gt;

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:571
&gt; +            scope.assertNoException();

don&apos;t do this. Go back to the old code

&gt; Source/WebCore/bindings/js/JSDOMAbstractOperations.h:63
&gt; +    JSC::PropertySlot slot(&amp;thisObject, JSC::PropertySlot::InternalMethodType::VMInquiry, &amp;disallowVMEntry);

Why is this VMInquiry? Is this not defined in the spec?

&gt; Source/WebCore/bindings/js/JSDOMAbstractOperations.h:104
&gt; +    JSC::PropertySlot slot(&amp;thisObject, JSC::PropertySlot::InternalMethodType::VMInquiry, &amp;disallowVMEntry);

ditto

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:971
&gt; +            push(@$outputArray, &quot;            PropertySlot slot(thisObject, PropertySlot::InternalMethodType::VMInquiry, &amp;disallowVMEntry);\n&quot;);

why is this VMInquiry?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1052
&gt; +            push(@$outputArray, &quot;        PropertySlot slot(thisObject, PropertySlot::InternalMethodType::VMInquiry, &amp;disallowVMEntry);\n&quot;);

why is this VMInquiry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673379</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-20 22:28:01 -0700</bug_when>
    <thetext>After talking with Saam offline about this patch, I think I will break it down into several patches (and bugs) and change some of the implementation as well.  I&apos;ll use this specific bug to only do the refactoring that the title says: &quot;Simplify DisallowScope, DisallowGC, and DisallowVMReentry implementations&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673631</commentid>
    <comment_count>17</comment_count>
      <attachid>404864</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 14:48:48 -0700</bug_when>
    <thetext>Created attachment 404864
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673696</commentid>
    <comment_count>18</comment_count>
      <attachid>404886</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 17:25:47 -0700</bug_when>
    <thetext>Created attachment 404886
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673697</commentid>
    <comment_count>19</comment_count>
      <attachid>404887</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 17:28:26 -0700</bug_when>
    <thetext>Created attachment 404887
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673705</commentid>
    <comment_count>20</comment_count>
      <attachid>404887</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-21 17:57:38 -0700</bug_when>
    <thetext>Comment on attachment 404887
proposed patch.

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

r=me with nits.

&gt; Source/JavaScriptCore/ChangeLog:28
&gt; +           If Options::crashOnDisallowedVMEntry() is false, an attempt to call into the VM
&gt; +           while disallowed will return immediately with an undefined result without
&gt; +           invoking any script.

Is this better than throwing an Exception of some kind?

&gt; Source/JavaScriptCore/runtime/DisallowScope.h:42
&gt; +        auto count = T::scopeReentryCount();
&gt; +        T::setScopeReentryCount(++count);

Why not make the API a ref and deref? Seems like you need two functions either way?

&gt; Source/JavaScriptCore/runtime/DisallowVMEntry.h:35
&gt; +    WTF_MAKE_NONCOPYABLE(DisallowVMReentry);

Nit: I don&apos;t think you need this because DisallowScope isn&apos;t copyable.

&gt; Source/JavaScriptCore/runtime/ObjectInitializationScope.cpp:65
&gt; +        m_disallowGC.reset();
&gt; +        m_disallowVMEntry.reset();

Unrelated but its weird that this is called reset... I would have expected clear() but ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673712</commentid>
    <comment_count>21</comment_count>
      <attachid>404887</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 18:27:41 -0700</bug_when>
    <thetext>Comment on attachment 404887
proposed patch.

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

Thanks for there review.

&gt;&gt; Source/JavaScriptCore/ChangeLog:28
&gt;&gt; +           invoking any script.
&gt; 
&gt; Is this better than throwing an Exception of some kind?

I&apos;m planning to use this to disallow VM entry during VMInquiry later.  It&apos;s intentional for it to not throw.

&gt;&gt; Source/JavaScriptCore/runtime/DisallowScope.h:42
&gt;&gt; +        T::setScopeReentryCount(++count);
&gt; 
&gt; Why not make the API a ref and deref? Seems like you need two functions either way?

I supposed I could, but that would be one additional step beyond just refactoring this to be an RAII object and removing the enable/disable functionality.  I&apos;ll look into that in a separate patch.

&gt;&gt; Source/JavaScriptCore/runtime/DisallowVMEntry.h:35
&gt;&gt; +// need it.
&gt; 
&gt; Nit: I don&apos;t think you need this because DisallowScope isn&apos;t copyable.

I think this comment somehow got associated with the wrong line here, and I think you meant it to be about the WTF_MAKE_NONCOPYABLE below.  Anyway, DisallowVMEntryImpl no longer inherits from DisallowScope.  So, what DisallowScope does is irrelevant here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673715</commentid>
    <comment_count>22</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 18:41:58 -0700</bug_when>
    <thetext>Landed in r264688: &lt;http://trac.webkit.org/r264688&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673809</commentid>
    <comment_count>23</comment_count>
      <attachid>404887</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-22 07:27:44 -0700</bug_when>
    <thetext>Comment on attachment 404887
proposed patch.

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:331
&gt; +    move 0, r1

We need to fix the order of value here. In current 32-bits little-endian, payload goes into `r0` and tag goes into `r1`. I&apos;m not aware of any 32-bits architecture using LLInt and JIT that&apos;s big-endian.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404683</attachid>
            <date>2020-07-19 13:53:23 -0700</date>
            <delta_ts>2020-07-19 13:54:43 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539.patch</filename>
            <type>text/plain</type>
            <size>77494</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNyBA
QAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5kIERpc2FsbG93Vk1SZWVudHJ5
IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU3OTU3Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
RGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFibGluZyBhbmQgZGlzYWJsaW5nLiAg
VGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5hYmxlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93LCB3ZQorICAgICAgICBjYW4gbWFr
ZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50cnkgaW5zaWRlIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0aCBXVEY6Ok9wdGlvbmFsLiAgV2l0
aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMgYW5kIG1ha2UKKyAgICAgICAgdGhl
bSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAgICBIb3dldmVyLCB0aGVyZSBpcyBz
dGlsbCBvbmUgZXhjZXB0aW9uOiBEaXNhbGxvd1ZNUmVlbnRyeSBuZWVkcyBhIHJlbGVhc2UoKSBt
ZXRob2QKKyAgICAgICAgdG8gYWxsb3cgaXQgdG8gZGlzYWJsZSB0aGUgUkFJSSBzY29wZSBhaGVh
ZCBvZiBkZXN0cnVjdGlvbi4gIFRoZSByZWFzb24gZm9yIHRoaXMKKyAgICAgICAgaXMgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgZW5mb3JjZSB0aGF0IFByb3BlcnR5U2xvdHMgd2l0aCBWTUlu
cXVpcnkgaW50ZXJuYWwKKyAgICAgICAgbWV0aG9kIHR5cGUgd2lsbCBhbHdheXMgYmUgYWNjb21w
YW5pZWQgYnkgYSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0byBkaXNhYmxlCisgICAgICAgIGNh
bGxpbmcgYmFjayBpbnRvIEpTLiAgSG93ZXZlciwgdGhpcyBvbmx5IG5lZWQgdG8gYmUgZW5mb3Jj
ZWQgd2hpbGUgY2FsbGluZyBpbnRvCisgICAgICAgIGdldFByb3BlcnR5U2xvdCgpLiAgVGhlcmVh
ZnRlciwgdGhlIGNsaWVudCBtYXkgdXNlIHRoZSByZXN1bHRzIHJldHVybmVkIGluIHRoZQorICAg
ICAgICBQcm9wZXJ0eVNsb3QgdG8gbWFrZSBkZWNpc2lvbnMgb24gdGFraW5nIGFjdGlvbiB0aGF0
IG1heSBlbnRhaWwgY2FsbGluZyBpbnRvIEpTLgorICAgICAgICBUaGlzIG1ha2VzIG1hbmFnaW5n
IHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0cmlja3kuICBU
bworICAgICAgICB3b3JrYXJvdW5kIHRoaXMsIHdlIGxldCBEaXNhbGxvd1ZNUmVlbnRyeSBoYXZl
IGEgcmVsZWFzZSgpIG1ldGhvZCB0aGF0IGJhc2ljYWxseQorICAgICAgICBkb2VzIGFuIGVhcmx5
IHJlbGVhc2Ugb2YgcGVybWlzc2lvbiB0byBjYWxsIGludG8gSlMuICBUaGUgcmVsZWFzZSgpIG1l
dGhvZCBzaG91bGQKKyAgICAgICAgb25seSBiZSB1c2VkIGluIHBsYWNlcyB3aGVyZSB3ZSBjYW4n
dCByZWx5IG9uIGRlc3RydWN0aW9uIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeQorICAgICAgICBz
Y29wZSB0byB0YWtlIGNhcmUgb2YgdGhlIHJlbGVhc2UgYXV0b21hdGljYWxseS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUs
IGFuZCBhbHNvCisgICAgICAgICAgIGxheXMgdGhlIGdyb3VuZCB3b3JrIGluIGNhc2Ugd2Ugd2Fu
dCB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIG1vZGVzIG9mIGRpc2FibGluZworICAgICAgICAgICBW
TSBlbnRyeSBpbnN0ZWFkIG9mIGNyYXNoaW5nIGUuZy4gc2lsZW50IHJlamVjdGlvbnMgKGp1c3Qg
c2ltcGx5IGNob29zaW5nIG5vdAorICAgICAgICAgICB0byBjYWxsIGludG8gSlMsIGFuZCBhbHdh
eXMgcmV0dXJuaW5nIHVuZGVmaW5lZCkgaWYgd2UgbmVlZCBpdCBpbiB0aGUgZnV0dXJlLgorICAg
ICAgICAgICBGb3Igbm93LCB0aGUgb25seSBtb2RlIG9mIGRpc2FsbG93aW5nIGVudHJ5IGlzIHRv
IGNyYXNoLgorCisgICAgICAgIDMuIENoYW5nZSBEaXNhbGxvd1Njb3BlIGFuZCBEaXNhbGxvd0dD
IHRvIGJlIGJhc2VkIG9uIEFTU0VSVF9FTkFCTEVEIGluc3RlYWQgb2YgTkVCVUcuCisKKyAgICAg
ICAgNC4gTWFrZSBEaXNhbGxvd1ZNRW50cnkgYWx3YXlzIGVuZm9yY2VhYmxlLCBub3QganVzdCB3
aGVuIEFTU0VSVF9FTkFCTEVELgorCisgICAgICAgIDUuIEFkZCBEaXNhbGxvd1ZNRW50cnkgc2Nv
cGVzIHdoZW5ldmVyIHdlIGNyZWF0ZSBhIFByb3BlcnR5U2xvdCBmb3IgVk1JbnF1aXJ5LgorICAg
ICAgICAgICBUaGUgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yIHdpbGwgbm93IHRha2UgYW4gb3B0
aW9uYWwgRGlzYWxsb3dWTUVudHJ5IHBvaW50ZXIuCisgICAgICAgICAgIElmIHRoZSBzbG90J3Mg
c3BlY2lmaWVkIGludGVybmFsIG1ldGhvZCB0eXBlIGlzIFZNSW5xdWlyeSwgdGhlbiB3ZSdsbAor
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCB0aGF0IHRoZSBEaXNhbGxvd1ZNRW50cnkgcG9pbnRl
ciBpcyBub24tbnVsbC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdldHRlcik6
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBoZWFwL0RlZmVyR0MuY3BwOgorICAgICAgICAqIGhlYXAvRGVmZXJHQy5oOgorICAgICAgICAo
SlNDOjpEaXNhbGxvd0dDOjpEaXNhbGxvd0dDKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dHQzo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmpl
Y3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGFuY2VzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlUHJvZ3Jh
bSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVs
ZVByb2dyYW0pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBs
bGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9X
X1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF9jaGVja192bV9lbnRyeV9w
ZXJtaXNzaW9uKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93U2NvcGUu
aDoKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6RGlzYWxsb3dTY29wZSk6CisgICAgICAg
IChKU0M6OkRpc2FsbG93U2NvcGU6On5EaXNhbGxvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6RGlz
YWxsb3dTY29wZTo6aXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCk6CisgICAgICAgIChKU0M6OkRp
c2FsbG93U2NvcGU6OmVuYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2Nv
cGU6OmRpc2FibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjplbnRl
clNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6ZXhpdFNjb3Bl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5Lmg6CisgICAgICAgIChKU0M6OkRpc2Fs
bG93Vk1SZWVudHJ5OjpEaXNhbGxvd1ZNUmVlbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RGlzYWxsb3dWTVJlZW50cnk6OnNjb3BlUmVlbnRyeUNvdW50KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RGlzYWxsb3dWTVJlZW50cnk6OnNldFNjb3BlUmVlbnRyeUNvdW50KTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJv
ckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZSk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZFJlc3RyaWN0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rp
b246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRHZXR0ZXJCeUlkKToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbGN1
bGF0ZWRDbGFzc05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToKKyAgICAgICAg
KiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpP
YmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5SW5pdGlhbGl6
ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oOgorICAg
ICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjp2bSBjb25zdCk6CisgICAgICAg
IChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Ok9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjp+T2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGU6Om5vdGlmeUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xv
dC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9TYW1w
bGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tG
cmFtZTo6bmFtZUZyb21DYWxsZWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6
Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAg
KEpTQzo6ZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIpOgorCiAyMDIwLTA3LTE5ICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIC1XYXJyYXktYm91bmRz
IHdhcm5pbmdzIGluIHRlc3RiMyBhbmQgdGVzdGFpcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04MzUsNyArODM1LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIHJ1bnRpbWUvRGlyZWN0QXJn
dW1lbnRzT2Zmc2V0LmgKICAgICBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKICAgICBy
dW50aW1lL0Rpc2FsbG93U2NvcGUuaAotICAgIHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAor
ICAgIHJ1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgKICAgICBydW50aW1lL0R1bXBDb250ZXh0LmgK
ICAgICBydW50aW1lL0VDTUFNb2RlLmgKICAgICBydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJl
LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI2NDU3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzY2
LDcgKzc2Niw2IEBAIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvRGlyZWN0QXJn
dW1lbnRzLmNwcAogcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuY3BwCiBydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcAotcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAKIHJ1
bnRpbWUvRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmNwcAogcnVudGltZS9EdW1wQ29udGV4
dC5jcHAKIHJ1bnRpbWUvRUNNQU1vZGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjY0
NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw4ICsyOTgsMTMgQEAgYm9vbCBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlm
IChTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpKQorICAgICAgICAgICAgICAgICAgICBi
b29sIGZvdW5kOworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSBQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFBhcmVudDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NjgsOSArNjczLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlz
T2JqID0gYXNDYWxsYmFja09iamVjdCh0aGlzVmFsdWUpOwogICAgIAogICAgIC8vIENoZWNrIGZv
ciBjYWNoZWQgb3Igb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgUHJvcGVydHlTbG90IHNsb3QyKHRo
aXNPYmosIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAg
IGlmIChQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdDIpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3Qy
LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CisgICAgeworICAgICAgICBE
aXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QyKHRoaXNPYmosIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBib29sIGZvdW5kID0gUGFyZW50OjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qy
KTsKKyAgICAgICAgZGlzYWxsb3dWTUVudHJ5LnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKGZvdW5k
KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAgIH0KIAogICAgIGlmIChTdHJpbmdJbXBsKiBu
YW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0Ns
YXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBh
cmVudENsYXNzKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5MTYsNyArMTkxNiw3IEBACiAJ
CUZFNTMzQ0E1MUYyMTdEQjMwMDE2QTFGRSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZD
NkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJRkU1MzNDQTYxRjIx
N0RCMzAwMTZBMUZFIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3
NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAJCUZFNTMzQ0FEMUYyMTdFQTUw
MDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTUzM0NBMDFGMjE3QzMxMDAxNkExRkUgLyogdGVzdG1hc20uY3BwICov
OyB9OwotCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZBMUU4
QzZENzIwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNTRERUZCMUU4QzZEODgwMEE4OTJDNSAv
KiBEaXNhbGxvd1ZNRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTU0REVG
RjFFOEQ3NkZBMDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NERFRkUxRThENzQyODAwQTg5MkM1IC8qIERp
c2FsbG93U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTU2MjhDRTFFOTk1MTMyMDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU2MjhDQzFFOTk1
MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmggKi87IH07CiAJCUZFNTkzMkE4MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NTIwMSw4ICs1MjAxLDcgQEAKIAkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVk
U291cmNlRHVtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZl
cnJlZFNvdXJjZUR1bXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTUzM0NB
MDFGMjE3QzMxMDAxNkExRkUgLyogdGVzdG1hc20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVz
dG1hc20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTUzM0NBQzFGMjE3REI0
MDAxNkExRkUgLyogdGVzdG1hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IHRlc3RtYXNtOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwotCQlGRTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzYWxsb3dWTVJlZW50cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkU1NERFRkMxRThDNkRGRjAwQTg5MkM1IC8qIERpc2Fs
bG93Vk1SZWVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERp
c2FsbG93Vk1SZWVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1NERF
RkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNhbGxvd1ZNRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU1NERFRkUxRThENzQyODAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzYWxsb3dTY29wZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTU2MjhDQjFFOTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRT
cGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclByaW50
U3BlY2lhbC5jcHA7IHBhdGggPSBiMy9haXIvQWlyUHJpbnRTcGVjaWFsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1NjI4Q0MxRTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50
U3BlY2lhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJQcmludFNwZWNp
YWwuaDsgcGF0aCA9IGIzL2Fpci9BaXJQcmludFNwZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTcxNDMsOCArNzE0Miw3IEBACiAJCQkJMTQzODZBNzIxREQ2OTg5NTAwODY1
MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCAqLywKIAkJCQkxNDM4NkE3MzFERDY5ODk1
MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCAqLywKIAkJCQlGRTU0REVGRTFFOEQ3
NDI4MDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oICovLAotCQkJCUZFNTRERUZDMUU4QzZERkYw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5jcHAgKi8sCi0JCQkJRkU1NERFRkExRThDNkQ3
MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggKi8sCisJCQkJRkU1NERFRkExRThDNkQ3
MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRyeS5oICovLAogCQkJCUUzMTYxODEwMUVDNUZFMDgw
MDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi8sCiAJCQkJRTMxNjE4MTExRUM1RkUwODAwMDZB
MjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5jcHAgKi8sCiAJCQkJRTMxNjE4MTIxRUM1
RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oICovLApAQCAtOTQ4Miw3
ICs5NDgwLDcgQEAKIAkJCQkxNDM4NkE3NTFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4
ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzczMDhGMUMwQ0Q2ODUwMDA1MkJGQSAv
KiBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFNTRERUZGMUU4RDc2RkEwMEE4OTJDNSAvKiBEaXNhbGxvd1Njb3BlLmggaW4gSGVhZGVycyAq
LywKLQkJCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFNTRERUZCMUU4QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZN
RW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzMxMTU4RUJENTQwMDRDQjlGRiAvKiBE
aXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMTYxODEzMUVDNUZFMTcwMDA2QTIx
OCAvKiBET01Bbm5vdGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzE2MTgxNTFFQzVGRTI3
MDAwNkEyMTggLyogRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuY3BwCShyZXZpc2lvbiAyNjQ1NzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZm5kZWYgTkRFQlVH
CisjaWYgQVNTRVJUX0VOQUJMRUQKIExhenlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1
bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpUcnVlPj4gRGlzYWxsb3dHQzo6c19zY29wZVJl
ZW50cnlDb3VudDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9E
ZWZlckdDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJH
Qy5oCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZl
ckdDLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDE2ICs3Nyw4IEBAIGNsYXNzIERpc2FsbG93R0Mg
OiBwdWJsaWMgRGlzYWxsb3dTY29wZTwKICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsK
ICAgICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dHQz4gQmFzZTsKIHB1YmxpYzoKLSNp
ZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dHQyhib29sID0gZmFsc2Up
IHsgfQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQotCi0j
ZWxzZSAvLyBub3QgTkRFQlVHCi0KLSAgICBEaXNhbGxvd0dDKGJvb2wgZW5hYmxlZCA9IHRydWUp
Ci0gICAgICAgIDogQmFzZShlbmFibGVkKQotICAgIHsgfQorI2lmIEFTU0VSVF9FTkFCTEVECisg
ICAgRGlzYWxsb3dHQygpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUo
KQogICAgIHsKQEAgLTEwNSw3ICs5NywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWdu
ZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7CiAKLSNl
bmRpZiAvLyBOREVCVUcKKyNlbHNlCisgICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd0dDKCkgeyB9
IC8vIFdlIG5lZWQgdGhpcyB0byBwbGFjYXRlIENsYW5nIGR1ZSB0byB1bnVzZWQgd2FybmluZ3Mu
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9CisjZW5kaWYg
Ly8gQVNTRVJUX0VOQUJMRUQKICAgICAKICAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxE
aXNhbGxvd0dDPjsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3RCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwOSw3ICs0MDksOCBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5j
dGlvCiAgICAgICAgICAgICAvLyAiT2JqZWN0IiBpbiBzbmFwc2hvdHMgYW5kIG5vdCBnZXQgdGhl
IG5hbWUgb2YgdGhlIHByb3RvdHlwZSdzIHBhcmVudC4KICAgICAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChub2RlLmNlbGwpOwogICAgICAgICAgICAgaWYgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBvYmplY3QtPmdsb2JhbE9iamVjdCh2bSkpIHsKLSAgICAgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBk
aXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG9i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2Fs
bG93Vk1FbnRyeSk7CiAgICAgICAgICAgICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5
U2xvdChvYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IHNsb3QpKQogICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSBKU09iamVjdDo6Y2FsY3Vs
YXRlZENsYXNzTmFtZShvYmplY3QpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQ2LDE0ICs2NDYs
MTkgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YQogCiAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSBvYmplY3Q7CiAKLSAgICBQcm9wZXJ0eVNsb3QgcHJvdG90eXBlU2xv
dChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwot
ICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlU2xvdCkpIHsKLSAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgaWYgKHByb3RvdHlwZVNsb3QuaXNWYWx1ZSgp
KSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlU2xvdC5n
ZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAg
ICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICAgICAgICAg
IHByb3RvdHlwZSA9IHByb3RvdHlwZVZhbHVlOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IGFz
T2JqZWN0KHByb3RvdHlwZSk7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHByb3RvdHlwZVNsb3Qob2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dW
TUVudHJ5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGVTbG90KTsK
KyAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgZGlzYWxsb3dWTUVu
dHJ5LnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKGZvdW5kKSB7CisgICAgICAgICAgICBpZiAocHJv
dG90eXBlU2xvdC5pc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlw
ZVZhbHVlID0gcHJvdG90eXBlU2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gcHJvdG90eXBlVmFs
dWU7CisgICAgICAgICAgICAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJs
b28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC04MjUsMTUgKzgyNSwxNSBAQCBmYWlsZWRKU09O
UDoKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAx
IHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dH
QzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBF
eGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUgPSBwcm9ncmFtLT5nZW5l
cmF0ZWRKSVRDb2RlKCk7Ci0KKyAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90
b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxDYWxsZWUsIHRoaXNPYmosIDEpOworICAgIHsKKyAg
ICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0Mg
Y2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAgIGppdENvZGUgPSBw
cm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQo
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGdsb2JhbENhbGxlZSwgdGhpc09iaiwgMSk7CisgICAg
fQogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsK
ICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0Q29kZSA9PSBwcm9ncmFt
LT5nZW5lcmF0ZWRKSVRDb2RlKCkucHRyKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaml0Q29k
ZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CkBAIC04OTAsMjcgKzg5MCwyNCBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAgICAgICAgIG5ld0NvZGVC
bG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBEaXNh
bGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFj
ZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KLQogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
OwotICAgIGlmIChpc0pTQ2FsbCkKLSAgICAgICAgaml0Q29kZSA9IGNhbGxEYXRhLmpzLmZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKLQogICAgIFByb3RvQ2Fs
bEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJs
b2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5k
YXRhKCkpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUg
bm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisg
ICAgICAgIGlmIChpc0pTQ2FsbCkKKyAgICAgICAgICAgIGppdENvZGUgPSBjYWxsRGF0YS5qcy5m
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CisgICAgICAgIHBy
b3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCB0
aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIH0KIAogICAgIEpTVmFsdWUg
cmVzdWx0OwotICAgIHsKLSAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICAgICAgZGlz
YWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAgICAgIGlmIChpc0pTQ2FsbCkgewotICAgICAgICAgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBBU1NFUlQoaml0Q29kZSA9PSBjYWxs
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkucHRy
KCkpOwotICAgICAgICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0Nh
bGxGcmFtZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVl
OjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbi5yYXdQb2lu
dGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIEpTVmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAvLyBFeGVjdXRl
IHRoZSBjb2RlOgorICAgIGlmIChpc0pTQ2FsbCkgeworICAgICAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKKyAgICAgICAgQVNTRVJUKGppdENvZGUgPT0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLnB0cigpKTsKKyAgICAgICAgcmVzdWx0
ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjYWxsRGF0
YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9pbnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFsdWUoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKQEAgLTk3MiwyOCArOTY5LDI1
IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgbmV3
Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgIH0KIAotICAg
IERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiBy
ZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCiAgICAgUmVmUHRyPEpJVENvZGU+IGpp
dENvZGU7Ci0gICAgaWYgKGlzSlNDb25zdHJ1Y3QpCi0gICAgICAgIGppdENvZGUgPSBjb25zdHJ1
Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVj
dCgpOwotCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxs
RnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIG5ld1Rh
cmdldCwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgeworICAgICAgICBEaXNhbGxvd0dD
IGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2Rl
QmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpCisgICAgICAg
ICAgICBqaXRDb2RlID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChu
ZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIG5ld1RhcmdldCwgYXJnc0Nv
dW50LCBhcmdzLmRhdGEoKSk7CisgICAgfQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewot
ICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlLgotICAgICAgICBkaXNhbGxvd0dDLmRpc2FibGUo
KTsKLSAgICAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIEFTU0VSVChqaXRD
b2RlID09IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yQ29uc3RydWN0KCkucHRyKCkpOwotICAgICAgICAgICAgcmVzdWx0ID0gaml0Q29kZS0+
ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNvbnN0cnVjdERh
dGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsK
KyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlLgorICAgIGlmIChpc0pTQ29uc3RydWN0KSB7CisgICAg
ICAgIEFTU0VSVChqaXRDb2RlID09IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxl
LT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkucHRyKCkpOworICAgICAgICByZXN1bHQg
PSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUp
KTsKIAotICAgICAgICAgICAgaWYgKExJS0VMWSghdGhyb3dTY29wZS5leGNlcHRpb24oKSkpCi0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzT2JqZWN0KCkpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChMSUtFTFkoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzT2JqZWN0KCkpOwogICAgIH0KIAogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CkBAIC0xMTAwLDE5ICsxMDk0
LDI0IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIC8v
IFdlIGNhbid0IGRlY2xhcmUgYSAidmFyIi8iZnVuY3Rpb24iIHRoYXQgb3ZlcndyaXRlcyBhIGds
b2JhbCAibGV0Ii8iY29uc3QiLyJjbGFzcyIgaW4gYSBzbG9wcHktbW9kZSBldmFsLgogICAgIGlm
ICh2YXJpYWJsZU9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSAmJiAhZXZhbC0+aXNJblN0cmljdENv
bnRleHQoKSAmJiAobnVtVmFyaWFibGVzIHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsK
KyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CiAgICAgICAgIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPih2YXJpYWJsZU9iamVjdCktPmdsb2JhbExleGljYWxFbnZpcm9u
bWVudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyAr
K2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdW5saW5rZWRDb2Rl
QmxvY2stPnZhcmlhYmxlKGkpOwotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKLSAgICAgICAgICAgIGlmIChKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0
T3duUHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0LCBp
ZGVudCwgc2xvdCkpIHsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGlj
YWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICBib29sIGZvdW5kID0gSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOworICAgICAgICAgICAgdGhyb3dTY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2
YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSksICInIikpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7ICsraSkgewogICAgICAgICAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwotICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAgIGlmIChKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExleGljYWxF
bnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbi0+bmFtZSgpLCBzbG90KSkgeworICAg
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5
KTsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6
OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVj
dCwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCk7CisgICAgICAgICAgICB0aHJvd1Njb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBpZiAoZm91bmQpIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxl
IGluIGV2YWw6ICciLCBTdHJpbmcoZnVuY3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOTMsMTUgKzExOTIsMTUgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICBBU1NFUlQoY29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAgICAg
fQogCi0gICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4g
R0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0KLSAgICBSZWZQdHI8SklU
Q29kZT4gaml0Q29kZSA9IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKTsKLQorICAgIFJlZlB0cjxK
SVRDb2RlPiBqaXRDb2RlOwogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwgdGhp
c1ZhbHVlLCAxKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5z
dXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxl
LgorICAgICAgICBqaXRDb2RlID0gZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpOworICAgICAgICBw
cm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIHRoaXNW
YWx1ZSwgMSk7CisgICAgfQogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBkaXNhbGxv
d0dDLmRpc2FibGUoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0
Q29kZSA9PSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCkucHRyKCkpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CkBAIC0xMjUxLDE4
ICsxMjUwLDE4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmEKICAg
ICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFt
ZXRlciBmb3IgJ3RoaXMnLgogICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8g
RW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRh
YmxlLgotCi0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUgPSBleGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlKCk7Ci0KLSAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlz
IGB1bmRlZmluZWRgLgotICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGlu
ZwotICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgIFJlZlB0
cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwot
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwg
anNVbmRlZmluZWQoKSwgMSk7CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7
IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhl
Y3V0YWJsZS4KKyAgICAgICAgaml0Q29kZSA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUo
KTsKKyAgICAgICAgLy8gVGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZp
bmVkYC4KKyAgICAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCisg
ICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgICAgICBw
cm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpzVW5k
ZWZpbmVkKCksIDEpOworICAgIH0KIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlz
YWxsb3dHQy5kaXNhYmxlKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJU
KGppdENvZGUgPT0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigpKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsMTQgKzE2NywxNiBAQCBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29uc3RydWN0CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRyeUdldEJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2Fj
aGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKwogICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21S
YXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKICAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGJhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHNsb3QpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90
LmdldFB1cmVSZXN1bHQoKSk7CkBAIC0xODQsMTMgKzE4NiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRyeUdldEJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlz
YWxsb3dWTUVudHJ5KHZtKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRl
bnRpZmllcik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0s
IGlkZW50aWZpZXIudWlkKCkpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoYmFzZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZkaXNhbGxvd1ZNRW50cnkpOwogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFs
T2JqZWN0LCBpZGVudCwgc2xvdCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3Qu
Z2V0UHVyZVJlc3VsdCgpKTsKQEAgLTE5OSwxNCArMjAzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVHIKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90
IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMo
cmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogCiAgICAgYmFzZVZhbHVlLmdldFBy
b3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjMxLDEyICs2MzEsMTQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2luc3RhbmNlbwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVu
dHJ5KHZtKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVHJ5R2V0QnlJZD4oKTsKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNs
b3QpOworICAgIHRocm93U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IHNsb3QuZ2V0UHVyZVJlc3VsdCgpOwogCiAgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7CkBAIC0xMDkzLDkgKzEwOTUsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9wcml2YQogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIEFTU0VS
VChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpOwogCi0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAg
ICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgc2xvdCk7Ci0gICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgRGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxs
b3dWTUVudHJ5KTsKKyAgICBib29sIGZvdW5kID0gYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0UHJp
dmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAgIHRocm93U2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBkaXNhbGxvd1ZNRW50cnkucmVsZWFzZSgpOworICAg
IGlmICghZm91bmQpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQcml2YXRlTmFt
ZUVycm9yKGdsb2JhbE9iamVjdCkpOwogCiAgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NM
T1cgJiYgc2xvdC5pc0NhY2hlYWJsZSgpICYmICFzbG90LmlzVW5zZXQoKSkgewogICAgICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CkBAIC0yMzE2LDYg
KzIzMjIsMTIgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdwogICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKGNlbGwpOwogfQogCitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
Y2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKikKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVCghdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50KTsgLy8gQ3VycmVudGx5
LCB0aGlzIHNob3VsZCBhbHdheXMgY3Jhc2guCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFs
dWUgdmFsdWUpOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFs
dWUgdmFsdWUpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDcsNiArMTQ3LDcgQEAg
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoXwogI2lmIEVOQUJMRShDX0xP
T1ApCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92
bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwogI2VuZGlmCitleHRlcm4gIkMi
IE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNz
aW9uKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiBleHRlcm4gIkMiIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGludF9jcmFzaCgpIFdURl9JTlRFUk5BTDsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzAsNiArMTcwLDkgQEAgbWFjcm8gZG9WTUVudHJ5KG1h
a2VDYWxsKQogICAgICMgU2luY2Ugd2UgaGF2ZSB0aGUgZ3VhcmFudGVlIHRoYXQgdFggIT0gYVkg
d2hlbiBYICE9IFksIHdlIGFyZSBzYWZlIGZyb20KICAgICAjIGFsaWFzaW5nIHByb2JsZW1zIHdp
dGggb3VyIGFyZ3VtZW50cy4KIAorICAgIGxvYWRpIFZNOjpkaXNhbGxvd1ZNRW50cnlDb3VudFt2
bV0sIHQ0CisgICAgYnRpbnogdDQsIC5jaGVja1ZNRW50cnlQZXJtaXNzaW9uCisKICAgICBpZiBB
Uk12NwogICAgICAgICB2bUVudHJ5UmVjb3JkKGNmciwgdDMpCiAgICAgICAgIG1vdmUgdDMsIHNw
CkBAIC0zMTksNiArMzIyLDEzIEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICBwb3BD
YWxsZWVTYXZlcygpCiAgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgcmV0CisKKy5jaGVja1ZN
RW50cnlQZXJtaXNzaW9uOgorICAgICMgV2UgZ2V0IGhlcmUgYmVjYXVzZSB2bS0+ZGlzYWxsb3dW
TUVudHJ5Q291bnQgaXMgbm9uLXplcm8uIEN1cnJlbnRseSwgdGhpcworICAgICMgYWx3YXlzIG1l
YW5zIHdlIHdpbGwgY3Jhc2guCisgICAgbW92ZSBhMCwgdm0KKyAgICBtb3ZlIGExLCBwcm90b0Nh
bGxGcmFtZQorICAgIGNDYWxsMihfbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbikKIGVu
ZAogCiAjIGEwLCBhMiwgdDMsIHQ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjY0NTc0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsOSBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNh
bGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0NCwgMHhiYWQwZGMwMSkKIAor
ICAgIGxvYWRpIFZNOjpkaXNhbGxvd1ZNRW50cnlDb3VudFt2bV0sIHQ0CisgICAgYnRpbnogdDQs
IC5jaGVja1ZNRW50cnlQZXJtaXNzaW9uCisKICAgICBzdG9yZXAgdm0sIFZNRW50cnlSZWNvcmQ6
Om1fdm1bc3BdCiAgICAgbG9hZHAgVk06OnRvcENhbGxGcmFtZVt2bV0sIHQ0CiAgICAgc3RvcmVw
IHQ0LCBWTUVudHJ5UmVjb3JkOjptX3ByZXZUb3BDYWxsRnJhbWVbc3BdCkBAIC0yODQsNiArMjg3
LDEzIEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICBwb3BDYWxsZWVTYXZlcygpCiAg
ICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgcmV0CisKKy5jaGVja1ZNRW50cnlQZXJtaXNzaW9u
OgorICAgICMgV2UgZ2V0IGhlcmUgYmVjYXVzZSB2bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQgaXMg
bm9uLXplcm8uIEN1cnJlbnRseSwgdGhpcworICAgICMgYWx3YXlzIG1lYW5zIHdlIHdpbGwgY3Jh
c2guCisgICAgbW92ZSBhMCwgdm0KKyAgICBtb3ZlIGExLCBwcm90b0NhbGxGcmFtZQorICAgIGND
YWxsMihfbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbikKIGVuZAogCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2NvcGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1Njb3BlLmgJKHJldmlzaW9u
IDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2NvcGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDI3ICszNSwxOCBAQCBjbGFzcyBEaXNhbGxvd1Njb3Bl
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1Njb3BlKTsKICAgICBXVEZfRk9S
QklEX0hFQVBfQUxMT0NBVElPTjsKIHB1YmxpYzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZ
U19JTkxJTkUgRGlzYWxsb3dTY29wZShib29sID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJ
TkUgfkRpc2FsbG93U2NvcGUoKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlz
SW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBlbmFibGUoKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlzYWJsZSgp
IHsgfQotCi0jZWxzZSAvLyBub3QgTkRFQlVHCi0KLSAgICBEaXNhbGxvd1Njb3BlKGJvb2wgZW5h
YmxlZCA9IHRydWUpCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBEaXNhbGxvd1Njb3BlKCkKICAg
ICB7Ci0gICAgICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsKLSAgICAgICAgaWYgKG1faXNFbmFi
bGVkKQotICAgICAgICAgICAgZW50ZXJTY29wZSgpOworICAgICAgICBhdXRvIGNvdW50ID0gVDo6
c2NvcGVSZWVudHJ5Q291bnQoKTsKKyAgICAgICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoKytj
b3VudCk7CiAgICAgfQogCiAgICAgfkRpc2FsbG93U2NvcGUoKQogICAgIHsKLSAgICAgICAgaWYg
KG1faXNFbmFibGVkKQotICAgICAgICAgICAgZXhpdFNjb3BlKCk7CisgICAgICAgIGF1dG8gY291
bnQgPSBUOjpzY29wZVJlZW50cnlDb3VudCgpOworICAgICAgICBBU1NFUlQoY291bnQpOworICAg
ICAgICBUOjpzZXRTY29wZVJlZW50cnlDb3VudCgtLWNvdW50KTsKICAgICB9CiAKICAgICBzdGF0
aWMgYm9vbCBpc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKCkKQEAgLTYzLDM0ICs1NCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAhIVQ6OnNjb3BlUmVlbnRyeUNvdW50KCk7CiAgICAgfQog
Ci0gICAgdm9pZCBlbmFibGUoKQotICAgIHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSB0cnVlOwot
ICAgICAgICBlbnRlclNjb3BlKCk7Ci0gICAgfQotCi0gICAgdm9pZCBkaXNhYmxlKCkKLSAgICB7
Ci0gICAgICAgIG1faXNFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIGV4aXRTY29wZSgpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGVudGVyU2NvcGUoKQotICAgIHsKLSAgICAgICAgYXV0
byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRyeUNvdW50KCk7Ci0gICAgICAgIFQ6OnNldFNjb3BlUmVl
bnRyeUNvdW50KCsrY291bnQpOwotICAgIH0KLQotICAgIHZvaWQgZXhpdFNjb3BlKCkKLSAgICB7
Ci0gICAgICAgIGF1dG8gY291bnQgPSBUOjpzY29wZVJlZW50cnlDb3VudCgpOwotICAgICAgICBB
U1NFUlQoY291bnQpOwotICAgICAgICBUOjpzZXRTY29wZVJlZW50cnlDb3VudCgtLWNvdW50KTsK
LSAgICB9Ci0KLSAgICBib29sIG1faXNFbmFibGVkOwotI2VuZGlmIC8vIE5ERUJVRworI2Vsc2Ug
Ly8gbm90IEFTU0VSVF9FTkFCTEVECisgICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1Njb3BlKCkg
eyB9IC8vIFdlIG5lZWQgdGhpcyB0byBwbGFjYXRlIENsYW5nIGR1ZSB0byB1bnVzZWQgd2Fybmlu
Z3MuCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luRWZmZWN0T25DdXJyZW50VGhy
ZWFkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
aXNhbGxvd1ZNUmVlbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLSAgICAK
LSNpZm5kZWYgTkRFQlVHCi1MYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWdu
ZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IERpc2FsbG93Vk1SZWVudHJ5OjpzX3Njb3Bl
UmVlbnRyeUNvdW50OwotI2VuZGlmCi0gICAgCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAko
cmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxs
b3dWTVJlZW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJEaXNhbGxvd1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFz
cyBEaXNhbGxvd1ZNUmVlbnRyeSA6IHB1YmxpYyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVu
dHJ5PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzYWxsb3dWTVJlZW50cnkpOwotICAg
IHR5cGVkZWYgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4gQmFzZTsKLXB1YmxpYzoK
LSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dWTVJlZW50cnkoYm9v
bCA9IGZhbHNlKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUo
KSB7IH0KLQotI2Vsc2UgLy8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dWTVJlZW50cnkoYm9v
bCBlbmFibGVkID0gdHJ1ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHNfc2NvcGVSZWVudHJ5
Q291bnQuY29uc3RydWN0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25l
ZCBzY29wZVJlZW50cnlDb3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gKnNfc2NvcGVSZWVu
dHJ5Q291bnQuZ2V0KCk7Ci0gICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFNjb3BlUmVlbnRyeUNv
dW50KHVuc2lnbmVkIHZhbHVlKQotICAgIHsKLSAgICAgICAgKnNfc2NvcGVSZWVudHJ5Q291bnQu
Z2V0KCkgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJl
YWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50OwotCi0jZW5kaWYgLy8gTkRFQlVHCi0KLSAg
ICBmcmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT47Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDcgKzEzOSw4IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIAog
ICAgIEpTVmFsdWUgbmFtZVZhbHVlOwogICAgIGF1dG8gbmFtZVByb3BlcnROYW1lID0gdm0ucHJv
cGVydHlOYW1lcy0+bmFtZTsKLSAgICBQcm9wZXJ0eVNsb3QgbmFtZVNsb3QodGhpcywgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVu
dHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IG5hbWVTbG90KHRoaXMs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpOwogCiAgICAgSlNWYWx1ZSBjdXJyZW50T2JqID0gdGhpczsKICAgICB1bnNpZ25lZCBw
cm90b3R5cGVEZXB0aCA9IDA7CkBAIC0xNjcsNyArMTY4LDcgQEAgU3RyaW5nIEVycm9ySW5zdGFu
Y2U6OnNhbml0aXplZFRvU3RyaW5nKAogCiAgICAgSlNWYWx1ZSBtZXNzYWdlVmFsdWU7CiAgICAg
YXV0byBtZXNzYWdlUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlOwotICAg
IFByb3BlcnR5U2xvdCBtZXNzYWdlU2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3QgbWVzc2FnZVNsb3QodGhpcywg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1F
bnRyeSk7CiAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZ2xvYmFs
T2JqZWN0LCBtZXNzYWdlUHJvcGVydE5hbWUsIG1lc3NhZ2VTbG90KSAmJiBtZXNzYWdlU2xvdC5p
c1ZhbHVlKCkpCiAgICAgICAgIG1lc3NhZ2VWYWx1ZSA9IG1lc3NhZ2VTbG90LmdldFZhbHVlKGds
b2JhbE9iamVjdCwgbWVzc2FnZVByb3BlcnROYW1lKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5pdGlh
bGl6ZVRocmVhZGluZy5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKICNpbmNs
dWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAjaW5j
bHVkZSAiSlNDUHRyVGFnLmgiCkBAIC03OCwxMCArNzcsOCBAQCB2b2lkIGluaXRpYWxpemUoKQog
ICAgICAgICAgICAgZW5hYmxlU2lnaWxsQ3Jhc2hBbmFseXplcigpOwogCiAgICAgICAgIExMSW50
Ojppbml0aWFsaXplKCk7Ci0jaWZuZGVmIE5ERUJVRwogICAgICAgICBEaXNhbGxvd0dDOjppbml0
aWFsaXplKCk7Ci0gICAgICAgIERpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXplKCk7Ci0jZW5k
aWYKKwogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7CiAgICAgICAgIFRocmVhZCYg
dGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIHRocmVhZC5zZXRTYXZlZExhc3RT
dGFja1RvcCh0aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkg
KHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diAoYXBAbnlwb3AuY29tKQogICoKQEAgLTk2LDggKzk2LDcgQEAgSlNBcnJheSogSlNBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY3JlYXRlV2l0
aEJ1dHRlcmZseSh2bSwgZGVmZXJyYWxDb250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAK
LSAgICBjb25zdCBib29sIGNyZWF0ZVVuaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHNjb3BlLm5v
dGlmeUFsbG9jYXRlZChyZXN1bHQsIGNyZWF0ZVVuaW5pdGlhbGl6ZWQpOworICAgIHNjb3BlLm5v
dGlmeUFsbG9jYXRlZChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAy
NjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24g
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA4LDkgKzUwOCwxMCBAQCB2b2lkIEpTRnVu
Y3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOCiAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMg
YmVlbiByZWlmaWVkLgotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAg
ICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNsb3QpOwotICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFi
bGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKSB7CiAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKTsKQEAgLTU2
Myw5ICs1NjQsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsbwog
ICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90
b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0
dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4
LjEyLjkuCi0gICAgICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
ZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXRTbG90KTsKKyAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Cisg
ICAgICAgIH0KICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09i
amVjdC0+cmFyZURhdGEoKSkKICAgICAgICAgICAgIHJhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8g
cHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KSk7CkBAIC02NDIsOSArNjQ2LDEyIEBAIGJvb2wgSlNGdW5jdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBl
IGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgog
ICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45
LgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRy
eSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICB9CiAgICAgICAg
IGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKCkp
CiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0
eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFz
ZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Niw5ICsxNTYsMTEgQEAgaW5saW5lIEpT
T2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFRoaXMgZ2V0UHJvcGVydHlTbG90IG9wZXJhdGlvbiBzaG91bGQgbm90IGJlIG9ic2Vy
dmVkIGJ5IHRoZSBQcm94eS4KICAgICAgICAgICAgIC8vIFNvIHdlIHVzZSBWTUlucXVpcnkuIEFu
ZCBwdXJnZSB0aGUgb3BhcXVlIG9iamVjdCBjYXNlcyAocHJveHkgYW5kIG5hbWVzcGFjZSBvYmpl
Y3QpIGJ5IGlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgZ3VhcmQuCi0gICAgICAgICAgICBQcm9w
ZXJ0eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1F
bnRyeSh2bSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOwogICAgICAgICAgICAgb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGxlbmd0aFNsb3QpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBzY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOworICAgICAgICAgICAgZGlzYWxsb3dWTUVudHJ5LnJlbGVhc2UoKTsKIAog
ICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmMgPSBvYmplY3QtPmdldChnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjY0NTc0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0R2xv
YmFsVGhpcyhWTSYgdgogc3RhdGljIEdldHRlclNldHRlciogZ2V0R2V0dGVyQnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCiB7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlKGJhc2UpOwotICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShnbG9i
YWxPYmplY3QtPnZtKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKICAgICByZXR1cm4ganNDYXN0PEdldHRlclNldHRlcio+KHNsb3QuZ2V0UHVyZVJlc3VsdCgp
KTsKIH0KQEAgLTEzODMsMTAgKzEzODQsMTMgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6cHV0KEpT
Q2VsbCogY2VsbCwgSgogYm9vbCBKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAv
LyBzaWxlbnRseSBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIGFjY2Vzc29ycyBhbGlhc2luZyB2YXJz
LgotICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgc3ltYm9sVGFi
bGVHZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh0aGlz
T2JqZWN0LT52bSgpKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRy
eSk7CisgICAgICAgIC8vIHNpbGVudGx5IGlnbm9yZSBhdHRlbXB0cyB0byBhZGQgYWNjZXNzb3Jz
IGFsaWFzaW5nIHZhcnMuCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlw
dG9yKCkgJiYgc3ltYm9sVGFibGVHZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIEJhc2U6OmRlZmlu
ZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKQEAgLTIwNTIsNyArMjA1Niw4IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICAgICAgbV9hcnJheVNwZWNpZXNX
YXRjaHBvaW50U2V0LmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIldhcyBub3QgYWJs
ZSB0byBzZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRjaHBvaW50LiIpKTsKICAgICB9OwogCi0gICAg
UHJvcGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChhcnJheVByb3RvdHlwZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChhcnJh
eVByb3RvdHlwZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgYXJyYXlQcm90b3R5cGUtPmdldE93blByb3BlcnR5U2xv
dChhcnJheVByb3RvdHlwZSwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNv
bnN0cnVjdG9yU2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAo
Y29uc3RydWN0b3JTbG90LnNsb3RCYXNlKCkgIT0gYXJyYXlQcm90b3R5cGUKQEAgLTIwNjYsNyAr
MjA3MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICBp
ZiAoY29uc3RydWN0b3JTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBjb25zdHJ1
Y3RvclN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0
cnVjdHVyZSh2bSwgYXJyYXlDb25zdHJ1Y3Rvcik7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc3BlY2ll
c1Nsb3QoYXJyYXlDb25zdHJ1Y3RvciwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNwZWNpZXNTbG90KGFycmF5Q29uc3RydWN0
b3IsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOwogICAgIGFycmF5Q29uc3RydWN0b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJh
eUNvbnN0cnVjdG9yLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVj
aWVzU2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoc3BlY2ll
c1Nsb3Quc2xvdEJhc2UoKSAhPSBhcnJheUNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwg
KGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTM0LDkgKzUzNCwxMSBAQCBTdHJp
bmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAKICAgICAvLyBDaGVjayBmb3Ig
YSBkaXNwbGF5IG5hbWUgb2Ygb2JqLmNvbnN0cnVjdG9yLgogICAgIC8vIFRoaXMgaXMgdXNlZnVs
IHRvIGdldCBgRm9vYCBmb3IgdGhlIGAoY2xhc3MgRm9vKS5wcm90b3R5cGVgIG9iamVjdC4KLSAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwotICAgIGlmIChvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3QpKSB7
Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBEaXNh
bGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNh
bGxvd1ZNRW50cnkpOworICAgIGJvb2wgZm91bmQgPSBvYmplY3QtPmdldE93blByb3BlcnR5U2xv
dChvYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNs
b3QpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgaWYgKGZvdW5kKSB7CiAg
ICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBj
dG9yT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBzbG90LmdldFZhbHVlKGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpKSkgewogICAgICAgICAg
ICAgICAgIGlmIChKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvckZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIGN0b3JPYmplY3QpKQpAQCAtNTU4LDkgKzU2MCwxMCBAQCBTdHJp
bmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAgICAgICAgICAgICBKU1ZhbHVl
IHByb3RvVmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgICAg
ICBpZiAocHJvdG9WYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IHByb3RvT2JqZWN0ID0gYXNPYmplY3QocHJvdG9WYWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QocHJvdG9WYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb3RvT2JqZWN0LT5nZXRQcm9w
ZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xv
dCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkpOworICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHByb3RvVmFsdWUsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOworICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b09iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3Qp
OworICAgICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzbG90LmlzVmFsdWUo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBjdG9yT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvckZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIGN0b3JPYmplY3QpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI2NDU3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MDQsNyArNjA0LDggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByaXZh
dGVGaWVsZChKUwogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghSlNPYmplY3Q6OmdldFBy
aXZhdGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7
Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFs
aWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICBpZiAoc2xvdC5pbnRl
cm5hbE1ldGhvZFR5cGUoKSAhPSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KQorICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZmFsc2UpOwogICAgIH0KICAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTIsOCArMTUyLDEx
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIERp
c2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChnbG9iYWxPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICBib29sIGhhc093blByb3BlcnR5ID0g
Z2xvYmFsT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGlkZW50LCBzbG90KTsKKyAgICAgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OworICAgICAgICBkaXNhbGxvd1ZNRW50cnkucmVsZWFzZSgpOwogICAgICAgICBpZiAoIWhhc093
blByb3BlcnR5KSB7CiAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShVbnJlc29s
dmVkUHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgMCwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgMCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0
aW9uU2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM0LDExICszNCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKKyNp
ZiBBU1NFUlRfRU5BQkxFRAorCiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0
aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKICAgICA6IG1fdm0odm0pCi0gICAgLCBtX2Rpc2FsbG93
R0MoZmFsc2UpCi0gICAgLCBtX2Rpc2FsbG93Vk1SZWVudHJ5KGZhbHNlKQogewogfQogCkBAIC01
MCwyMSArNDksMjAgQEAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYQog
ICAgIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChtX29iamVjdCk7CiB9CiAKLXZvaWQg
T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiBvYmpl
Y3QsIGJvb2wgd2FzQ3JlYXRlZFVuaW5pdGlhbGl6ZWQpCit2b2lkIE9iamVjdEluaXRpYWxpemF0
aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRlZChKU09iamVjdCogb2JqZWN0KQogewotICAgIGlmICh3
YXNDcmVhdGVkVW5pbml0aWFsaXplZCkgewotICAgICAgICBtX2Rpc2FsbG93R0MuZW5hYmxlKCk7
Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZW5hYmxlKCk7Ci0gICAgICAgIG1fb2JqZWN0
ID0gb2JqZWN0OwotICAgIH0gZWxzZQotICAgICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlh
bGl6ZWQob2JqZWN0KTsKKyAgICBBU1NFUlQoIW1fZGlzYWxsb3dHQyk7CisgICAgQVNTRVJUKCFt
X2Rpc2FsbG93Vk1FbnRyeSk7CisgICAgbV9kaXNhbGxvd0dDLmVtcGxhY2UoKTsKKyAgICBtX2Rp
c2FsbG93Vk1FbnRyeS5lbXBsYWNlKG1fdm0pOworICAgIG1fb2JqZWN0ID0gb2JqZWN0OwogfQog
CiB2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKEpTT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAgICAgIG1fZGlzYWxsb3dH
Qy5kaXNhYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZGlzYWJsZSgpOworICAg
ICAgICBtX2Rpc2FsbG93R0MucmVzZXQoKTsKKyAgICAgICAgbV9kaXNhbGxvd1ZNRW50cnkucmVz
ZXQoKTsKICAgICAgICAgbV9vYmplY3QgPSBudWxscHRyOwogICAgIH0KICAgICB2ZXJpZnlQcm9w
ZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKQEAgLTExNCw2ICsxMTIsNyBAQCB2b2lkIE9i
amVjdEluaXRpYWxpemF0aW9uU2NvcGU6OnZlcmlmeVByCiAgICAgICAgIH0KICAgICB9CiB9Ci0j
ZW5kaWYKKworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dEluaXRpYWxpemF0aW9uU2NvcGUuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsNTQgKzI2LDU1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRlZmVy
R0MuaCIKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgorI2luY2x1ZGUgIkRpc2FsbG93
Vk1FbnRyeS5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBWTTsKIGNsYXNzIEpTT2JqZWN0OwogCi0jaWZkZWYg
TkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIAogY2xhc3MgT2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZSB7CiBwdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSBPYmplY3RJbml0aWFsaXphdGlvblNj
b3BlKFZNJiB2bSkKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgIHsgfQotICAgIEFMV0FZU19JTkxJ
TkUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKQotICAgIHsKLSAgICAgICAgbV92bS5oZWFw
Lm11dGF0b3JGZW5jZSgpOwotICAgIH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0
aWFsaXphdGlvblNjb3BlKFZNJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUoKTsKIAotICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyBy
ZXR1cm4gbV92bTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNP
YmplY3QqLCBib29sKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6
ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9Cisg
ICAgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKTsKKyAgICB2b2lkIG5vdGlmeUluaXRp
YWxpemVkKEpTT2JqZWN0Kik7CiAKIHByaXZhdGU6CisgICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVz
QXJlSW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKKwogICAgIFZNJiBtX3ZtOworICAgIE9wdGlvbmFs
PERpc2FsbG93R0M+IG1fZGlzYWxsb3dHQzsKKyAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+
IG1fZGlzYWxsb3dWTUVudHJ5OworICAgIEpTT2JqZWN0KiBtX29iamVjdCB7IG51bGxwdHIgfTsK
IH07CiAKLSNlbHNlIC8vIG5vdCBOREVCVUcKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAog
CiBjbGFzcyBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKKyAgICBBTFdBWVNfSU5MSU5F
IE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisg
ICAgeyB9CisgICAgQUxXQVlTX0lOTElORSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSgpCisg
ICAgeworICAgICAgICBtX3ZtLmhlYXAubXV0YXRvckZlbmNlKCk7CisgICAgfQogCi0gICAgVk0m
IHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpT
T2JqZWN0KiwgYm9vbCB3YXNDcmVhdGVkVW5pbml0aWFsaXplZCk7Ci0gICAgdm9pZCBub3RpZnlJ
bml0aWFsaXplZChKU09iamVjdCopOworICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3Qg
eyByZXR1cm4gbV92bTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQo
SlNPYmplY3QqKSB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQo
SlNPYmplY3QqKSB7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHZlcmlmeVByb3BlcnRpZXNBcmVJ
bml0aWFsaXplZChKU09iamVjdCopOwotCiAgICAgVk0mIG1fdm07Ci0gICAgRGlzYWxsb3dHQyBt
X2Rpc2FsbG93R0M7Ci0gICAgRGlzYWxsb3dWTVJlZW50cnkgbV9kaXNhbGxvd1ZNUmVlbnRyeTsK
LSAgICBKU09iamVjdCogbV9vYmplY3QgeyBudWxscHRyIH07CiB9OwogCi0jZW5kaWYgLy8gTkRF
QlVHCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykg
MjAwNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjEsNiArMjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJE
T01Bbm5vdGF0aW9uLmgiCisjaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAi
R2V0Vk0uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1l
LmgiCkBAIC0xMTIsMTAgKzExMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIE1vZHVsZU5hbWVzcGFj
ZSwgLy8gTW9kdWxlTmFtZXNwYWNlT2JqZWN0J3MgZW52aXJvbm1lbnQgYWNjZXNzLgogICAgIH07
CiAKLSAgICBleHBsaWNpdCBQcm9wZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUsIElu
dGVybmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUpCisgICAgZXhwbGljaXQgUHJvcGVy
dHlTbG90KGNvbnN0IEpTVmFsdWUgdGhpc1ZhbHVlLCBJbnRlcm5hbE1ldGhvZFR5cGUgaW50ZXJu
YWxNZXRob2RUeXBlLCBEaXNhbGxvd1ZNRW50cnkqIGRpc2FsbG93Vk1FbnRyeSA9IG51bGxwdHIp
CiAgICAgICAgIDogbV90aGlzVmFsdWUodGhpc1ZhbHVlKQogICAgICAgICAsIG1faW50ZXJuYWxN
ZXRob2RUeXBlKGludGVybmFsTWV0aG9kVHlwZSkKICAgICB7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoZGlzYWxsb3dWTUVudHJ5LCAoaW50ZXJuYWxNZXRob2RUeXBlID09IEludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KSA9PSAhIWRpc2FsbG93Vk1FbnRyeSk7CiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGlzIHNsb3RCYXNlIC8gcmVjZWl2ZXIgYmVoYXZpb3IgZGlmZmVyZW5j
ZSBpbiBjdXN0b20gdmFsdWVzIGFuZCBjdXN0b20gYWNjZXNzb3JzLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlz
aW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw3IEBAIEFMV0FZU19JTkxJTkUg
SlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWEKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJy
YXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBi
dXR0ZXJmbHkpOwogCi0gICAgY29uc3QgYm9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1ZTsK
LSAgICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVkKTsK
KyAgICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw4ICs3
MjcsOSBAQCBTdHJpbmcgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtCiAKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBEaXNhbGxvd1ZN
RW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBhdXRvIGdldFByb3BlcnR5SWZQdXJlT3Bl
cmF0aW9uID0gWyZdIChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgLT4gU3RyaW5nIHsKLSAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoY2FsbGVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoY2FsbGVlLCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5
KTsKICAgICAgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShpZGVudCk7CiAgICAgICAgIGJv
b2wgaGFzUHJvcGVydHkgPSBjYWxsZWUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0NCw2
ICs2NDQsOCBAQCBwdWJsaWM6CiAjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVIKIAogICAgIFZNVHlwZSB2bVR5cGU7CisgICAgdW5zaWduZWQgZGlzYWxsb3dWTUVudHJ5
Q291bnQgeyAwIH07CisKICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwogICAgIEVudHJ5RnJh
bWUqIHRvcEVudHJ5RnJhbWUgeyBudWxscHRyIH07CiAgICAgLy8gTk9URTogV2hlbiB0aHJvd2lu
ZyBhbiBleGNlcHRpb24gd2hpbGUgcm9sbGluZyBiYWNrIHRoZSBjYWxsIGZyYW1lLCB0aGlzIG1h
eSBiZSBlcXVhbCB0bwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TUVudHJ5U2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCi0j
aW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5j
bHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC0zOSw3ICszOCw2
IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNHbG8KICAgICA6IG1fdm0o
dm0pCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiB7Ci0gICAgQVNTRVJUKCFE
aXNhbGxvd1ZNUmVlbnRyeTo6aXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCgpKTsKICAgICBpZiAo
IXZtLmVudHJ5U2NvcGUpIHsKICAgICAgICAgdm0uZW50cnlTY29wZSA9IHRoaXM7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI2
NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg5NSw5ICsyODk1LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmMKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3Bl
cnR5KS0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAotICAgIFByb3BlcnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBEaXNhbGxvd1ZNRW50cnkg
ZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1ZSwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CiAgICAgdmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHNjb3BlLmFz
c2VydE5vRXhjZXB0aW9uKCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZUdldHRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTc0KQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMjAtMDctMTkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IERpc2FsbG93U2NvcGUsIERpc2FsbG93R0MsIGFuZCBEaXNhbGxvd1ZNUmVlbnRyeSBp
bXBsZW1lbnRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTQ1MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1Nzk1NzI5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJsZU5h
bWVkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVy
dHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVQdXQpOgorICAgICAgICAoR2VuZXJhdGVQdXRCeUluZGV4KToKKyAgICAg
ICAgKEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorCiAyMDIwLTA3LTE4ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXgg
YnVpbGQgd2FybmluZ3MgaW4gdGhlIFdlYlhSIGJhY2tlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw3ICs1OSw4IEBAIHN0YXRpYyBib29sIGlzVmlz
aWJsZU5hbWVkUHJvcGVydHkoSlNDOjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAg
IC8vIDIuIElmIE8gaGFzIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxz
ZS4KLSAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OworICAgIEpTQzo6RGlzYWxs
b3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAg
IEpTQzo6UHJvcGVydHlTbG90IHNsb3QoJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgaWYg
KEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKQEAgLTk5LDcgKzEwMCw4IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5KEoKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIC8vIDIuIElmIE8g
aGFzIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4KLSAgICBKU0M6
OlByb3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OworICAgIEpTQzo6RGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgIEpTQzo6UHJvcGVy
dHlTbG90IHNsb3QoJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgaWYgKEpTQzo6SlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtOTY1LDkgKzk2NSwxNCBA
QCBzdWIgR2VuZXJhdGVQdXQKICAgICAgICAgCiAgICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5z
ID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwg
Ik92ZXJyaWRlQnVpbHRpbnMiKTsKICAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgewot
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkgfTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBib29sIGZvdW5kO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBmb3VuZCA9
IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIH1cbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWZvdW5kKSB7XG4iKTsKICAgICAgICAg
ICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQogCkBAIC0xMDQxLDkg
KzEwNDYsMTQgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICAgICAgICAgIAogICAg
ICAgICBteSAkYWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAgICBpZiAoISRvdmVycmlkZUJ1
aWx0aW5zKSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIShwcm90b3R5cGUu
aXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgZm91bmQ7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmRpc2FsbG93Vk1FbnRyeSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3Qodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWZvdW5kKSB7XG4iKTsKICAgICAgICAg
ICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTExNzYsOCArMTE4NiwxMyBAQCBzdWIgR2VuZXJhdGVEZWZpbmVPd25Qcm9wZXJ0eQogICAgICAg
ICAgICAgIyBGSVhNRTogSXMgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCB0aGUgcmlnaHQg
ZnVuY3Rpb24gdG8gY2FsbD8gSXMgdGhlcmUgYSBmdW5jdGlvbiB0aGF0IHdpbGwKICAgICAgICAg
ICAgICMgICAgICAgIG9ubHkgbG9vayBhdCB0aGUgYWN0dWFsIHByb3BlcnRpZXMsIGFuZCBub3Qg
Y2FsbCBpbnRvIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKICAgICAgICAgICAgICMgICAgICAg
IFtbR2V0T3duUHJvcGVydHldXSBob29rPwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAg
ICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIGJvb2wgZm91bmQ7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQu
ICIgICAgICAgIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRp
b25hbEluZGVudC4gIiAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5
KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRp
dGlvbmFsSW5kZW50LiAiICAgICAgICB9XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIGlmICghZm91bmQpIHtcbiIpOwogICAg
ICAgICAgICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAgICAgICAg
IGlmICghJG5hbWVkU2V0dGVyT3BlcmF0aW9uKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404684</attachid>
            <date>2020-07-19 14:00:46 -0700</date>
            <delta_ts>2020-07-19 14:08:11 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539.patch</filename>
            <type>text/plain</type>
            <size>83049</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NCBA
QAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5kIERpc2FsbG93Vk1SZWVudHJ5
IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU3OTU3Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
RGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFibGluZyBhbmQgZGlzYWJsaW5nLiAg
VGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5hYmxlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93LCB3ZQorICAgICAgICBjYW4gbWFr
ZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50cnkgaW5zaWRlIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0aCBXVEY6Ok9wdGlvbmFsLiAgV2l0
aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMgYW5kIG1ha2UKKyAgICAgICAgdGhl
bSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAgICBIb3dldmVyLCB0aGVyZSBpcyBz
dGlsbCBvbmUgZXhjZXB0aW9uOiBEaXNhbGxvd1ZNUmVlbnRyeSBuZWVkcyBhIHJlbGVhc2UoKSBt
ZXRob2QKKyAgICAgICAgdG8gYWxsb3cgaXQgdG8gZGlzYWJsZSB0aGUgUkFJSSBzY29wZSBhaGVh
ZCBvZiBkZXN0cnVjdGlvbi4gIFRoZSByZWFzb24gZm9yIHRoaXMKKyAgICAgICAgaXMgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgZW5mb3JjZSB0aGF0IFByb3BlcnR5U2xvdHMgd2l0aCBWTUlu
cXVpcnkgaW50ZXJuYWwKKyAgICAgICAgbWV0aG9kIHR5cGUgd2lsbCBhbHdheXMgYmUgYWNjb21w
YW5pZWQgYnkgYSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0byBkaXNhYmxlCisgICAgICAgIGNh
bGxpbmcgYmFjayBpbnRvIEpTLiAgSG93ZXZlciwgdGhpcyBvbmx5IG5lZWQgdG8gYmUgZW5mb3Jj
ZWQgd2hpbGUgY2FsbGluZyBpbnRvCisgICAgICAgIGdldFByb3BlcnR5U2xvdCgpLiAgVGhlcmVh
ZnRlciwgdGhlIGNsaWVudCBtYXkgdXNlIHRoZSByZXN1bHRzIHJldHVybmVkIGluIHRoZQorICAg
ICAgICBQcm9wZXJ0eVNsb3QgdG8gbWFrZSBkZWNpc2lvbnMgb24gdGFraW5nIGFjdGlvbiB0aGF0
IG1heSBlbnRhaWwgY2FsbGluZyBpbnRvIEpTLgorICAgICAgICBUaGlzIG1ha2VzIG1hbmFnaW5n
IHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0cmlja3kuICBU
bworICAgICAgICB3b3JrYXJvdW5kIHRoaXMsIHdlIGxldCBEaXNhbGxvd1ZNUmVlbnRyeSBoYXZl
IGEgcmVsZWFzZSgpIG1ldGhvZCB0aGF0IGJhc2ljYWxseQorICAgICAgICBkb2VzIGFuIGVhcmx5
IHJlbGVhc2Ugb2YgcGVybWlzc2lvbiB0byBjYWxsIGludG8gSlMuICBUaGUgcmVsZWFzZSgpIG1l
dGhvZCBzaG91bGQKKyAgICAgICAgb25seSBiZSB1c2VkIGluIHBsYWNlcyB3aGVyZSB3ZSBjYW4n
dCByZWx5IG9uIGRlc3RydWN0aW9uIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeQorICAgICAgICBz
Y29wZSB0byB0YWtlIGNhcmUgb2YgdGhlIHJlbGVhc2UgYXV0b21hdGljYWxseS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUs
IGFuZCBhbHNvCisgICAgICAgICAgIGxheXMgdGhlIGdyb3VuZCB3b3JrIGluIGNhc2Ugd2Ugd2Fu
dCB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIG1vZGVzIG9mIGRpc2FibGluZworICAgICAgICAgICBW
TSBlbnRyeSBpbnN0ZWFkIG9mIGNyYXNoaW5nIGUuZy4gc2lsZW50IHJlamVjdGlvbnMgKGp1c3Qg
c2ltcGx5IGNob29zaW5nIG5vdAorICAgICAgICAgICB0byBjYWxsIGludG8gSlMsIGFuZCBhbHdh
eXMgcmV0dXJuaW5nIHVuZGVmaW5lZCkgaWYgd2UgbmVlZCBpdCBpbiB0aGUgZnV0dXJlLgorICAg
ICAgICAgICBGb3Igbm93LCB0aGUgb25seSBtb2RlIG9mIGRpc2FsbG93aW5nIGVudHJ5IGlzIHRv
IGNyYXNoLgorCisgICAgICAgIDMuIENoYW5nZSBEaXNhbGxvd1Njb3BlIGFuZCBEaXNhbGxvd0dD
IHRvIGJlIGJhc2VkIG9uIEFTU0VSVF9FTkFCTEVEIGluc3RlYWQgb2YgTkVCVUcuCisKKyAgICAg
ICAgNC4gTWFrZSBEaXNhbGxvd1ZNRW50cnkgYWx3YXlzIGVuZm9yY2VhYmxlLCBub3QganVzdCB3
aGVuIEFTU0VSVF9FTkFCTEVELgorCisgICAgICAgIDUuIEFkZCBEaXNhbGxvd1ZNRW50cnkgc2Nv
cGVzIHdoZW5ldmVyIHdlIGNyZWF0ZSBhIFByb3BlcnR5U2xvdCBmb3IgVk1JbnF1aXJ5LgorICAg
ICAgICAgICBUaGUgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yIHdpbGwgbm93IHRha2UgYW4gb3B0
aW9uYWwgRGlzYWxsb3dWTUVudHJ5IHBvaW50ZXIuCisgICAgICAgICAgIElmIHRoZSBzbG90J3Mg
c3BlY2lmaWVkIGludGVybmFsIG1ldGhvZCB0eXBlIGlzIFZNSW5xdWlyeSwgdGhlbiB3ZSdsbAor
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCB0aGF0IHRoZSBEaXNhbGxvd1ZNRW50cnkgcG9pbnRl
ciBpcyBub24tbnVsbC4KKworICAgICAgICA2LiBGaXhlZCBhIGJ1ZyBpbiBKU09iamVjdDo6Z2V0
UHJpdmF0ZUZpZWxkKCk6IGl0IHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9ucyBvbgorICAgICAg
ICAgICBWTUlucXVpcnkuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIp
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogaGVhcC9EZWZlckdDLmNwcDoKKyAgICAgICAgKiBoZWFwL0RlZmVyR0MuaDoKKyAgICAgICAg
KEpTQzo6RGlzYWxsb3dHQzo6RGlzYWxsb3dHQyk6CisgICAgICAgIChKU0M6OkRpc2FsbG93R0M6
OmluaXRpYWxpemUpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dy
YW0pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1
bGVQcm9ncmFtKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xP
V19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfY2hlY2tfdm1fZW50cnlf
cGVybWlzc2lvbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9EaXNhbGxvd1Njb3Bl
Lmg6CisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OkRpc2FsbG93U2NvcGUpOgorICAgICAg
ICAoSlNDOjpEaXNhbGxvd1Njb3BlOjp+RGlzYWxsb3dTY29wZSk6CisgICAgICAgIChKU0M6OkRp
c2FsbG93U2NvcGU6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoSlNDOjpE
aXNhbGxvd1Njb3BlOjplbmFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Nj
b3BlOjpkaXNhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6ZW50
ZXJTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmV4aXRTY29w
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaC4K
KyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5SW1wbDo6RGlzYWxsb3dWTUVudHJ5SW1wbCk6
CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6On5EaXNhbGxvd1ZNRW50cnlJbXBs
KToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5SW1wbDo6cmVsZWFzZSk6CisgICAgICAg
IChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5OjpEaXNhbGxvd1ZNUmVlbnRyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RGlzYWxsb3dWTVJlZW50cnk6OnNjb3BlUmVlbnRyeUNvdW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTVJlZW50cnk6OnNldFNjb3BlUmVlbnRyeUNvdW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJ
bnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWRSZXN0cmljdGVkKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0R2V0dGVyQnlJZCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYWxjdWxh
dGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBydW50aW1l
L0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgICog
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6CisgICAg
ICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRlZCk6Cisg
ICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVk
KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaDoKKyAgICAg
ICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6dm0gY29uc3QpOgorICAgICAgICAo
SlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
Ojpub3RpZnlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNj
b3BlOjpub3RpZnlJbml0aWFsaXplZCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3Qu
aDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3QpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxp
bmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJh
bWU6Om5hbWVGcm9tQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICog
cnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OlZN
RW50cnlTY29wZSk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVyKToKKwogMjAyMC0wNy0xOSAgTWljaGFlbCBDYXRh
bnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAgICAtV2FycmF5LWJvdW5kcyB3
YXJuaW5ncyBpbiB0ZXN0YjMgYW5kIHRlc3RhaXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODM1LDcgKzgzNSw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBydW50aW1lL0RpcmVjdEFyZ3Vt
ZW50c09mZnNldC5oCiAgICAgcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAgcnVu
dGltZS9EaXNhbGxvd1Njb3BlLmgKLSAgICBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgKKyAg
ICBydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCiAgICAgcnVudGltZS9EdW1wQ29udGV4dC5oCiAg
ICAgcnVudGltZS9FQ01BTW9kZS5oCiAgICAgcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2Niw3
ICs3NjYsNiBAQCBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiBydW50aW1lL0RpcmVjdEFyZ3Vt
ZW50cy5jcHAKIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNwcAogcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHAKLXJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCiBydW50
aW1lL0RvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvRHVtcENvbnRleHQu
Y3BwCiBydW50aW1lL0VDTUFNb2RlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI2NDU3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsOCArMjk4LDEzIEBAIGJvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKE9w
YXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFz
cy0+c3RhdGljRnVuY3Rpb25zKGdsb2JhbE9iamVjdCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
U3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkg
ewotICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRTbG90KSkKKyAgICAgICAgICAgICAgICAgICAgYm9v
bCBmb3VuZDsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvdW5kID0gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBQYXJlbnQ6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjY4LDkgKzY3MywxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09i
aiA9IGFzQ2FsbGJhY2tPYmplY3QodGhpc1ZhbHVlKTsKICAgICAKICAgICAvLyBDaGVjayBmb3Ig
Y2FjaGVkIG9yIG92ZXJyaWRlIHByb3BlcnR5LgotICAgIFByb3BlcnR5U2xvdCBzbG90Mih0aGlz
T2JqLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICBp
ZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QyKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5n
ZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAgIHsKKyAgICAgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90Mih0aGlzT2JqLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Mik7
CisgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5yZWxlYXNlKCk7CisgICAgICAgIGlmIChmb3VuZCkK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdDIuZ2V0VmFsdWUoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICB9CiAKICAgICBpZiAoU3RyaW5nSW1wbCogbmFt
ZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFz
cyA9IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2
NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE2LDcgKzE5MTYsNyBAQAogCQlG
RTUzM0NBNTFGMjE3REIzMDAxNkExRkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZC
MDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUZFNTMzQ0E2MUYyMTdE
QjMwMDE2QTFGRSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQlGRTUzM0NBRDFGMjE3RUE1MDAx
NkExRkUgLyogdGVzdG1hc20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLzsg
fTsKLQkJRkU1NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU0REVGQTFFOEM2
RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyog
RGlzYWxsb3dWTUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTUVudHJ5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU1NERFRkYx
RThENzZGQTAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNh
bGxvd1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU1NjI4Q0UxRTk5NTEzMjAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NjI4Q0MxRTk5NTEy
NDAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oICovOyB9OwogCQlGRTU5MzJBODE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUy
MDEsOCArNTIwMSw3IEBACiAJCUZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNv
dXJjZUR1bXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJy
ZWRTb3VyY2VEdW1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1MzNDQTAx
RjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3Rt
YXNtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1MzNDQUMxRjIxN0RCNDAw
MTZBMUZFIC8qIHRlc3RtYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSB0ZXN0bWFzbTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
LQkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93Vk1SZWVudHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFNTRERUZDMUU4QzZERkYwMEE4OTJDNSAvKiBEaXNhbGxv
d1ZNUmVlbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNh
bGxvd1ZNUmVlbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNTRERUZB
MUU4QzZENzIwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzYWxsb3dWTUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFNTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNhbGxvd1Njb3BlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93U2NvcGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU1NjI4Q0IxRTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50U3Bl
Y2lhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJQcmludFNw
ZWNpYWwuY3BwOyBwYXRoID0gYjMvYWlyL0FpclByaW50U3BlY2lhbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFNTYyOENDMUU5OTUxMjQwMEM0OUU0NSAvKiBBaXJQcmludFNw
ZWNpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyUHJpbnRTcGVjaWFs
Lmg7IHBhdGggPSBiMy9haXIvQWlyUHJpbnRTcGVjaWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03MTQzLDggKzcxNDIsNyBAQAogCQkJCTE0Mzg2QTcyMURENjk4OTUwMDg2NTJD
NCAvKiBEaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQzODZBNzMxREQ2OTg5NTAw
ODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmggKi8sCiAJCQkJRkU1NERFRkUxRThENzQy
ODAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLywKLQkJCQlGRTU0REVGQzFFOEM2REZGMDBB
ODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuY3BwICovLAotCQkJCUZFNTRERUZBMUU4QzZENzIw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oICovLAorCQkJCUZFNTRERUZBMUU4QzZENzIw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLywKIAkJCQlFMzE2MTgxMDFFQzVGRTA4MDAw
NkEyMTggLyogRE9NQW5ub3RhdGlvbi5oICovLAogCQkJCUUzMTYxODExMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUUzMTYxODEyMUVDNUZF
MDgwMDA2QTIxOCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCAqLywKQEAgLTk0ODIsNyAr
OTQ4MCw3IEBACiAJCQkJMTQzODZBNzUxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVj
dXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA4RjFDMENENjg1MDAwNTJCRkEgLyog
RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTU0REVGRjFFOEQ3NkZBMDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRkU1NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxsb3dWTUVu
dHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0MjczMTE1OEVCRDU0MDA0Q0I5RkYgLyogRGlz
YXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzE2MTgxMzFFQzVGRTE3MDAwNkEyMTgg
LyogRE9NQW5ub3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMxNjE4MTUxRUM1RkUyNzAw
MDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAkocmV2aXNpb24gMjY0NTc0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWZuZGVmIE5ERUJVRwor
I2lmIEFTU0VSVF9FTkFCTEVECiBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5z
aWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IERpc2FsbG93R0M6OnNfc2NvcGVSZWVu
dHJ5Q291bnQ7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVm
ZXJHQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0Mu
aAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJH
Qy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxNiArNzcsOCBAQCBjbGFzcyBEaXNhbGxvd0dDIDog
cHVibGljIERpc2FsbG93U2NvcGU8CiAgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CiAg
ICAgdHlwZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93R0M+IEJhc2U7CiBwdWJsaWM6Ci0jaWZk
ZWYgTkRFQlVHCi0KLSAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93R0MoYm9vbCA9IGZhbHNlKSB7
IH0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7IH0KLQotI2Vs
c2UgLy8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dHQyhib29sIGVuYWJsZWQgPSB0cnVlKQot
ICAgICAgICA6IEJhc2UoZW5hYmxlZCkKLSAgICB7IH0KKyNpZiBBU1NFUlRfRU5BQkxFRAorICAg
IERpc2FsbG93R0MoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkK
ICAgICB7CkBAIC0xMDUsNyArOTcsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVk
LCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50OwogCi0jZW5k
aWYgLy8gTkRFQlVHCisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dHQygpIHsgfSAv
LyBXZSBuZWVkIHRoaXMgdG8gcGxhY2F0ZSBDbGFuZyBkdWUgdG8gdW51c2VkIHdhcm5pbmdzLgor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQorI2VuZGlmIC8v
IEFTU0VSVF9FTkFCTEVECiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlz
YWxsb3dHQz47CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBz
aG90QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MDksNyArNDA5LDggQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rp
bwogICAgICAgICAgICAgLy8gIk9iamVjdCIgaW4gc25hcHNob3RzIGFuZCBub3QgZ2V0IHRoZSBu
YW1lIG9mIHRoZSBwcm90b3R5cGUncyBwYXJlbnQuCiAgICAgICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3Qobm9kZS5jZWxsKTsKICAgICAgICAgICAgIGlmIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pKSB7Ci0gICAgICAgICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlz
YWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOwogICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBz
bG90KSkKICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gSlNPYmplY3Q6OmNhbGN1bGF0
ZWRDbGFzc05hbWUob2JqZWN0KTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0NiwxNCArNjQ2LDE5
IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGEKIAogICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gb2JqZWN0OwogCi0gICAgUHJvcGVydHlTbG90IHByb3RvdHlwZVNsb3Qo
b2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAg
ICBpZiAob2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZVNsb3QpKSB7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgIGlmIChwcm90b3R5cGVTbG90LmlzVmFsdWUoKSkg
ewotICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHByb3RvdHlwZVNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgICAg
ICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICBw
cm90b3R5cGUgPSBwcm90b3R5cGVWYWx1ZTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBhc09i
amVjdChwcm90b3R5cGUpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93
Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBwcm90b3R5cGVTbG90KG9iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1F
bnRyeSk7CisgICAgICAgIGJvb2wgZm91bmQgPSBvYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlU2xvdCk7Cisg
ICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgIGRpc2FsbG93Vk1FbnRy
eS5yZWxlYXNlKCk7CisgICAgICAgIGlmIChmb3VuZCkgeworICAgICAgICAgICAgaWYgKHByb3Rv
dHlwZVNsb3QuaXNWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVW
YWx1ZSA9IHByb3RvdHlwZVNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUpOworICAgICAgICAgICAgICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc09i
amVjdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IHByb3RvdHlwZVZhbHVl
OworICAgICAgICAgICAgICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUpOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9v
LmNhPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtODI1LDE1ICs4MjUsMTUgQEAgZmFpbGVkSlNPTlA6
CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBw
YXJhbWV0ZXIgZm9yICd0aGlzJy4KICAgICB9CiAKLSAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7
IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhl
Y3V0YWJsZS4KLQotICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlID0gcHJvZ3JhbS0+Z2VuZXJh
dGVkSklUQ29kZSgpOwotCisgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CiAgICAgUHJvdG9D
YWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbGVlLCB0aGlzT2JqLCAxKTsKKyAgICB7CisgICAg
ICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNh
biByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgorICAgICAgICBqaXRDb2RlID0gcHJv
Z3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNv
ZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxDYWxsZWUsIHRoaXNPYmosIDEpOworICAgIH0K
IAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7CiAg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENvZGUgPT0gcHJvZ3JhbS0+
Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGppdENvZGUt
PmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwpAQCAtODkwLDI3ICs4OTAsMjQgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoSlNHbG9iYQogICAgICAgICBuZXdDb2RlQmxv
Y2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgRGlzYWxs
b3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2Ug
Q29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0KICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsK
LSAgICBpZiAoaXNKU0NhbGwpCi0gICAgICAgIGppdENvZGUgPSBjYWxsRGF0YS5qcy5mdW5jdGlv
bkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7Ci0KICAgICBQcm90b0NhbGxG
cmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgdGhpc1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0
YSgpKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5v
IEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgorICAg
ICAgICBpZiAoaXNKU0NhbGwpCisgICAgICAgICAgICBqaXRDb2RlID0gY2FsbERhdGEuanMuZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOworICAgICAgICBwcm90
b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgdGhp
c1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICB9CiAKICAgICBKU1ZhbHVlIHJl
c3VsdDsKLSAgICB7Ci0gICAgICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgICAgIGRpc2Fs
bG93R0MuZGlzYWJsZSgpOwotICAgICAgICBpZiAoaXNKU0NhbGwpIHsKLSAgICAgICAgICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgQVNTRVJUKGppdENvZGUgPT0gY2FsbERh
dGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLnB0cigp
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxs
RnJhbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6
ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9pbnRl
cigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwotICAgICAgICB9CisgICAgLy8gRXhlY3V0ZSB0
aGUgY29kZToKKyAgICBpZiAoaXNKU0NhbGwpIHsKKyAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7CisgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5wdHIoKSk7CisgICAgICAgIHJlc3VsdCA9
IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUoY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwogICAgIH0K
IAogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CkBAIC05NzIsMjggKzk2OSwyNSBA
QCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgIG5ld0Nv
ZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBE
aXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVw
bGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KLQogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRD
b2RlOwotICAgIGlmIChpc0pTQ29uc3RydWN0KQotICAgICAgICBqaXRDb2RlID0gY29uc3RydWN0
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3Qo
KTsKLQogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBuZXdUYXJn
ZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBk
aXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJs
b2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAgIGlmIChpc0pTQ29uc3RydWN0KQorICAgICAgICAg
ICAgaml0Q29kZSA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3
Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBuZXdUYXJnZXQsIGFyZ3NDb3Vu
dCwgYXJncy5kYXRhKCkpOworICAgIH0KIAogICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsKLSAg
ICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZS4KLSAgICAgICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7
Ci0gICAgICAgIGlmIChpc0pTQ29uc3RydWN0KSB7Ci0gICAgICAgICAgICBBU1NFUlQoaml0Q29k
ZSA9PSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNvbnN0cnVjdCgpLnB0cigpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGppdENvZGUtPmV4
ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Cisg
ICAgLy8gRXhlY3V0ZSB0aGUgY29kZS4KKyAgICBpZiAoaXNKU0NvbnN0cnVjdCkgeworICAgICAg
ICBBU1NFUlQoaml0Q29kZSA9PSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLnB0cigpKTsKKyAgICAgICAgcmVzdWx0ID0g
aml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7
CiAKLSAgICAgICAgICAgIGlmIChMSUtFTFkoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5pc09iamVjdCgpKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAoTElLRUxZKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5pc09iamVjdCgpKTsKICAgICB9CiAKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwpAQCAtMTEwMCwxOSArMTA5NCwy
NCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICAvLyBX
ZSBjYW4ndCBkZWNsYXJlIGEgInZhciIvImZ1bmN0aW9uIiB0aGF0IG92ZXJ3cml0ZXMgYSBnbG9i
YWwgImxldCIvImNvbnN0Ii8iY2xhc3MiIGluIGEgc2xvcHB5LW1vZGUgZXZhbC4KICAgICBpZiAo
dmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250
ZXh0KCkgJiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpKSB7Cisg
ICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgICAgICBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4odmFyaWFibGVPYmplY3QpLT5nbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytp
KSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHVubGlua2VkQ29kZUJs
b2NrLT52YXJpYWJsZShpKTsKLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExl
eGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSk7Ci0gICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93
blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHNsb3QpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKKyAgICAgICAgICAgIHRocm93U2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAg
ICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgbWFrZVN0cmluZygiQ2FuJ3QgY3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFy
aWFibGUgaW4gZXZhbDogJyIsIFN0cmluZyhpZGVudC5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
VG9wTGV2ZWxGdW5jdGlvbkRlY2xzOyArK2kpIHsKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKLSAgICAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgICAgICBpZiAoSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsKKyAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CisgICAgICAgICAgICBib29sIGZvdW5kICA9IEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLT5uYW1lKCksIHNsb3QpOworICAgICAgICAgICAgdGhyb3dTY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOworICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBp
biBldmFsOiAnIiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTkzLDE1ICsxMTkyLDE1IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0K
IAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdD
IGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENv
ZGU+IGppdENvZGUgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KKyAgICBSZWZQdHI8SklU
Q29kZT4gaml0Q29kZTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBw
cm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIHRoaXNW
YWx1ZSwgMSk7CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3Vy
ZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4K
KyAgICAgICAgaml0Q29kZSA9IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKTsKKyAgICAgICAgcHJv
dG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCB0aGlzVmFs
dWUsIDEpOworICAgIH0KIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlzYWxsb3dH
Qy5kaXNhYmxlKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENv
ZGUgPT0gZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigpKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwpAQCAtMTI1MSwxOCAr
MTI1MCwxOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhCiAgICAg
ICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0
ZXIgZm9yICd0aGlzJy4KICAgICB9CiAKLSAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVu
c3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJs
ZS4KLQotICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZSgpOwotCi0gICAgLy8gVGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBg
dW5kZWZpbmVkYC4KLSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcK
LSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBSZWZQdHI8
SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAg
ICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpz
VW5kZWZpbmVkKCksIDEpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAv
LyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1
dGFibGUuCisgICAgICAgIGppdENvZGUgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7
CisgICAgICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5l
ZGAuCisgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAg
ICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICAgICAgcHJv
dG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCBqc1VuZGVm
aW5lZCgpLCAxKTsKKyAgICB9CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIGRpc2Fs
bG93R0MuZGlzYWJsZSgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChq
aXRDb2RlID09IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS5wdHIoKSk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDE0ICsxNjcsMTYgQEAgaW50MzJfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UcnlHZXRCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hl
YWJsZUlkZW50aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3
Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CiAgICAgc3R1YkluZm8tPnRv
b2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxP
YmplY3QsIGlkZW50LCBzbG90KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5n
ZXRQdXJlUmVzdWx0KCkpOwpAQCAtMTg0LDEzICsxODYsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UcgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UcnlHZXRCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeSh2bSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKwogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBp
ZGVudGlmaWVyLnVpZCgpKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGJhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
ZGlzYWxsb3dWTUVudHJ5KTsKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9i
amVjdCwgaWRlbnQsIHNsb3QpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Lmdl
dFB1cmVSZXN1bHQoKSk7CkBAIC0xOTksMTQgKzIwMywxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRyeUdldEJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJh
d0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJv
cGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKIAogICAgIGJhc2VWYWx1ZS5nZXRQcm9w
ZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzMSwxMiArNjMxLDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9p
bnN0YW5jZW8KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90cnlfZ2V0X2J5X2lkKQog
ewogICAgIExMSU5UX0JFR0lOKCk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRy
eSh2bSk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRyeUdldEJ5SWQ+KCk7CiAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9iYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFBy
b3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwog
CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKKyAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBzbG90LmdldFB1cmVSZXN1bHQoKTsKIAogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOwpAQCAtMTA5Myw5ICsxMDk1LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfcHJpdmEKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKIAotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAg
YXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIERpc2FsbG93Vk1F
bnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93
Vk1FbnRyeSk7CisgICAgYm9vbCBmb3VuZCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICB0aHJvd1Njb3BlLmFz
c2VydE5vRXhjZXB0aW9uKCk7CisgICAgZGlzYWxsb3dWTUVudHJ5LnJlbGVhc2UoKTsKKyAgICBp
ZiAoIWZvdW5kKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVF
cnJvcihnbG9iYWxPYmplY3QpKTsKIAogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9X
ICYmIHNsb3QuaXNDYWNoZWFibGUoKSAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwpAQCAtMjMxNiw2ICsy
MzIyLDEyIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3cKICAgICB2
bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiB2b2lkIGxsaW50X2No
ZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24oVk0qIHZtLCBQcm90b0NhbGxGcmFtZSopCit7CisgICAg
UkVMRUFTRV9BU1NFUlQoIXZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCk7IC8vIEN1cnJlbnRseSwg
dGhpcyBzaG91bGQgYWx3YXlzIGNyYXNoLgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVl
IHZhbHVlKTsKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRKU1ZhbHVl
IHZhbHVlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ3LDYgKzE0Nyw3IEBAIGV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF8KICNpZiBFTkFCTEUoQ19MT09Q
KQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1f
ZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKICNlbmRpZgorZXh0ZXJuICJDIiBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lv
bihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogZXh0ZXJuICJDIiBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNIIHZvaWQgbGxpbnRfY3Jhc2goKSBXVEZfSU5URVJOQUw7CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI2
NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTcwLDYgKzE3MCw5IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtl
Q2FsbCkKICAgICAjIFNpbmNlIHdlIGhhdmUgdGhlIGd1YXJhbnRlZSB0aGF0IHRYICE9IGFZIHdo
ZW4gWCAhPSBZLCB3ZSBhcmUgc2FmZSBmcm9tCiAgICAgIyBhbGlhc2luZyBwcm9ibGVtcyB3aXRo
IG91ciBhcmd1bWVudHMuCiAKKyAgICBsb2FkaSBWTTo6ZGlzYWxsb3dWTUVudHJ5Q291bnRbdm1d
LCB0NAorICAgIGJ0aW56IHQ0LCAuY2hlY2tWTUVudHJ5UGVybWlzc2lvbgorCiAgICAgaWYgQVJN
djcKICAgICAgICAgdm1FbnRyeVJlY29yZChjZnIsIHQzKQogICAgICAgICBtb3ZlIHQzLCBzcApA
QCAtMzE5LDYgKzMyMiwxMyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcG9wQ2Fs
bGVlU2F2ZXMoKQogICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAorCisuY2hlY2tWTUVu
dHJ5UGVybWlzc2lvbjoKKyAgICAjIFdlIGdldCBoZXJlIGJlY2F1c2Ugdm0tPmRpc2FsbG93Vk1F
bnRyeUNvdW50IGlzIG5vbi16ZXJvLiBDdXJyZW50bHksIHRoaXMKKyAgICAjIGFsd2F5cyBtZWFu
cyB3ZSB3aWxsIGNyYXNoLgorICAgIG1vdmUgYTAsIHZtCisgICAgbW92ZSBhMSwgcHJvdG9DYWxs
RnJhbWUKKyAgICBjQ2FsbDIoX2xsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24pCiBlbmQK
IAogIyBhMCwgYTIsIHQzLCB0NApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDI2NDU3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDkgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxs
KQogCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDQsIDB4YmFkMGRjMDEpCiAKKyAg
ICBsb2FkaSBWTTo6ZGlzYWxsb3dWTUVudHJ5Q291bnRbdm1dLCB0NAorICAgIGJ0aW56IHQ0LCAu
Y2hlY2tWTUVudHJ5UGVybWlzc2lvbgorCiAgICAgc3RvcmVwIHZtLCBWTUVudHJ5UmVjb3JkOjpt
X3ZtW3NwXQogICAgIGxvYWRwIFZNOjp0b3BDYWxsRnJhbWVbdm1dLCB0NAogICAgIHN0b3JlcCB0
NCwgVk1FbnRyeVJlY29yZDo6bV9wcmV2VG9wQ2FsbEZyYW1lW3NwXQpAQCAtMjg0LDYgKzI4Nywx
MyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcG9wQ2FsbGVlU2F2ZXMoKQogICAg
IGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAorCisuY2hlY2tWTUVudHJ5UGVybWlzc2lvbjoK
KyAgICAjIFdlIGdldCBoZXJlIGJlY2F1c2Ugdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50IGlzIG5v
bi16ZXJvLiBDdXJyZW50bHksIHRoaXMKKyAgICAjIGFsd2F5cyBtZWFucyB3ZSB3aWxsIGNyYXNo
LgorICAgIG1vdmUgYTAsIHZtCisgICAgbW92ZSBhMSwgcHJvdG9DYWxsRnJhbWUKKyAgICBjQ2Fs
bDIoX2xsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24pCiBlbmQKIAogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1Njb3BlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dTY29wZS5oCShyZXZpc2lvbiAy
NjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1Njb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNSwyNyArMzUsMTggQEAgY2xhc3MgRGlzYWxsb3dTY29wZSB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzYWxsb3dTY29wZSk7CiAgICAgV1RGX0ZPUkJJ
RF9IRUFQX0FMTE9DQVRJT047CiBwdWJsaWM6Ci0jaWZkZWYgTkRFQlVHCi0KLSAgICBBTFdBWVNf
SU5MSU5FIERpc2FsbG93U2NvcGUoYm9vbCA9IGZhbHNlKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5F
IH5EaXNhbGxvd1Njb3BlKCkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0lu
RWZmZWN0T25DdXJyZW50VGhyZWFkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZW5hYmxlKCkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGRpc2FibGUoKSB7
IH0KLQotI2Vsc2UgLy8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dTY29wZShib29sIGVuYWJs
ZWQgPSB0cnVlKQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgRGlzYWxsb3dTY29wZSgpCiAgICAg
ewotICAgICAgICBtX2lzRW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgICAgIGlmIChtX2lzRW5hYmxl
ZCkKLSAgICAgICAgICAgIGVudGVyU2NvcGUoKTsKKyAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNj
b3BlUmVlbnRyeUNvdW50KCk7CisgICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50KCsrY291
bnQpOwogICAgIH0KIAogICAgIH5EaXNhbGxvd1Njb3BlKCkKICAgICB7Ci0gICAgICAgIGlmICht
X2lzRW5hYmxlZCkKLSAgICAgICAgICAgIGV4aXRTY29wZSgpOworICAgICAgICBhdXRvIGNvdW50
ID0gVDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKKyAgICAgICAgQVNTRVJUKGNvdW50KTsKKyAgICAg
ICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoLS1jb3VudCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IGJvb2wgaXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCgpCkBAIC02MywzNCArNTQsMTAgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gISFUOjpzY29wZVJlZW50cnlDb3VudCgpOwogICAgIH0KIAot
ICAgIHZvaWQgZW5hYmxlKCkKLSAgICB7Ci0gICAgICAgIG1faXNFbmFibGVkID0gdHJ1ZTsKLSAg
ICAgICAgZW50ZXJTY29wZSgpOwotICAgIH0KLQotICAgIHZvaWQgZGlzYWJsZSgpCi0gICAgewot
ICAgICAgICBtX2lzRW5hYmxlZCA9IGZhbHNlOwotICAgICAgICBleGl0U2NvcGUoKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBlbnRlclNjb3BlKCkKLSAgICB7Ci0gICAgICAgIGF1dG8g
Y291bnQgPSBUOjpzY29wZVJlZW50cnlDb3VudCgpOwotICAgICAgICBUOjpzZXRTY29wZVJlZW50
cnlDb3VudCgrK2NvdW50KTsKLSAgICB9Ci0KLSAgICB2b2lkIGV4aXRTY29wZSgpCi0gICAgewot
ICAgICAgICBhdXRvIGNvdW50ID0gVDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKLSAgICAgICAgQVNT
RVJUKGNvdW50KTsKLSAgICAgICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoLS1jb3VudCk7Ci0g
ICAgfQotCi0gICAgYm9vbCBtX2lzRW5hYmxlZDsKLSNlbmRpZiAvLyBOREVCVUcKKyNlbHNlIC8v
IG5vdCBBU1NFUlRfRU5BQkxFRAorICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dTY29wZSgpIHsg
fSAvLyBXZSBuZWVkIHRoaXMgdG8gcGxhY2F0ZSBDbGFuZyBkdWUgdG8gdW51c2VkIHdhcm5pbmdz
LgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJbkVmZmVjdE9uQ3VycmVudFRocmVh
ZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlz
YWxsb3dWTUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlzYWxsb3dWTUVudHJ5LmgJKHJldmlzaW9uIDI2NDU3NCkJKGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaDoyNjQ1NzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEaXNhbGxvd1Njb3BlLmgiCisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBEaXNhbGxvd1ZNUmVlbnRyeSA6IHB1YmxpYyBE
aXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRGlzYWxsb3dWTVJlZW50cnkpOworICAgIHR5cGVkZWYgRGlzYWxsb3dTY29wZTxEaXNhbGxv
d1ZNUmVlbnRyeT4gQmFzZTsKK3B1YmxpYzoKKyNpZmRlZiBOREVCVUcKKworICAgIEFMV0FZU19J
TkxJTkUgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCA9IGZhbHNlKSB7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7IH0KKworI2Vsc2UgLy8gbm90IE5ERUJVRwor
CisgICAgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCBlbmFibGVkID0gdHJ1ZSkKKyAgICAgICAgOiBC
YXNlKGVuYWJsZWQpCisgICAgeyB9CisKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkKKyAg
ICB7CisgICAgICAgIHNfc2NvcGVSZWVudHJ5Q291bnQuY29uc3RydWN0KCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIHN0YXRpYyB1bnNpZ25lZCBzY29wZVJlZW50cnlDb3VudCgpCisgICAgewor
ICAgICAgICByZXR1cm4gKnNfc2NvcGVSZWVudHJ5Q291bnQuZ2V0KCk7CisgICAgfQorICAgIHN0
YXRpYyB2b2lkIHNldFNjb3BlUmVlbnRyeUNvdW50KHVuc2lnbmVkIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgKnNfc2NvcGVSZWVudHJ5Q291bnQuZ2V0KCkgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmlj
PHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50
OworCisjZW5kaWYgLy8gTkRFQlVHCisKKyAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxE
aXNhbGxvd1ZNUmVlbnRyeT47Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCShyZXZpc2lv
biAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50
cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSw0NyArMjUsNDIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJEaXNhbGxvd1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0KIG5hbWVzcGFjZSBKU0MgewogCi1j
bGFzcyBEaXNhbGxvd1ZNUmVlbnRyeSA6IHB1YmxpYyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1S
ZWVudHJ5PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzYWxsb3dWTVJlZW50cnkpOwot
ICAgIHR5cGVkZWYgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4gQmFzZTsKLXB1Ymxp
YzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dWTVJlZW50cnko
Ym9vbCA9IGZhbHNlKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxp
emUoKSB7IH0KK2NsYXNzIFZNOwogCi0jZWxzZSAvLyBub3QgTkRFQlVHCi0KLSAgICBEaXNhbGxv
d1ZNUmVlbnRyeShib29sIGVuYWJsZWQgPSB0cnVlKQotICAgICAgICA6IEJhc2UoZW5hYmxlZCkK
LSAgICB7IH0KLQotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQorLy8gVGhlIG9ubHkgcmVh
c29uIHdlIGltcGxlbWVudCBEaXNhbGxvd1ZNRW50cnkgYXMgc3BlY2lhbGl6YXRpb24gb2YgYSB0
ZW1wbGF0ZQorLy8gaXMgc28gdGhhdCB3ZSBjYW4gd29yayBhcm91bmQgaGF2aW5nIHRvICNpbmNs
dWRlIFZNLmgsIHdoaWNoIGNhbiBodXJ0IGJ1aWxkCisvLyB0aW1lLiBUaGlzIGRlZmVycyB0aGUg
Y29zdCBvZiAjaW5jbHVkZSdpbmcgVk0uaCB0byBvbmx5IHRoZSBjbGllbnRzIHRoYXQKKy8vIG5l
ZWQgaXQuCisKK3RlbXBsYXRlPGNsYXNzIFZNVHlwZSA9IFZNPgorY2xhc3MgRGlzYWxsb3dWTUVu
dHJ5SW1wbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzYWxsb3dWTUVudHJ5SW1wbCk7
CitwdWJsaWM6CisgICAgRGlzYWxsb3dWTUVudHJ5SW1wbChWTVR5cGUmIHZtKQorICAgICAgICA6
IG1fdm0oJnZtKQogICAgIHsKLSAgICAgICAgc19zY29wZVJlZW50cnlDb3VudC5jb25zdHJ1Y3Qo
KTsKKyAgICAgICAgbV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQrKzsKICAgICB9CiAKLXByaXZh
dGU6Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNjb3BlUmVlbnRyeUNvdW50KCkKKyAgICB+RGlzYWxs
b3dWTUVudHJ5SW1wbCgpCiAgICAgewotICAgICAgICByZXR1cm4gKnNfc2NvcGVSZWVudHJ5Q291
bnQuZ2V0KCk7CisgICAgICAgIGlmIChtX3ZtKQorICAgICAgICAgICAgcmVsZWFzZSgpOwogICAg
IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTY29wZVJlZW50cnlDb3VudCh1bnNpZ25lZCB2YWx1ZSkK
KworICAgIHZvaWQgcmVsZWFzZSgpCiAgICAgewotICAgICAgICAqc19zY29wZVJlZW50cnlDb3Vu
dC5nZXQoKSA9IHZhbHVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLT5kaXNhbGxvd1ZN
RW50cnlDb3VudCk7CisgICAgICAgIG1fdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50LS07CisgICAg
ICAgIG1fdm0gPSBudWxscHRyOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVH
Q1RocmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7Ci0KLSNlbmRpZiAvLyBOREVCVUcK
LQotICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKK3By
aXZhdGU6CisgICAgVk1UeXBlKiBtX3ZtOwogfTsKIAordXNpbmcgRGlzYWxsb3dWTUVudHJ5ID0g
RGlzYWxsb3dWTUVudHJ5SW1wbDxWTT47CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNw
cAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlz
YWxsb3dWTVJlZW50cnkuY3BwCShub25leGlzdGVudCkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5o
IgotCi1uYW1lc3BhY2UgSlNDIHsKLSAgICAKLSNpZm5kZWYgTkRFQlVHCi1MYXp5TmV2ZXJEZXN0
cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+
IERpc2FsbG93Vk1SZWVudHJ5OjpzX3Njb3BlUmVlbnRyeUNvdW50OwotI2VuZGlmCi0gICAgCi19
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
c2FsbG93Vk1SZWVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRpc2FsbG93U2NvcGUuaCIKLSNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIERpc2FsbG93Vk1SZWVudHJ5IDogcHVibGljIERp
c2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEaXNhbGxvd1ZNUmVlbnRyeSk7Ci0gICAgdHlwZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93
Vk1SZWVudHJ5PiBCYXNlOwotcHVibGljOgotI2lmZGVmIE5ERUJVRwotCi0gICAgQUxXQVlTX0lO
TElORSBEaXNhbGxvd1ZNUmVlbnRyeShib29sID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQotCi0jZWxzZSAvLyBub3QgTkRFQlVHCi0K
LSAgICBEaXNhbGxvd1ZNUmVlbnRyeShib29sIGVuYWJsZWQgPSB0cnVlKQotICAgICAgICA6IEJh
c2UoZW5hYmxlZCkKLSAgICB7IH0KLQotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQotICAg
IHsKLSAgICAgICAgc19zY29wZVJlZW50cnlDb3VudC5jb25zdHJ1Y3QoKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNjb3BlUmVlbnRyeUNvdW50KCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAqc19zY29wZVJlZW50cnlDb3VudC5nZXQoKTsKLSAgICB9Ci0gICAgc3Rh
dGljIHZvaWQgc2V0U2NvcGVSZWVudHJ5Q291bnQodW5zaWduZWQgdmFsdWUpCi0gICAgewotICAg
ICAgICAqc19zY29wZVJlZW50cnlDb3VudC5nZXQoKSA9IHZhbHVlOwotICAgIH0KLQotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8
dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7
Ci0KLSNlbmRpZiAvLyBOREVCVUcKLQotICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERp
c2FsbG93Vk1SZWVudHJ5PjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9u
IDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDggQEAgU3RyaW5nIEVycm9ySW5zdGFu
Y2U6OnNhbml0aXplZFRvU3RyaW5nKAogCiAgICAgSlNWYWx1ZSBuYW1lVmFsdWU7CiAgICAgYXV0
byBuYW1lUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOwotICAgIFByb3BlcnR5
U2xvdCBuYW1lU2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICBQ
cm9wZXJ0eVNsb3QgbmFtZVNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAKICAgICBKU1ZhbHVlIGN1cnJlbnRP
YmogPSB0aGlzOwogICAgIHVuc2lnbmVkIHByb3RvdHlwZURlcHRoID0gMDsKQEAgLTE2Nyw3ICsx
NjgsNyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcoCiAKICAgICBK
U1ZhbHVlIG1lc3NhZ2VWYWx1ZTsKICAgICBhdXRvIG1lc3NhZ2VQcm9wZXJ0TmFtZSA9IHZtLnBy
b3BlcnR5TmFtZXMtPm1lc3NhZ2U7Ci0gICAgUHJvcGVydHlTbG90IG1lc3NhZ2VTbG90KHRoaXMs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3Bl
cnR5U2xvdCBtZXNzYWdlU2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICBpZiAoSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQcm9wZXJ0TmFtZSwgbWVz
c2FnZVNsb3QpICYmIG1lc3NhZ2VTbG90LmlzVmFsdWUoKSkKICAgICAgICAgbWVzc2FnZVZhbHVl
ID0gbWVzc2FnZVNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUHJvcGVydE5hbWUp
OwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCiAKLSNpbmNsdWRlICJE
aXNhbGxvd1ZNUmVlbnRyeS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJKU0NDb25maWcuaCIKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKQEAgLTc4LDEwICs3
Nyw4IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBlbmFibGVTaWdpbGxDcmFzaEFu
YWx5emVyKCk7CiAKICAgICAgICAgTExJbnQ6OmluaXRpYWxpemUoKTsKLSNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIERpc2FsbG93R0M6OmluaXRpYWxpemUoKTsKLSAgICAgICAgRGlzYWxsb3dWTVJl
ZW50cnk6OmluaXRpYWxpemUoKTsKLSNlbmRpZgorCiAgICAgICAgIGluaXRpYWxpemVTdXBlclNh
bXBsZXIoKTsKICAgICAgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAg
ICAgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZp
c2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHly
aWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAo
QykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgpAQCAtOTYsOCAr
OTYsNyBAQCBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkCiAKICAgICBK
U0FycmF5KiByZXN1bHQgPSBjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBkZWZlcnJhbENvbnRleHQs
IHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKIAotICAgIGNvbnN0IGJvb2wgY3JlYXRlVW5pbml0aWFs
aXplZCA9IHRydWU7Ci0gICAgc2NvcGUubm90aWZ5QWxsb2NhdGVkKHJlc3VsdCwgY3JlYXRlVW5p
bml0aWFsaXplZCk7CisgICAgc2NvcGUubm90aWZ5QWxsb2NhdGVkKHJlc3VsdCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQot
ICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNo
QHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxvdmljaAogICog
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01
MDgsOSArNTA4LDEwIEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU4K
ICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgaWYg
KCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgICAgICAv
LyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQuCi0gICAgICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50
cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgc2xvdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworICAgICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAogICAgICAgICAgICAg
aWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9w
ZXJ0aWVzKCkpIHsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0
eU5hbWVzLT5hcmd1bWVudHMpOwpAQCAtNTYzLDkgKzU2NCwxMiBAQCBib29sIEpTRnVuY3Rpb246
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvCiAgICAgICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNoIHRo
YXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0ZW4KICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBy
dWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIuOS4KLSAgICAgICAgUHJvcGVydHlTbG90IGdl
dFNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRTbG90KTsK
LSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICB7Cisg
ICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAg
dGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpOworICAgICAgICAgICAgc2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoRnVuY3Rpb25S
YXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSgpKQogICAgICAgICAgICAg
cmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlv
biIpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKQEAgLTY0Miw5
ICs2NDYsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iagogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKSB7CiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0
IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMg
c2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCi0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwot
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgeworICAgICAgICAgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRh
ID0gdGhpc09iamVjdC0+cmFyZURhdGEoKSkKICAgICAgICAgICAgIHJhcmVEYXRhLT5jbGVhcigi
U3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCShy
ZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTU2LDkgKzE1NiwxMSBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBnZXRQcm9wZXJ0eVNsb3Qgb3Bl
cmF0aW9uIHNob3VsZCBub3QgYmUgb2JzZXJ2ZWQgYnkgdGhlIFByb3h5LgogICAgICAgICAgICAg
Ly8gU28gd2UgdXNlIFZNSW5xdWlyeS4gQW5kIHB1cmdlIHRoZSBvcGFxdWUgb2JqZWN0IGNhc2Vz
IChwcm94eSBhbmQgbmFtZXNwYWNlIG9iamVjdCkgYnkgaXNUYWludGVkQnlPcGFxdWVPYmplY3Qo
KSBndWFyZC4KLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBsZW5ndGhTbG90KG9iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAgICBE
aXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgIFByb3BlcnR5
U2xvdCBsZW5ndGhTbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgICAgICAgICBvYmplY3QtPmdldFBy
b3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwgbGVuZ3Ro
U2xvdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
KyAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBkaXNh
bGxvd1ZNRW50cnkucmVsZWFzZSgpOwogCiAgICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVu
YyA9IG9iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMSw3ICs1MDEsOCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRHbG9iYWxUaGlzKFZNJiB2CiBzdGF0aWMgR2V0dGVyU2V0
dGVyKiBnZXRHZXR0ZXJCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWUoYmFzZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBEaXNhbGxvd1ZN
RW50cnkgZGlzYWxsb3dWTUVudHJ5KGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90
KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIHJldHVybiBqc0Nhc3Q8R2V0dGVyU2V0
dGVyKj4oc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQpAQCAtMTM4MywxMCArMTM4NCwxMyBAQCBi
b29sIEpTR2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKCiBib29sIEpTR2xvYmFsT2Jq
ZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNHbG9iYWxP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwotICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkpOwotICAgIC8vIHNpbGVudGx5IGlnbm9yZSBhdHRlbXB0cyB0byBh
ZGQgYWNjZXNzb3JzIGFsaWFzaW5nIHZhcnMuCi0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3Nv
ckRlc2NyaXB0b3IoKSAmJiBzeW1ib2xUYWJsZUdldCh0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZN
RW50cnkgZGlzYWxsb3dWTUVudHJ5KHRoaXNPYmplY3QtPnZtKCkpOworICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgLy8gc2lsZW50bHkgaWdub3Jl
IGF0dGVtcHRzIHRvIGFkZCBhY2Nlc3NvcnMgYWxpYXNpbmcgdmFycy4KKyAgICAgICAgaWYgKGRl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBzeW1ib2xUYWJsZUdldCh0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0KIApAQCAt
MjA1Miw3ICsyMDU2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3Bl
YwogICAgICAgICBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQuaW52YWxpZGF0ZSh2bSwgU3Ry
aW5nRmlyZURldGFpbCgiV2FzIG5vdCBhYmxlIHRvIHNldCB1cCBhcnJheSBzcGVjaWVzIHdhdGNo
cG9pbnQuIikpOwogICAgIH07CiAKLSAgICBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3JTbG90KGFy
cmF5UHJvdG90eXBlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
KTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICBQcm9wZXJ0
eVNsb3QgY29uc3RydWN0b3JTbG90KGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICBhcnJheVBy
b3RvdHlwZS0+Z2V0T3duUHJvcGVydHlTbG90KGFycmF5UHJvdG90eXBlLCB0aGlzLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3JTbG90KTsKICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwogICAgIGlmIChjb25zdHJ1Y3RvclNsb3Quc2xvdEJhc2UoKSAhPSBh
cnJheVByb3RvdHlwZQpAQCAtMjA2Niw3ICsyMDcxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dHJ5SW5zdGFsbEFycmF5U3BlYwogICAgIGlmIChjb25zdHJ1Y3RvclN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpCiAgICAgICAgIGNvbnN0cnVjdG9yU3RydWN0dXJlID0gY29uc3RydWN0b3JTdHJ1
Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBhcnJheUNvbnN0cnVjdG9yKTsK
IAotICAgIFByb3BlcnR5U2xvdCBzcGVjaWVzU2xvdChhcnJheUNvbnN0cnVjdG9yLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c3BlY2llc1Nsb3QoYXJyYXlDb25zdHJ1Y3RvciwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgYXJyYXlDb25zdHJ1Y3Rv
ci0+Z2V0T3duUHJvcGVydHlTbG90KGFycmF5Q29uc3RydWN0b3IsIHRoaXMsIHZtLnByb3BlcnR5
TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTbG90KTsKICAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOwogICAgIGlmIChzcGVjaWVzU2xvdC5zbG90QmFzZSgpICE9IGFycmF5Q29uc3Ry
dWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmln
aHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHly
aWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC01MzQsOSArNTM0LDExIEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFt
ZShKU08KIAogICAgIC8vIENoZWNrIGZvciBhIGRpc3BsYXkgbmFtZSBvZiBvYmouY29uc3RydWN0
b3IuCiAgICAgLy8gVGhpcyBpcyB1c2VmdWwgdG8gZ2V0IGBGb29gIGZvciB0aGUgYChjbGFzcyBG
b28pLnByb3RvdHlwZWAgb2JqZWN0LgotICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgaWYgKG9iamVj
dC0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCkpIHsKLSAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2Nv
cGUuZXhjZXB0aW9uKCkpOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0p
OworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgYm9vbCBmb3VuZCA9
IG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCk7CisgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICBpZiAoZm91bmQpIHsKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3QqIGN0b3JPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2Jq
ZWN0Kj4odm0sIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvcikpKSB7CiAgICAgICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGNvbnN0cnVj
dG9yRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY3Rvck9iamVjdCkp
CkBAIC01NTgsOSArNTYwLDEwIEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFt
ZShKU08KICAgICAgICAgICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KHZtKTsKICAgICAgICAgICAgIGlmIChwcm90b1ZhbHVlLmlzT2JqZWN0KCkpIHsK
ICAgICAgICAgICAgICAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSBhc09iamVjdChwcm90b1Zh
bHVlKTsKLSAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChwcm90b1ZhbHVlLCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAgICAg
ICBpZiAocHJvdG9PYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzbG90KSkgewotICAgICAgICAgICAgICAgICAgICBFWENF
UFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QocHJvdG9WYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgICAgYm9vbCBmb3Vu
ZCA9IHByb3RvT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCk7CisgICAgICAgICAgICAgICAgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoZm91bmQpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoSlNPYmplY3QqIGN0b3JPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHNs
b3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvcikp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGNvbnN0cnVj
dG9yRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY3Rvck9iamVjdCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw3ICs2MDQsOCBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKEpTCiAgICAgVk0mIHZtID0gZ2V0Vk0o
Z2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgaWYgKCFKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0
KSk7CisgICAgICAgIGlmIChzbG90LmludGVybmFsTWV0aG9kVHlwZSgpICE9IFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpCisgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihn
bG9iYWxPYmplY3QpKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBmYWxzZSk7
CiAgICAgfQogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ1
NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAy
MCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE1Miw4ICsxNTIsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0
QWNjZXNzKEpTR2xvYgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2
bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAg
ICAgIGJvb2wgaGFzT3duUHJvcGVydHkgPSBnbG9iYWxPYmplY3QtPmdldE93blByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOworICAgICAgICB0aHJv
d1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5yZWxl
YXNlKCk7CiAgICAgICAgIGlmICghaGFzT3duUHJvcGVydHkpIHsKICAgICAgICAgICAgIG9wID0g
UmVzb2x2ZU9wKG1ha2VUeXBlKFVucmVzb2x2ZWRQcm9wZXJ0eSwgbmVlZHNWYXJJbmplY3Rpb25D
aGVja3MpLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAJKHJldmlzaW9uIDI2NDU3NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTEgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECisKIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGU6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoVk0mIHZtKQogICAgIDog
bV92bSh2bSkKLSAgICAsIG1fZGlzYWxsb3dHQyhmYWxzZSkKLSAgICAsIG1fZGlzYWxsb3dWTVJl
ZW50cnkoZmFsc2UpCiB7CiB9CiAKQEAgLTUwLDIxICs0OSwyMCBAQCBPYmplY3RJbml0aWFsaXph
dGlvblNjb3BlOjp+T2JqZWN0SW5pdGlhCiAgICAgdmVyaWZ5UHJvcGVydGllc0FyZUluaXRpYWxp
emVkKG1fb2JqZWN0KTsKIH0KIAotdm9pZCBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3Rp
ZnlBbGxvY2F0ZWQoSlNPYmplY3QqIG9iamVjdCwgYm9vbCB3YXNDcmVhdGVkVW5pbml0aWFsaXpl
ZCkKK3ZvaWQgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKEpTT2Jq
ZWN0KiBvYmplY3QpCiB7Ci0gICAgaWYgKHdhc0NyZWF0ZWRVbmluaXRpYWxpemVkKSB7Ci0gICAg
ICAgIG1fZGlzYWxsb3dHQy5lbmFibGUoKTsKLSAgICAgICAgbV9kaXNhbGxvd1ZNUmVlbnRyeS5l
bmFibGUoKTsKLSAgICAgICAgbV9vYmplY3QgPSBvYmplY3Q7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChvYmplY3QpOworICAgIEFTU0VSVCghbV9k
aXNhbGxvd0dDKTsKKyAgICBBU1NFUlQoIW1fZGlzYWxsb3dWTUVudHJ5KTsKKyAgICBtX2Rpc2Fs
bG93R0MuZW1wbGFjZSgpOworICAgIG1fZGlzYWxsb3dWTUVudHJ5LmVtcGxhY2UobV92bSk7Cisg
ICAgbV9vYmplY3QgPSBvYmplY3Q7CiB9CiAKIHZvaWQgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZTo6bm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBpZiAobV9vYmpl
Y3QpIHsKLSAgICAgICAgbV9kaXNhbGxvd0dDLmRpc2FibGUoKTsKLSAgICAgICAgbV9kaXNhbGxv
d1ZNUmVlbnRyeS5kaXNhYmxlKCk7CisgICAgICAgIG1fZGlzYWxsb3dHQy5yZXNldCgpOworICAg
ICAgICBtX2Rpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAgICAgICBtX29iamVjdCA9IG51bGxw
dHI7CiAgICAgfQogICAgIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChvYmplY3QpOwpA
QCAtMTE0LDYgKzExMiw3IEBAIHZvaWQgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6dmVyaWZ5
UHIKICAgICAgICAgfQogICAgIH0KIH0KLSNlbmRpZgorCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJM
RUQKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCShyZXZpc2lv
biAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFs
aXphdGlvblNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw1NCArMjYsNTUgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgotI2luY2x1ZGUgIkRpc2FsbG93Vk1SZWVu
dHJ5LmgiCisjaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFZNOwog
Y2xhc3MgSlNPYmplY3Q7CiAKLSNpZmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiBj
bGFzcyBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHsKIHB1YmxpYzoKLSAgICBBTFdBWVNfSU5M
SU5FIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoVk0mIHZtKQotICAgICAgICA6IG1fdm0odm0p
Ci0gICAgeyB9Ci0gICAgQUxXQVlTX0lOTElORSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSgp
Ci0gICAgewotICAgICAgICBtX3ZtLmhlYXAubXV0YXRvckZlbmNlKCk7Ci0gICAgfQorICAgIEpT
X0VYUE9SVF9QUklWQVRFIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoVk0mKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSgpOwogCi0gICAgQUxXQVlT
X0lOTElORSBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9Ci0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIG5vdGlmeUFsbG9jYXRlZChKU09iamVjdCosIGJvb2wpIHsgfQotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBub3RpZnlJbml0aWFsaXplZChKU09iamVjdCopIHsgfQorICAgIFZNJiB2bSgp
IGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KKyAgICB2b2lkIG5vdGlmeUFsbG9jYXRlZChKU09iamVj
dCopOworICAgIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKIAogcHJpdmF0ZToK
KyAgICB2b2lkIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChKU09iamVjdCopOworCiAg
ICAgVk0mIG1fdm07CisgICAgT3B0aW9uYWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dDOworICAg
IE9wdGlvbmFsPERpc2FsbG93Vk1FbnRyeT4gbV9kaXNhbGxvd1ZNRW50cnk7CisgICAgSlNPYmpl
Y3QqIG1fb2JqZWN0IHsgbnVsbHB0ciB9OwogfTsKIAotI2Vsc2UgLy8gbm90IE5ERUJVRworI2Vs
c2UgLy8gbm90IEFTU0VSVF9FTkFCTEVECiAKIGNsYXNzIE9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUgewogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIE9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUoVk0mKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB+T2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZSgpOworICAgIEFMV0FZU19JTkxJTkUgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZShWTSYg
dm0pCisgICAgICAgIDogbV92bSh2bSkKKyAgICB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIH5PYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlKCkKKyAgICB7CisgICAgICAgIG1fdm0uaGVhcC5tdXRhdG9y
RmVuY2UoKTsKKyAgICB9CiAKLSAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9Ci0g
ICAgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqLCBib29sIHdhc0NyZWF0ZWRVbmluaXRp
YWxpemVkKTsKLSAgICB2b2lkIG5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0Kik7CisgICAgQUxX
QVlTX0lOTElORSBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIG5vdGlmeUFsbG9jYXRlZChKU09iamVjdCopIHsgfQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBub3RpZnlJbml0aWFsaXplZChKU09iamVjdCopIHsgfQogCiBwcml2YXRlOgotICAg
IHZvaWQgdmVyaWZ5UHJvcGVydGllc0FyZUluaXRpYWxpemVkKEpTT2JqZWN0Kik7Ci0KICAgICBW
TSYgbV92bTsKLSAgICBEaXNhbGxvd0dDIG1fZGlzYWxsb3dHQzsKLSAgICBEaXNhbGxvd1ZNUmVl
bnRyeSBtX2Rpc2FsbG93Vk1SZWVudHJ5OwotICAgIEpTT2JqZWN0KiBtX29iamVjdCB7IG51bGxw
dHIgfTsKIH07CiAKLSNlbmRpZiAvLyBOREVCVUcKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw2ICsyMSw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRPTUFubm90YXRpb24uaCIKKyNpbmNsdWRlICJEaXNh
bGxvd1ZNRW50cnkuaCIKICNpbmNsdWRlICJHZXRWTS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKQEAgLTExMiwxMCArMTEzLDExIEBAIHB1Ymxp
YzoKICAgICAgICAgTW9kdWxlTmFtZXNwYWNlLCAvLyBNb2R1bGVOYW1lc3BhY2VPYmplY3QncyBl
bnZpcm9ubWVudCBhY2Nlc3MuCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IFByb3BlcnR5U2xvdChj
b25zdCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSW50ZXJuYWxNZXRob2RUeXBlIGludGVybmFsTWV0aG9k
VHlwZSkKKyAgICBleHBsaWNpdCBQcm9wZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUs
IEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUsIERpc2FsbG93Vk1FbnRyeSog
ZGlzYWxsb3dWTUVudHJ5ID0gbnVsbHB0cikKICAgICAgICAgOiBtX3RoaXNWYWx1ZSh0aGlzVmFs
dWUpCiAgICAgICAgICwgbV9pbnRlcm5hbE1ldGhvZFR5cGUoaW50ZXJuYWxNZXRob2RUeXBlKQog
ICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChkaXNhbGxvd1ZNRW50cnksIChpbnRlcm5hbE1l
dGhvZFR5cGUgPT0gSW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpID09ICEhZGlzYWxsb3dW
TUVudHJ5KTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgc2xvdEJhc2UgLyBy
ZWNlaXZlciBiZWhhdmlvciBkaWZmZXJlbmNlIGluIGN1c3RvbSB2YWx1ZXMgYW5kIGN1c3RvbSBh
Y2Nlc3NvcnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDggKzU0LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYQogCiAg
ICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgZGVm
ZXJyYWxDb250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAKLSAgICBjb25zdCBib29sIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1
bHQsIGNyZWF0ZVVuaW5pdGlhbGl6ZWQpOworICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1
bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzI3LDggKzcyNyw5IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVy
OjpTdGFja0ZyYW1lOjpuYW0KIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbGVlLT5nbG9iYWxP
YmplY3Qodm0pOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAg
IGF1dG8gZ2V0UHJvcGVydHlJZlB1cmVPcGVyYXRpb24gPSBbJl0gKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KSAtPiBTdHJpbmcgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsZWUsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChjYWxsZWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKGlkZW50KTsKICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGNhbGxlZS0+Z2V0UHJv
cGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw4IEBAIHB1YmxpYzoKICN1bmRlZiBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUgogCiAgICAgVk1UeXBlIHZtVHlwZTsKKyAg
ICB1bnNpZ25lZCBkaXNhbGxvd1ZNRW50cnlDb3VudCB7IDAgfTsKKwogICAgIENsaWVudERhdGEq
IGNsaWVudERhdGE7CiAgICAgRW50cnlGcmFtZSogdG9wRW50cnlGcmFtZSB7IG51bGxwdHIgfTsK
ICAgICAvLyBOT1RFOiBXaGVuIHRocm93aW5nIGFuIGV4Y2VwdGlvbiB3aGlsZSByb2xsaW5nIGJh
Y2sgdGhlIGNhbGwgZnJhbWUsIHRoaXMgbWF5IGJlIGVxdWFsIHRvCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDI2NDU3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5j
bHVkZSAiVk0uaCIKQEAgLTM5LDcgKzM4LDYgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUo
Vk0mIHZtLCBKU0dsbwogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdCkKIHsKLSAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZmZWN0T25D
dXJyZW50VGhyZWFkKCkpOwogICAgIGlmICghdm0uZW50cnlTY29wZSkgewogICAgICAgICB2bS5l
bnRyeVNjb3BlID0gdGhpczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODk1LDkgKzI4OTUsMTAg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gYXNTdHJpbmcocHJvcGVydHkpLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUHJvcGVydHlT
bG90IHNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkpOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAogICAgIEpTVmFs
dWUgcmVzdWx0OwogICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dH
QywgYW5kIERpc2FsbG93Vk1SZWVudHJ5IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjU3OTU3Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oOgorICAg
ICAgICAoV2ViQ29yZTo6aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjphY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChH
ZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAgICAoR2VuZXJhdGVEZWZpbmVPd25Qcm9wZXJ0eSk6
CisKIDIwMjAtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCB3YXJuaW5ncyBpbiB0aGUgV2ViWFIgYmFj
a2VuZApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJh
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFi
c3RyYWN0T3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDcg
KzU5LDggQEAgc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gMi4gSWYgTyBoYXMgYW4gb3duIHByb3BlcnR5
IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNlLgotICAgIEpTQzo6UHJvcGVydHlTbG90IHNsb3Qg
eyAmdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5IH07CisgICAgSlNDOjpEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGlj
YWxHbG9iYWxPYmplY3Qudm0oKSk7CisgICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCgmdGhpc09i
amVjdCwgSlNDOjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
ZGlzYWxsb3dWTUVudHJ5KTsKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtOTksNyArMTAwLDggQEAgc3RhdGlj
IGF1dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSgogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgLy8gMi4gSWYgTyBoYXMgYW4gb3duIHByb3BlcnR5IG5hbWVkIFAsIHRo
ZW4gcmV0dXJuIGZhbHNlLgotICAgIEpTQzo6UHJvcGVydHlTbG90IHNsb3QgeyAmdGhpc09iamVj
dCwgSlNDOjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Cisg
ICAgSlNDOjpEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSk7CisgICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCgmdGhpc09iamVjdCwgSlNDOjpQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVu
dHJ5KTsKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2Jq
ZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC05NjUsOSArOTY1LDE0IEBAIHN1YiBHZW5lcmF0ZVB1dAogICAgICAgICAKICAg
ICAgICAgbXkgJG92ZXJyaWRlQnVpbHRpbnMgPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRl
bmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3ZlcnJpZGVCdWlsdGlucyIpOwogICAgICAgICBp
ZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghKHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGJvb2wgZm91bmQ7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAge1xuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5
KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgfVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlm
ICghZm91bmQpIHtcbiIpOwogICAgICAgICAgICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAi
OwogICAgICAgICB9CiAKQEAgLTEwNDEsOSArMTA0NiwxNCBAQCBzdWIgR2VuZXJhdGVQdXRCeUlu
ZGV4CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIG15ICRhZGRpdGlvbmFsSW5kZW50ID0gIiI7
CiAgICAgICAgIGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlw
ZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYm9vbCBm
b3VuZDtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBEaXNhbGxvd1ZNRW50cnkg
ZGlzYWxsb3dWTUVudHJ5KHZtKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAm
JiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIH1cbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICghZm91bmQpIHtcbiIpOwogICAgICAgICAgICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAi
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTE3Niw4ICsxMTg2LDEzIEBAIHN1YiBHZW5lcmF0
ZURlZmluZU93blByb3BlcnR5CiAgICAgICAgICAgICAjIEZJWE1FOiBJcyBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90IHRoZSByaWdodCBmdW5jdGlvbiB0byBjYWxsPyBJcyB0aGVyZSBhIGZ1
bmN0aW9uIHRoYXQgd2lsbAogICAgICAgICAgICAgIyAgICAgICAgb25seSBsb29rIGF0IHRoZSBh
Y3R1YWwgcHJvcGVydGllcywgYW5kIG5vdCBjYWxsIGludG8gb3VyIGltcGxlbWVudGF0aW9uIG9m
IHRoZQogICAgICAgICAgICAgIyAgICAgICAgW1tHZXRPd25Qcm9wZXJ0eV1dIGhvb2s/Ci0gICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbElu
ZGVudC4gIiAgICAgICAgYm9vbCBmb3VuZDtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAge1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICAgICAgIERpc2Fs
bG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIg
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAg
ICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIH1cbiIpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAg
ICAgaWYgKCFmb3VuZCkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAi
ICAgICI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCEkbmFtZWRTZXR0ZXJPcGVyYXRpb24pIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404686</attachid>
            <date>2020-07-19 14:24:22 -0700</date>
            <delta_ts>2020-07-19 19:41:32 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539.patch</filename>
            <type>text/plain</type>
            <size>115717</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NCBA
QAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5kIERpc2FsbG93Vk1SZWVudHJ5
IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU3OTU3Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
RGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFibGluZyBhbmQgZGlzYWJsaW5nLiAg
VGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5hYmxlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93LCB3ZQorICAgICAgICBjYW4gbWFr
ZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50cnkgaW5zaWRlIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0aCBXVEY6Ok9wdGlvbmFsLiAgV2l0
aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMgYW5kIG1ha2UKKyAgICAgICAgdGhl
bSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAgICBIb3dldmVyLCB0aGVyZSBpcyBz
dGlsbCBvbmUgZXhjZXB0aW9uOiBEaXNhbGxvd1ZNUmVlbnRyeSBuZWVkcyBhIHJlbGVhc2UoKSBt
ZXRob2QKKyAgICAgICAgdG8gYWxsb3cgaXQgdG8gZGlzYWJsZSB0aGUgUkFJSSBzY29wZSBhaGVh
ZCBvZiBkZXN0cnVjdGlvbi4gIFRoZSByZWFzb24gZm9yIHRoaXMKKyAgICAgICAgaXMgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgZW5mb3JjZSB0aGF0IFByb3BlcnR5U2xvdHMgd2l0aCBWTUlu
cXVpcnkgaW50ZXJuYWwKKyAgICAgICAgbWV0aG9kIHR5cGUgd2lsbCBhbHdheXMgYmUgYWNjb21w
YW5pZWQgYnkgYSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0byBkaXNhYmxlCisgICAgICAgIGNh
bGxpbmcgYmFjayBpbnRvIEpTLiAgSG93ZXZlciwgdGhpcyBvbmx5IG5lZWQgdG8gYmUgZW5mb3Jj
ZWQgd2hpbGUgY2FsbGluZyBpbnRvCisgICAgICAgIGdldFByb3BlcnR5U2xvdCgpLiAgVGhlcmVh
ZnRlciwgdGhlIGNsaWVudCBtYXkgdXNlIHRoZSByZXN1bHRzIHJldHVybmVkIGluIHRoZQorICAg
ICAgICBQcm9wZXJ0eVNsb3QgdG8gbWFrZSBkZWNpc2lvbnMgb24gdGFraW5nIGFjdGlvbiB0aGF0
IG1heSBlbnRhaWwgY2FsbGluZyBpbnRvIEpTLgorICAgICAgICBUaGlzIG1ha2VzIG1hbmFnaW5n
IHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0cmlja3kuICBU
bworICAgICAgICB3b3JrYXJvdW5kIHRoaXMsIHdlIGxldCBEaXNhbGxvd1ZNUmVlbnRyeSBoYXZl
IGEgcmVsZWFzZSgpIG1ldGhvZCB0aGF0IGJhc2ljYWxseQorICAgICAgICBkb2VzIGFuIGVhcmx5
IHJlbGVhc2Ugb2YgcGVybWlzc2lvbiB0byBjYWxsIGludG8gSlMuICBUaGUgcmVsZWFzZSgpIG1l
dGhvZCBzaG91bGQKKyAgICAgICAgb25seSBiZSB1c2VkIGluIHBsYWNlcyB3aGVyZSB3ZSBjYW4n
dCByZWx5IG9uIGRlc3RydWN0aW9uIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeQorICAgICAgICBz
Y29wZSB0byB0YWtlIGNhcmUgb2YgdGhlIHJlbGVhc2UgYXV0b21hdGljYWxseS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUs
IGFuZCBhbHNvCisgICAgICAgICAgIGxheXMgdGhlIGdyb3VuZCB3b3JrIGluIGNhc2Ugd2Ugd2Fu
dCB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIG1vZGVzIG9mIGRpc2FibGluZworICAgICAgICAgICBW
TSBlbnRyeSBpbnN0ZWFkIG9mIGNyYXNoaW5nIGUuZy4gc2lsZW50IHJlamVjdGlvbnMgKGp1c3Qg
c2ltcGx5IGNob29zaW5nIG5vdAorICAgICAgICAgICB0byBjYWxsIGludG8gSlMsIGFuZCBhbHdh
eXMgcmV0dXJuaW5nIHVuZGVmaW5lZCkgaWYgd2UgbmVlZCBpdCBpbiB0aGUgZnV0dXJlLgorICAg
ICAgICAgICBGb3Igbm93LCB0aGUgb25seSBtb2RlIG9mIGRpc2FsbG93aW5nIGVudHJ5IGlzIHRv
IGNyYXNoLgorCisgICAgICAgIDMuIENoYW5nZSBEaXNhbGxvd1Njb3BlIGFuZCBEaXNhbGxvd0dD
IHRvIGJlIGJhc2VkIG9uIEFTU0VSVF9FTkFCTEVEIGluc3RlYWQgb2YgTkVCVUcuCisKKyAgICAg
ICAgNC4gTWFrZSBEaXNhbGxvd1ZNRW50cnkgYWx3YXlzIGVuZm9yY2VhYmxlLCBub3QganVzdCB3
aGVuIEFTU0VSVF9FTkFCTEVELgorCisgICAgICAgIDUuIEFkZCBEaXNhbGxvd1ZNRW50cnkgc2Nv
cGVzIHdoZW5ldmVyIHdlIGNyZWF0ZSBhIFByb3BlcnR5U2xvdCBmb3IgVk1JbnF1aXJ5LgorICAg
ICAgICAgICBUaGUgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yIHdpbGwgbm93IHRha2UgYW4gb3B0
aW9uYWwgRGlzYWxsb3dWTUVudHJ5IHBvaW50ZXIuCisgICAgICAgICAgIElmIHRoZSBzbG90J3Mg
c3BlY2lmaWVkIGludGVybmFsIG1ldGhvZCB0eXBlIGlzIFZNSW5xdWlyeSwgdGhlbiB3ZSdsbAor
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCB0aGF0IHRoZSBEaXNhbGxvd1ZNRW50cnkgcG9pbnRl
ciBpcyBub24tbnVsbC4KKworICAgICAgICA2LiBGaXhlZCBhIGJ1ZyBpbiBKU09iamVjdDo6Z2V0
UHJpdmF0ZUZpZWxkKCk6IGl0IHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9ucyBvbgorICAgICAg
ICAgICBWTUlucXVpcnkuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIp
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogaGVhcC9EZWZlckdDLmNwcDoKKyAgICAgICAgKiBoZWFwL0RlZmVyR0MuaDoKKyAgICAgICAg
KEpTQzo6RGlzYWxsb3dHQzo6RGlzYWxsb3dHQyk6CisgICAgICAgIChKU0M6OkRpc2FsbG93R0M6
OmluaXRpYWxpemUpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dy
YW0pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1
bGVQcm9ncmFtKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xP
V19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfY2hlY2tfdm1fZW50cnlf
cGVybWlzc2lvbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9EaXNhbGxvd1Njb3Bl
Lmg6CisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OkRpc2FsbG93U2NvcGUpOgorICAgICAg
ICAoSlNDOjpEaXNhbGxvd1Njb3BlOjp+RGlzYWxsb3dTY29wZSk6CisgICAgICAgIChKU0M6OkRp
c2FsbG93U2NvcGU6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoSlNDOjpE
aXNhbGxvd1Njb3BlOjplbmFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Nj
b3BlOjpkaXNhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6ZW50
ZXJTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmV4aXRTY29w
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaC4K
KyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5SW1wbDo6RGlzYWxsb3dWTUVudHJ5SW1wbCk6
CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6On5EaXNhbGxvd1ZNRW50cnlJbXBs
KToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5SW1wbDo6cmVsZWFzZSk6CisgICAgICAg
IChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5OjpEaXNhbGxvd1ZNUmVlbnRyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RGlzYWxsb3dWTVJlZW50cnk6OnNjb3BlUmVlbnRyeUNvdW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTVJlZW50cnk6OnNldFNjb3BlUmVlbnRyeUNvdW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJ
bnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWRSZXN0cmljdGVkKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0R2V0dGVyQnlJZCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYWxjdWxh
dGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBydW50aW1l
L0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgICog
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6CisgICAg
ICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRlZCk6Cisg
ICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVk
KToKKyAgICAgICAgKiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaDoKKyAgICAg
ICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6dm0gY29uc3QpOgorICAgICAgICAo
SlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
Ojpub3RpZnlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNj
b3BlOjpub3RpZnlJbml0aWFsaXplZCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3Qu
aDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3QpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxp
bmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJh
bWU6Om5hbWVGcm9tQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICog
cnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OlZN
RW50cnlTY29wZSk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVyKToKKwogMjAyMC0wNy0xOSAgTWljaGFlbCBDYXRh
bnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAgICAtV2FycmF5LWJvdW5kcyB3
YXJuaW5ncyBpbiB0ZXN0YjMgYW5kIHRlc3RhaXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODM1LDcgKzgzNSw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBydW50aW1lL0RpcmVjdEFyZ3Vt
ZW50c09mZnNldC5oCiAgICAgcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAgcnVu
dGltZS9EaXNhbGxvd1Njb3BlLmgKLSAgICBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgKKyAg
ICBydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCiAgICAgcnVudGltZS9EdW1wQ29udGV4dC5oCiAg
ICAgcnVudGltZS9FQ01BTW9kZS5oCiAgICAgcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2Niw3
ICs3NjYsNiBAQCBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiBydW50aW1lL0RpcmVjdEFyZ3Vt
ZW50cy5jcHAKIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNwcAogcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHAKLXJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCiBydW50
aW1lL0RvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvRHVtcENvbnRleHQu
Y3BwCiBydW50aW1lL0VDTUFNb2RlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI2NDU3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsOCArMjk4LDEzIEBAIGJvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKE9w
YXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFz
cy0+c3RhdGljRnVuY3Rpb25zKGdsb2JhbE9iamVjdCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
U3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkg
ewotICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRTbG90KSkKKyAgICAgICAgICAgICAgICAgICAgYm9v
bCBmb3VuZDsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvdW5kID0gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBQYXJlbnQ6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjY4LDkgKzY3MywxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09i
aiA9IGFzQ2FsbGJhY2tPYmplY3QodGhpc1ZhbHVlKTsKICAgICAKICAgICAvLyBDaGVjayBmb3Ig
Y2FjaGVkIG9yIG92ZXJyaWRlIHByb3BlcnR5LgotICAgIFByb3BlcnR5U2xvdCBzbG90Mih0aGlz
T2JqLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICBp
ZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QyKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5n
ZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAgIHsKKyAgICAgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90Mih0aGlzT2JqLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Mik7
CisgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5yZWxlYXNlKCk7CisgICAgICAgIGlmIChmb3VuZCkK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdDIuZ2V0VmFsdWUoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICB9CiAKICAgICBpZiAoU3RyaW5nSW1wbCogbmFt
ZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFz
cyA9IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2
NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE2LDcgKzE5MTYsNyBAQAogCQlG
RTUzM0NBNTFGMjE3REIzMDAxNkExRkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZC
MDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUZFNTMzQ0E2MUYyMTdE
QjMwMDE2QTFGRSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQlGRTUzM0NBRDFGMjE3RUE1MDAx
NkExRkUgLyogdGVzdG1hc20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLzsg
fTsKLQkJRkU1NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU0REVGQTFFOEM2
RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyog
RGlzYWxsb3dWTUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTUVudHJ5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU1NERFRkYx
RThENzZGQTAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNh
bGxvd1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU1NjI4Q0UxRTk5NTEzMjAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NjI4Q0MxRTk5NTEy
NDAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oICovOyB9OwogCQlGRTU5MzJBODE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUy
MDEsOCArNTIwMSw3IEBACiAJCUZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNv
dXJjZUR1bXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJy
ZWRTb3VyY2VEdW1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1MzNDQTAx
RjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3Rt
YXNtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1MzNDQUMxRjIxN0RCNDAw
MTZBMUZFIC8qIHRlc3RtYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSB0ZXN0bWFzbTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
LQkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93Vk1SZWVudHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFNTRERUZDMUU4QzZERkYwMEE4OTJDNSAvKiBEaXNhbGxv
d1ZNUmVlbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNh
bGxvd1ZNUmVlbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNTRERUZB
MUU4QzZENzIwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzYWxsb3dWTUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFNTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNhbGxvd1Njb3BlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93U2NvcGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU1NjI4Q0IxRTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50U3Bl
Y2lhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJQcmludFNw
ZWNpYWwuY3BwOyBwYXRoID0gYjMvYWlyL0FpclByaW50U3BlY2lhbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFNTYyOENDMUU5OTUxMjQwMEM0OUU0NSAvKiBBaXJQcmludFNw
ZWNpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyUHJpbnRTcGVjaWFs
Lmg7IHBhdGggPSBiMy9haXIvQWlyUHJpbnRTcGVjaWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03MTQzLDggKzcxNDIsNyBAQAogCQkJCTE0Mzg2QTcyMURENjk4OTUwMDg2NTJD
NCAvKiBEaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQzODZBNzMxREQ2OTg5NTAw
ODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmggKi8sCiAJCQkJRkU1NERFRkUxRThENzQy
ODAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLywKLQkJCQlGRTU0REVGQzFFOEM2REZGMDBB
ODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuY3BwICovLAotCQkJCUZFNTRERUZBMUU4QzZENzIw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oICovLAorCQkJCUZFNTRERUZBMUU4QzZENzIw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLywKIAkJCQlFMzE2MTgxMDFFQzVGRTA4MDAw
NkEyMTggLyogRE9NQW5ub3RhdGlvbi5oICovLAogCQkJCUUzMTYxODExMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUUzMTYxODEyMUVDNUZF
MDgwMDA2QTIxOCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCAqLywKQEAgLTk0ODIsNyAr
OTQ4MCw3IEBACiAJCQkJMTQzODZBNzUxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVj
dXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA4RjFDMENENjg1MDAwNTJCRkEgLyog
RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTU0REVGRjFFOEQ3NkZBMDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRkU1NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxsb3dWTUVu
dHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0MjczMTE1OEVCRDU0MDA0Q0I5RkYgLyogRGlz
YXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzE2MTgxMzFFQzVGRTE3MDAwNkEyMTgg
LyogRE9NQW5ub3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMxNjE4MTUxRUM1RkUyNzAw
MDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAkocmV2aXNpb24gMjY0NTc0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWZuZGVmIE5ERUJVRwor
I2lmIEFTU0VSVF9FTkFCTEVECiBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5z
aWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IERpc2FsbG93R0M6OnNfc2NvcGVSZWVu
dHJ5Q291bnQ7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVm
ZXJHQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0Mu
aAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJH
Qy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxNiArNzcsOCBAQCBjbGFzcyBEaXNhbGxvd0dDIDog
cHVibGljIERpc2FsbG93U2NvcGU8CiAgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CiAg
ICAgdHlwZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93R0M+IEJhc2U7CiBwdWJsaWM6Ci0jaWZk
ZWYgTkRFQlVHCi0KLSAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93R0MoYm9vbCA9IGZhbHNlKSB7
IH0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7IH0KLQotI2Vs
c2UgLy8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dHQyhib29sIGVuYWJsZWQgPSB0cnVlKQot
ICAgICAgICA6IEJhc2UoZW5hYmxlZCkKLSAgICB7IH0KKyNpZiBBU1NFUlRfRU5BQkxFRAorICAg
IERpc2FsbG93R0MoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkK
ICAgICB7CkBAIC0xMDUsNyArOTcsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVk
LCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50OwogCi0jZW5k
aWYgLy8gTkRFQlVHCisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dHQygpIHsgfSAv
LyBXZSBuZWVkIHRoaXMgdG8gcGxhY2F0ZSBDbGFuZyBkdWUgdG8gdW51c2VkIHdhcm5pbmdzLgor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQorI2VuZGlmIC8v
IEFTU0VSVF9FTkFCTEVECiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlz
YWxsb3dHQz47CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBz
aG90QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MDksNyArNDA5LDggQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rp
bwogICAgICAgICAgICAgLy8gIk9iamVjdCIgaW4gc25hcHNob3RzIGFuZCBub3QgZ2V0IHRoZSBu
YW1lIG9mIHRoZSBwcm90b3R5cGUncyBwYXJlbnQuCiAgICAgICAgICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3Qobm9kZS5jZWxsKTsKICAgICAgICAgICAgIGlmIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pKSB7Ci0gICAgICAgICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlz
YWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOwogICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBz
bG90KSkKICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gSlNPYmplY3Q6OmNhbGN1bGF0
ZWRDbGFzc05hbWUob2JqZWN0KTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0NiwxNCArNjQ2LDE5
IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGEKIAogICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gb2JqZWN0OwogCi0gICAgUHJvcGVydHlTbG90IHByb3RvdHlwZVNsb3Qo
b2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAg
ICBpZiAob2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZVNsb3QpKSB7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgIGlmIChwcm90b3R5cGVTbG90LmlzVmFsdWUoKSkg
ewotICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IHByb3RvdHlwZVNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgICAg
ICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICBw
cm90b3R5cGUgPSBwcm90b3R5cGVWYWx1ZTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBhc09i
amVjdChwcm90b3R5cGUpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93
Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBwcm90b3R5cGVTbG90KG9iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1F
bnRyeSk7CisgICAgICAgIGJvb2wgZm91bmQgPSBvYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlU2xvdCk7Cisg
ICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgIGRpc2FsbG93Vk1FbnRy
eS5yZWxlYXNlKCk7CisgICAgICAgIGlmIChmb3VuZCkgeworICAgICAgICAgICAgaWYgKHByb3Rv
dHlwZVNsb3QuaXNWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVW
YWx1ZSA9IHByb3RvdHlwZVNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUpOworICAgICAgICAgICAgICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc09i
amVjdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IHByb3RvdHlwZVZhbHVl
OworICAgICAgICAgICAgICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUpOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9v
LmNhPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtODI1LDE1ICs4MjUsMTUgQEAgZmFpbGVkSlNPTlA6
CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBw
YXJhbWV0ZXIgZm9yICd0aGlzJy4KICAgICB9CiAKLSAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7
IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhl
Y3V0YWJsZS4KLQotICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlID0gcHJvZ3JhbS0+Z2VuZXJh
dGVkSklUQ29kZSgpOwotCisgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CiAgICAgUHJvdG9D
YWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbGVlLCB0aGlzT2JqLCAxKTsKKyAgICB7CisgICAg
ICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNh
biByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgorICAgICAgICBqaXRDb2RlID0gcHJv
Z3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNv
ZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxDYWxsZWUsIHRoaXNPYmosIDEpOworICAgIH0K
IAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7CiAg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENvZGUgPT0gcHJvZ3JhbS0+
Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGppdENvZGUt
PmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwpAQCAtODkwLDI3ICs4OTAsMjQgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoSlNHbG9iYQogICAgICAgICBuZXdDb2RlQmxv
Y2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgRGlzYWxs
b3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2Ug
Q29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0KICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsK
LSAgICBpZiAoaXNKU0NhbGwpCi0gICAgICAgIGppdENvZGUgPSBjYWxsRGF0YS5qcy5mdW5jdGlv
bkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7Ci0KICAgICBQcm90b0NhbGxG
cmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgdGhpc1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0
YSgpKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5v
IEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgorICAg
ICAgICBpZiAoaXNKU0NhbGwpCisgICAgICAgICAgICBqaXRDb2RlID0gY2FsbERhdGEuanMuZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOworICAgICAgICBwcm90
b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgdGhp
c1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICB9CiAKICAgICBKU1ZhbHVlIHJl
c3VsdDsKLSAgICB7Ci0gICAgICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgICAgIGRpc2Fs
bG93R0MuZGlzYWJsZSgpOwotICAgICAgICBpZiAoaXNKU0NhbGwpIHsKLSAgICAgICAgICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgQVNTRVJUKGppdENvZGUgPT0gY2FsbERh
dGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLnB0cigp
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxs
RnJhbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6
ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9pbnRl
cigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwotICAgICAgICB9CisgICAgLy8gRXhlY3V0ZSB0
aGUgY29kZToKKyAgICBpZiAoaXNKU0NhbGwpIHsKKyAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7CisgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5wdHIoKSk7CisgICAgICAgIHJlc3VsdCA9
IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUoY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwogICAgIH0K
IAogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CkBAIC05NzIsMjggKzk2OSwyNSBA
QCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgIG5ld0Nv
ZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBE
aXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVw
bGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KLQogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRD
b2RlOwotICAgIGlmIChpc0pTQ29uc3RydWN0KQotICAgICAgICBqaXRDb2RlID0gY29uc3RydWN0
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3Qo
KTsKLQogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBuZXdUYXJn
ZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBk
aXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJs
b2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAgIGlmIChpc0pTQ29uc3RydWN0KQorICAgICAgICAg
ICAgaml0Q29kZSA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3
Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBuZXdUYXJnZXQsIGFyZ3NDb3Vu
dCwgYXJncy5kYXRhKCkpOworICAgIH0KIAogICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsKLSAg
ICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZS4KLSAgICAgICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7
Ci0gICAgICAgIGlmIChpc0pTQ29uc3RydWN0KSB7Ci0gICAgICAgICAgICBBU1NFUlQoaml0Q29k
ZSA9PSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNvbnN0cnVjdCgpLnB0cigpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGppdENvZGUtPmV4
ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Cisg
ICAgLy8gRXhlY3V0ZSB0aGUgY29kZS4KKyAgICBpZiAoaXNKU0NvbnN0cnVjdCkgeworICAgICAg
ICBBU1NFUlQoaml0Q29kZSA9PSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLnB0cigpKTsKKyAgICAgICAgcmVzdWx0ID0g
aml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7
CiAKLSAgICAgICAgICAgIGlmIChMSUtFTFkoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5pc09iamVjdCgpKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAoTElLRUxZKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5pc09iamVjdCgpKTsKICAgICB9CiAKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwpAQCAtMTEwMCwxOSArMTA5NCwy
NCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICAvLyBX
ZSBjYW4ndCBkZWNsYXJlIGEgInZhciIvImZ1bmN0aW9uIiB0aGF0IG92ZXJ3cml0ZXMgYSBnbG9i
YWwgImxldCIvImNvbnN0Ii8iY2xhc3MiIGluIGEgc2xvcHB5LW1vZGUgZXZhbC4KICAgICBpZiAo
dmFyaWFibGVPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkgJiYgIWV2YWwtPmlzSW5TdHJpY3RDb250
ZXh0KCkgJiYgKG51bVZhcmlhYmxlcyB8fCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMpKSB7Cisg
ICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgICAgICBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4odmFyaWFibGVPYmplY3QpLT5nbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytp
KSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHVubGlua2VkQ29kZUJs
b2NrLT52YXJpYWJsZShpKTsKLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExl
eGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSk7Ci0gICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93
blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHNsb3QpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKKyAgICAgICAgICAgIHRocm93U2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAg
ICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgbWFrZVN0cmluZygiQ2FuJ3QgY3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFy
aWFibGUgaW4gZXZhbDogJyIsIFN0cmluZyhpZGVudC5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
VG9wTGV2ZWxGdW5jdGlvbkRlY2xzOyArK2kpIHsKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKLSAgICAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgICAgICBpZiAoSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsKKyAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CisgICAgICAgICAgICBib29sIGZvdW5kICA9IEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLT5uYW1lKCksIHNsb3QpOworICAgICAgICAgICAgdGhyb3dTY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOworICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBp
biBldmFsOiAnIiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTkzLDE1ICsxMTkyLDE1IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0K
IAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdD
IGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENv
ZGU+IGppdENvZGUgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KKyAgICBSZWZQdHI8SklU
Q29kZT4gaml0Q29kZTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBw
cm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIHRoaXNW
YWx1ZSwgMSk7CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3Vy
ZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4K
KyAgICAgICAgaml0Q29kZSA9IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKTsKKyAgICAgICAgcHJv
dG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCB0aGlzVmFs
dWUsIDEpOworICAgIH0KIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlzYWxsb3dH
Qy5kaXNhYmxlKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENv
ZGUgPT0gZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigpKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwpAQCAtMTI1MSwxOCAr
MTI1MCwxOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhCiAgICAg
ICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0
ZXIgZm9yICd0aGlzJy4KICAgICB9CiAKLSAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVu
c3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJs
ZS4KLQotICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZSgpOwotCi0gICAgLy8gVGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBg
dW5kZWZpbmVkYC4KLSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcK
LSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBSZWZQdHI8
SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAg
ICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpz
VW5kZWZpbmVkKCksIDEpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAv
LyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1
dGFibGUuCisgICAgICAgIGppdENvZGUgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7
CisgICAgICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5l
ZGAuCisgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAg
ICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICAgICAgcHJv
dG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCBqc1VuZGVm
aW5lZCgpLCAxKTsKKyAgICB9CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIGRpc2Fs
bG93R0MuZGlzYWJsZSgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChq
aXRDb2RlID09IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS5wdHIoKSk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDE0ICsxNjcsMTYgQEAgaW50MzJfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UcnlHZXRCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hl
YWJsZUlkZW50aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3
Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CiAgICAgc3R1YkluZm8tPnRv
b2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxP
YmplY3QsIGlkZW50LCBzbG90KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5n
ZXRQdXJlUmVzdWx0KCkpOwpAQCAtMTg0LDEzICsxODYsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UcgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UcnlHZXRCeUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeSh2bSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKwogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBp
ZGVudGlmaWVyLnVpZCgpKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGJhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
ZGlzYWxsb3dWTUVudHJ5KTsKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9i
amVjdCwgaWRlbnQsIHNsb3QpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Lmdl
dFB1cmVSZXN1bHQoKSk7CkBAIC0xOTksMTQgKzIwMywxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRyeUdldEJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJh
d0NhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJv
cGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKIAogICAgIGJhc2VWYWx1ZS5nZXRQcm9w
ZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzMSwxMiArNjMxLDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9p
bnN0YW5jZW8KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90cnlfZ2V0X2J5X2lkKQog
ewogICAgIExMSU5UX0JFR0lOKCk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRy
eSh2bSk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRyeUdldEJ5SWQ+KCk7CiAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9iYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFBy
b3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwog
CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKKyAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBzbG90LmdldFB1cmVSZXN1bHQoKTsKIAogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChy
ZXN1bHQpOwpAQCAtMTA5Myw5ICsxMDk1LDEzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfcHJpdmEKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKIAotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAg
YXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIERpc2FsbG93Vk1F
bnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93
Vk1FbnRyeSk7CisgICAgYm9vbCBmb3VuZCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICB0aHJvd1Njb3BlLmFz
c2VydE5vRXhjZXB0aW9uKCk7CisgICAgZGlzYWxsb3dWTUVudHJ5LnJlbGVhc2UoKTsKKyAgICBp
ZiAoIWZvdW5kKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVF
cnJvcihnbG9iYWxPYmplY3QpKTsKIAogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9X
ICYmIHNsb3QuaXNDYWNoZWFibGUoKSAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKICAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwpAQCAtMjMxNiw2ICsy
MzIyLDEyIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3cKICAgICB2
bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbihWTSogdm0sIFByb3RvQ2FsbEZy
YW1lKikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50KTsg
Ly8gQ3VycmVudGx5LCB0aGlzIHNob3VsZCBhbHdheXMgY3Jhc2guCisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUo
RW5jb2RlZEpTVmFsdWUgdmFsdWUpOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUo
RW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDcs
NiArMTQ3LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoXwogI2lm
IEVOQUJMRShDX0xPT1ApCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFj
a19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwogI2VuZGlm
CitleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggU2xvd1BhdGhSZXR1cm5UeXBlIGxs
aW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24oVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9J
TlRFUk5BTDsKIGV4dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGxsaW50X2Ny
YXNoKCkgV1RGX0lOVEVSTkFMOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MCw2ICsx
NzAsOSBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgIyBTaW5jZSB3ZSBoYXZlIHRo
ZSBndWFyYW50ZWUgdGhhdCB0WCAhPSBhWSB3aGVuIFggIT0gWSwgd2UgYXJlIHNhZmUgZnJvbQog
ICAgICMgYWxpYXNpbmcgcHJvYmxlbXMgd2l0aCBvdXIgYXJndW1lbnRzLgogCisgICAgbG9hZGkg
Vk06OmRpc2FsbG93Vk1FbnRyeUNvdW50W3ZtXSwgdDQKKyAgICBidGlueiB0NCwgLmNoZWNrVk1F
bnRyeVBlcm1pc3Npb24KKwogICAgIGlmIEFSTXY3CiAgICAgICAgIHZtRW50cnlSZWNvcmQoY2Zy
LCB0MykKICAgICAgICAgbW92ZSB0Mywgc3AKQEAgLTMxOSw2ICszMjIsMTMgQEAgbWFjcm8gZG9W
TUVudHJ5KG1ha2VDYWxsKQogICAgIHBvcENhbGxlZVNhdmVzKCkKICAgICBmdW5jdGlvbkVwaWxv
Z3VlKCkKICAgICByZXQKKworLmNoZWNrVk1FbnRyeVBlcm1pc3Npb246CisgICAgIyBXZSBnZXQg
aGVyZSBiZWNhdXNlIHZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCBpcyBub24temVyby4gQ3VycmVu
dGx5LCB0aGlzCisgICAgIyBhbHdheXMgbWVhbnMgd2Ugd2lsbCBjcmFzaC4KKyAgICBtb3ZlIGEw
LCB2bQorICAgIG1vdmUgYTEsIHByb3RvQ2FsbEZyYW1lCisgICAgY0NhbGwyKF9sbGludF9jaGVj
a192bV9lbnRyeV9wZXJtaXNzaW9uKQogZW5kCiAKICMgYTAsIGEyLCB0MywgdDQKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niw5
IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKIAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxp
Z25tZW50KHQ0LCAweGJhZDBkYzAxKQogCisgICAgbG9hZGkgVk06OmRpc2FsbG93Vk1FbnRyeUNv
dW50W3ZtXSwgdDQKKyAgICBidGlueiB0NCwgLmNoZWNrVk1FbnRyeVBlcm1pc3Npb24KKwogICAg
IHN0b3JlcCB2bSwgVk1FbnRyeVJlY29yZDo6bV92bVtzcF0KICAgICBsb2FkcCBWTTo6dG9wQ2Fs
bEZyYW1lW3ZtXSwgdDQKICAgICBzdG9yZXAgdDQsIFZNRW50cnlSZWNvcmQ6Om1fcHJldlRvcENh
bGxGcmFtZVtzcF0KQEAgLTI4NCw2ICsyODcsMTMgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxs
KQogICAgIHBvcENhbGxlZVNhdmVzKCkKICAgICBmdW5jdGlvbkVwaWxvZ3VlKCkKICAgICByZXQK
KworLmNoZWNrVk1FbnRyeVBlcm1pc3Npb246CisgICAgIyBXZSBnZXQgaGVyZSBiZWNhdXNlIHZt
LT5kaXNhbGxvd1ZNRW50cnlDb3VudCBpcyBub24temVyby4gQ3VycmVudGx5LCB0aGlzCisgICAg
IyBhbHdheXMgbWVhbnMgd2Ugd2lsbCBjcmFzaC4KKyAgICBtb3ZlIGEwLCB2bQorICAgIG1vdmUg
YTEsIHByb3RvQ2FsbEZyYW1lCisgICAgY0NhbGwyKF9sbGludF9jaGVja192bV9lbnRyeV9wZXJt
aXNzaW9uKQogZW5kCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlz
YWxsb3dTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Rpc2FsbG93U2NvcGUuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlzYWxsb3dTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMjcgKzM1
LDE4IEBAIGNsYXNzIERpc2FsbG93U2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERp
c2FsbG93U2NvcGUpOwogICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOwogcHVibGljOgot
I2lmZGVmIE5ERUJVRwotCi0gICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1Njb3BlKGJvb2wgPSBm
YWxzZSkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSB+RGlzYWxsb3dTY29wZSgpIHsgfQotICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGVuYWJsZSgpIHsgfQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBkaXNhYmxlKCkgeyB9Ci0KLSNlbHNlIC8vIG5vdCBOREVCVUcKLQot
ICAgIERpc2FsbG93U2NvcGUoYm9vbCBlbmFibGVkID0gdHJ1ZSkKKyNpZiBBU1NFUlRfRU5BQkxF
RAorICAgIERpc2FsbG93U2NvcGUoKQogICAgIHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSBlbmFi
bGVkOwotICAgICAgICBpZiAobV9pc0VuYWJsZWQpCi0gICAgICAgICAgICBlbnRlclNjb3BlKCk7
CisgICAgICAgIGF1dG8gY291bnQgPSBUOjpzY29wZVJlZW50cnlDb3VudCgpOworICAgICAgICBU
OjpzZXRTY29wZVJlZW50cnlDb3VudCgrK2NvdW50KTsKICAgICB9CiAKICAgICB+RGlzYWxsb3dT
Y29wZSgpCiAgICAgewotICAgICAgICBpZiAobV9pc0VuYWJsZWQpCi0gICAgICAgICAgICBleGl0
U2NvcGUoKTsKKyAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRyeUNvdW50KCk7Cisg
ICAgICAgIEFTU0VSVChjb3VudCk7CisgICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50KC0t
Y291bnQpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJl
YWQoKQpAQCAtNjMsMzQgKzU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEhVDo6c2Nv
cGVSZWVudHJ5Q291bnQoKTsKICAgICB9CiAKLSAgICB2b2lkIGVuYWJsZSgpCi0gICAgewotICAg
ICAgICBtX2lzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIGVudGVyU2NvcGUoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGRpc2FibGUoKQotICAgIHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSBmYWxzZTsK
LSAgICAgICAgZXhpdFNjb3BlKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgZW50ZXJT
Y29wZSgpCi0gICAgewotICAgICAgICBhdXRvIGNvdW50ID0gVDo6c2NvcGVSZWVudHJ5Q291bnQo
KTsKLSAgICAgICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoKytjb3VudCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBleGl0U2NvcGUoKQotICAgIHsKLSAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3Bl
UmVlbnRyeUNvdW50KCk7Ci0gICAgICAgIEFTU0VSVChjb3VudCk7Ci0gICAgICAgIFQ6OnNldFNj
b3BlUmVlbnRyeUNvdW50KC0tY291bnQpOwotICAgIH0KLQotICAgIGJvb2wgbV9pc0VuYWJsZWQ7
Ci0jZW5kaWYgLy8gTkRFQlVHCisjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKKyAgICBBTFdB
WVNfSU5MSU5FIERpc2FsbG93U2NvcGUoKSB7IH0gLy8gV2UgbmVlZCB0aGlzIHRvIHBsYWNhdGUg
Q2xhbmcgZHVlIHRvIHVudXNlZCB3YXJuaW5ncy4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBi
b29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlm
IC8vIEFTU0VSVF9FTkFCTEVECiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCShyZXZpc2lv
biAyNjQ1NzQpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1S
ZWVudHJ5Lmg6MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxs
b3dWTUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRGlzYWxsb3dTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
RGlzYWxsb3dWTVJlZW50cnkgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRy
eT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93Vk1SZWVudHJ5KTsKKyAgICB0
eXBlZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IEJhc2U7CitwdWJsaWM6Cisj
aWZkZWYgTkRFQlVHCisKKyAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wg
PSBmYWxzZSkgeyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkg
eyB9CisKKyNlbHNlIC8vIG5vdCBOREVCVUcKKworICAgIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wg
ZW5hYmxlZCA9IHRydWUpCisgICAgICAgIDogQmFzZShlbmFibGVkKQorICAgIHsgfQorCisgICAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpCisgICAgeworICAgICAgICBzX3Njb3BlUmVlbnRyeUNv
dW50LmNvbnN0cnVjdCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdW5zaWduZWQg
c2NvcGVSZWVudHJ5Q291bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICpzX3Njb3BlUmVlbnRy
eUNvdW50LmdldCgpOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCBzZXRTY29wZVJlZW50cnlDb3Vu
dCh1bnNpZ25lZCB2YWx1ZSkKKyAgICB7CisgICAgICAgICpzX3Njb3BlUmVlbnRyeUNvdW50Lmdl
dCgpID0gdmFsdWU7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhyZWFk
OjpUcnVlPj4gc19zY29wZVJlZW50cnlDb3VudDsKKworI2VuZGlmIC8vIE5ERUJVRworCisgICAg
ZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+OworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNh
bGxvd1ZNRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXNhbGxvd1ZNRW50cnkuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNDcgKzI1
LDQyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRGlzYWxsb3dTY29wZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZp
Yy5oPgotCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRGlzYWxsb3dWTVJlZW50cnkgOiBwdWJs
aWMgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4gewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERpc2FsbG93Vk1SZWVudHJ5KTsKLSAgICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlz
YWxsb3dWTVJlZW50cnk+IEJhc2U7Ci1wdWJsaWM6Ci0jaWZkZWYgTkRFQlVHCi0KLSAgICBBTFdB
WVNfSU5MSU5FIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgPSBmYWxzZSkgeyB9Ci0gICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9CitjbGFzcyBWTTsKIAotI2Vsc2Ug
Ly8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCBlbmFibGVkID0gdHJ1
ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplKCkKKy8vIFRoZSBvbmx5IHJlYXNvbiB3ZSBpbXBsZW1lbnQgRGlzYWxsb3dWTUVu
dHJ5IGFzIHNwZWNpYWxpemF0aW9uIG9mIGEgdGVtcGxhdGUKKy8vIGlzIHNvIHRoYXQgd2UgY2Fu
IHdvcmsgYXJvdW5kIGhhdmluZyB0byAjaW5jbHVkZSBWTS5oLCB3aGljaCBjYW4gaHVydCBidWls
ZAorLy8gdGltZS4gVGhpcyBkZWZlcnMgdGhlIGNvc3Qgb2YgI2luY2x1ZGUnaW5nIFZNLmggdG8g
b25seSB0aGUgY2xpZW50cyB0aGF0CisvLyBuZWVkIGl0LgorCit0ZW1wbGF0ZTxjbGFzcyBWTVR5
cGUgPSBWTT4KK2NsYXNzIERpc2FsbG93Vk1FbnRyeUltcGwgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERpc2FsbG93Vk1FbnRyeUltcGwpOworcHVibGljOgorICAgIERpc2FsbG93Vk1FbnRy
eUltcGwoVk1UeXBlJiB2bSkKKyAgICAgICAgOiBtX3ZtKCZ2bSkKICAgICB7Ci0gICAgICAgIHNf
c2NvcGVSZWVudHJ5Q291bnQuY29uc3RydWN0KCk7CisgICAgICAgIG1fdm0tPmRpc2FsbG93Vk1F
bnRyeUNvdW50Kys7CiAgICAgfQogCi1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25lZCBzY29w
ZVJlZW50cnlDb3VudCgpCisgICAgfkRpc2FsbG93Vk1FbnRyeUltcGwoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgpOworICAgICAgICBpZiAobV92bSkK
KyAgICAgICAgICAgIHJlbGVhc2UoKTsKICAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0U2NvcGVS
ZWVudHJ5Q291bnQodW5zaWduZWQgdmFsdWUpCisKKyAgICB2b2lkIHJlbGVhc2UoKQogICAgIHsK
LSAgICAgICAgKnNfc2NvcGVSZWVudHJ5Q291bnQuZ2V0KCkgPSB2YWx1ZTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQpOworICAgICAgICBtX3ZtLT5k
aXNhbGxvd1ZNRW50cnlDb3VudC0tOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNw
ZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRy
eUNvdW50OwotCi0jZW5kaWYgLy8gTkRFQlVHCi0KLSAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dT
Y29wZTxEaXNhbGxvd1ZNUmVlbnRyeT47Citwcml2YXRlOgorICAgIFZNVHlwZSogbV92bTsKIH07
CiAKK3VzaW5nIERpc2FsbG93Vk1FbnRyeSA9IERpc2FsbG93Vk1FbnRyeUltcGw8Vk0+OworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
c2FsbG93Vk1SZWVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0gICAgCi0j
aWZuZGVmIE5ERUJVRwotTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVk
LCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBEaXNhbGxvd1ZNUmVlbnRyeTo6c19zY29wZVJl
ZW50cnlDb3VudDsKLSNlbmRpZgotICAgIAotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgJKHJl
dmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93
Vk1SZWVudHJ5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJEaXNhbGxvd1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBE
aXNhbGxvd1ZNUmVlbnRyeSA6IHB1YmxpYyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5
PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzYWxsb3dWTVJlZW50cnkpOwotICAgIHR5
cGVkZWYgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4gQmFzZTsKLXB1YmxpYzoKLSNp
ZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCA9
IGZhbHNlKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7
IH0KLQotI2Vsc2UgLy8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCBl
bmFibGVkID0gdHJ1ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9Ci0KLSAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHNfc2NvcGVSZWVudHJ5Q291
bnQuY29uc3RydWN0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25lZCBz
Y29wZVJlZW50cnlDb3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gKnNfc2NvcGVSZWVudHJ5
Q291bnQuZ2V0KCk7Ci0gICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFNjb3BlUmVlbnRyeUNvdW50
KHVuc2lnbmVkIHZhbHVlKQotICAgIHsKLSAgICAgICAgKnNfc2NvcGVSZWVudHJ5Q291bnQuZ2V0
KCkgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJlYWQ6
OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50OwotCi0jZW5kaWYgLy8gTkRFQlVHCi0KLSAgICBm
cmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT47Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcg
KzEzOSw4IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIAogICAg
IEpTVmFsdWUgbmFtZVZhbHVlOwogICAgIGF1dG8gbmFtZVByb3BlcnROYW1lID0gdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZTsKLSAgICBQcm9wZXJ0eVNsb3QgbmFtZVNsb3QodGhpcywgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IG5hbWVTbG90KHRoaXMsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOwogCiAgICAgSlNWYWx1ZSBjdXJyZW50T2JqID0gdGhpczsKICAgICB1bnNpZ25lZCBwcm90
b3R5cGVEZXB0aCA9IDA7CkBAIC0xNjcsNyArMTY4LDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6
OnNhbml0aXplZFRvU3RyaW5nKAogCiAgICAgSlNWYWx1ZSBtZXNzYWdlVmFsdWU7CiAgICAgYXV0
byBtZXNzYWdlUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlOwotICAgIFBy
b3BlcnR5U2xvdCBtZXNzYWdlU2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3QgbWVzc2FnZVNsb3QodGhpcywgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRy
eSk7CiAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZ2xvYmFsT2Jq
ZWN0LCBtZXNzYWdlUHJvcGVydE5hbWUsIG1lc3NhZ2VTbG90KSAmJiBtZXNzYWdlU2xvdC5pc1Zh
bHVlKCkpCiAgICAgICAgIG1lc3NhZ2VWYWx1ZSA9IG1lc3NhZ2VTbG90LmdldFZhbHVlKGdsb2Jh
bE9iamVjdCwgbWVzc2FnZVByb3BlcnROYW1lKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlv
bigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6
ZVRocmVhZGluZy5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKICNpbmNsdWRl
ICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAjaW5jbHVk
ZSAiSlNDUHRyVGFnLmgiCkBAIC03OCwxMCArNzcsOCBAQCB2b2lkIGluaXRpYWxpemUoKQogICAg
ICAgICAgICAgZW5hYmxlU2lnaWxsQ3Jhc2hBbmFseXplcigpOwogCiAgICAgICAgIExMSW50Ojpp
bml0aWFsaXplKCk7Ci0jaWZuZGVmIE5ERUJVRwogICAgICAgICBEaXNhbGxvd0dDOjppbml0aWFs
aXplKCk7Ci0gICAgICAgIERpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXplKCk7Ci0jZW5kaWYK
KwogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7CiAgICAgICAgIFRocmVhZCYgdGhy
ZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIHRocmVhZC5zZXRTYXZlZExhc3RTdGFj
a1RvcCh0aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBt
a0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAo
YXBAbnlwb3AuY29tKQogICoKQEAgLTk2LDggKzk2LDcgQEAgSlNBcnJheSogSlNBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZAogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY3JlYXRlV2l0aEJ1
dHRlcmZseSh2bSwgZGVmZXJyYWxDb250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAKLSAg
ICBjb25zdCBib29sIGNyZWF0ZVVuaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHNjb3BlLm5vdGlm
eUFsbG9jYXRlZChyZXN1bHQsIGNyZWF0ZVVuaW5pdGlhbGl6ZWQpOworICAgIHNjb3BlLm5vdGlm
eUFsbG9jYXRlZChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQ1
NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEg
UGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
NyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA4LDkgKzUwOCwxMCBAQCB2b2lkIEpTRnVuY3Rp
b246OmdldE93bk5vbkluZGV4UHJvcGVydHlOCiAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcygpKSB7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSkgewogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVl
biByZWlmaWVkLgotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAgICBE
aXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNsb3QpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUo
KS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKSB7CiAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKTsKQEAgLTU2Myw5
ICs1NjQsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsbwogICAg
ICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5
cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVu
CiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEy
LjkuCi0gICAgICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlz
YWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBnZXRTbG90KTsKKyAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAg
ICAgIH0KICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVj
dC0+cmFyZURhdGEoKSkKICAgICAgICAgICAgIHJhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJv
dG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KSk7CkBAIC02NDIsOSArNjQ2LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhh
cyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAg
ICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45Lgot
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50
cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICB9CiAgICAgICAgIGlm
IChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKCkpCiAg
ICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBv
ZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6
ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Niw5ICsxNTYsMTEgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IC8vIFRoaXMgZ2V0UHJvcGVydHlTbG90IG9wZXJhdGlvbiBzaG91bGQgbm90IGJlIG9ic2VydmVk
IGJ5IHRoZSBQcm94eS4KICAgICAgICAgICAgIC8vIFNvIHdlIHVzZSBWTUlucXVpcnkuIEFuZCBw
dXJnZSB0aGUgb3BhcXVlIG9iamVjdCBjYXNlcyAocHJveHkgYW5kIG5hbWVzcGFjZSBvYmplY3Qp
IGJ5IGlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgZ3VhcmQuCi0gICAgICAgICAgICBQcm9wZXJ0
eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRy
eSh2bSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OwogICAgICAgICAgICAgb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGxlbmd0aFNsb3QpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOworICAgICAgICAgICAgZGlzYWxsb3dWTUVudHJ5LnJlbGVhc2UoKTsKIAogICAg
ICAgICAgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmMgPSBvYmplY3QtPmdldChnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDEsNyArNTAxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0R2xvYmFs
VGhpcyhWTSYgdgogc3RhdGljIEdldHRlclNldHRlciogZ2V0R2V0dGVyQnlJZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCiB7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlKGJhc2UpOwotICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShnbG9iYWxP
YmplY3QtPnZtKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAg
ICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsK
ICAgICByZXR1cm4ganNDYXN0PEdldHRlclNldHRlcio+KHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsK
IH0KQEAgLTEzODMsMTAgKzEzODQsMTMgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgSgogYm9vbCBKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNo
b3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAvLyBz
aWxlbnRseSBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIGFjY2Vzc29ycyBhbGlhc2luZyB2YXJzLgot
ICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgc3ltYm9sVGFibGVH
ZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh0aGlzT2Jq
ZWN0LT52bSgpKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CisgICAgICAgIC8vIHNpbGVudGx5IGlnbm9yZSBhdHRlbXB0cyB0byBhZGQgYWNjZXNzb3JzIGFs
aWFzaW5nIHZhcnMuCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9y
KCkgJiYgc3ltYm9sVGFibGVHZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93
blByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKQEAgLTIwNTIsNyArMjA1Niw4IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICAgICAgbV9hcnJheVNwZWNpZXNXYXRj
aHBvaW50U2V0LmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIldhcyBub3QgYWJsZSB0
byBzZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRjaHBvaW50LiIpKTsKICAgICB9OwogCi0gICAgUHJv
cGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChhcnJheVByb3RvdHlwZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChhcnJheVBy
b3RvdHlwZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRp
c2FsbG93Vk1FbnRyeSk7CiAgICAgYXJyYXlQcm90b3R5cGUtPmdldE93blByb3BlcnR5U2xvdChh
cnJheVByb3RvdHlwZSwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNvbnN0
cnVjdG9yU2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoY29u
c3RydWN0b3JTbG90LnNsb3RCYXNlKCkgIT0gYXJyYXlQcm90b3R5cGUKQEAgLTIwNjYsNyArMjA3
MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICBpZiAo
Y29uc3RydWN0b3JTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBjb25zdHJ1Y3Rv
clN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSh2bSwgYXJyYXlDb25zdHJ1Y3Rvcik7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc3BlY2llc1Ns
b3QoYXJyYXlDb25zdHJ1Y3RvciwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNwZWNpZXNTbG90KGFycmF5Q29uc3RydWN0b3Is
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpOwogICAgIGFycmF5Q29uc3RydWN0b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJheUNv
bnN0cnVjdG9yLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVz
U2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoc3BlY2llc1Ns
b3Quc2xvdEJhc2UoKSAhPSBhcnJheUNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVy
aWNAd2Via2l0Lm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTM0LDkgKzUzNCwxMSBAQCBTdHJpbmcg
SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAKICAgICAvLyBDaGVjayBmb3IgYSBk
aXNwbGF5IG5hbWUgb2Ygb2JqLmNvbnN0cnVjdG9yLgogICAgIC8vIFRoaXMgaXMgdXNlZnVsIHRv
IGdldCBgRm9vYCBmb3IgdGhlIGAoY2xhc3MgRm9vKS5wcm90b3R5cGVgIG9iamVjdC4KLSAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOwotICAgIGlmIChvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3QpKSB7Ci0g
ICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBEaXNhbGxv
d1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOworICAgIGJvb2wgZm91bmQgPSBvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChv
YmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3Qp
OworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgaWYgKGZvdW5kKSB7CiAgICAg
ICAgIGlmIChzbG90LmlzVmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBjdG9y
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBzbG90LmdldFZhbHVlKGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpKSkgewogICAgICAgICAgICAg
ICAgIGlmIChKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4odm0sIGN0b3JPYmplY3QpKQpAQCAtNTU4LDkgKzU2MCwxMCBAQCBTdHJpbmcg
SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAgICAgICAgICAgICBKU1ZhbHVlIHBy
b3RvVmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgICAgICBp
ZiAocHJvdG9WYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHBy
b3RvT2JqZWN0ID0gYXNPYmplY3QocHJvdG9WYWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QocHJvdG9WYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb3RvT2JqZWN0LT5nZXRQcm9wZXJ0
eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkpOworICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHByb3RvVmFsdWUsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OworICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b09iamVjdC0+Z2V0UHJvcGVydHlT
bG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3QpOwor
ICAgICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAg
ICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBjdG9yT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvckZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4odm0sIGN0b3JPYmplY3QpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MDQsNyArNjA0LDggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByaXZhdGVG
aWVsZChKUwogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghSlNPYmplY3Q6OmdldFByaXZh
dGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7Ci0g
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQ
cml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICBpZiAoc2xvdC5pbnRlcm5h
bE1ldGhvZFR5cGUoKSAhPSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KQorICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgZmFsc2UpOwogICAgIH0KICAgICBFWENFUFRJT05fQVNTRVJU
KCFzY29wZS5leGNlcHRpb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTIsOCArMTUyLDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIERpc2Fs
bG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChnbG9iYWxPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICBib29sIGhhc093blByb3BlcnR5ID0gZ2xv
YmFsT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50LCBzbG90KTsKKyAgICAgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgICAgICBkaXNhbGxvd1ZNRW50cnkucmVsZWFzZSgpOwogICAgICAgICBpZiAoIWhhc093blBy
b3BlcnR5KSB7CiAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShVbnJlc29sdmVk
UHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgMCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0
LDExICszNCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBB
U1NFUlRfRU5BQkxFRAorCiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlKFZNJiB2bSkKICAgICA6IG1fdm0odm0pCi0gICAgLCBtX2Rpc2FsbG93R0Mo
ZmFsc2UpCi0gICAgLCBtX2Rpc2FsbG93Vk1SZWVudHJ5KGZhbHNlKQogewogfQogCkBAIC01MCwy
MSArNDksMjAgQEAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYQogICAg
IHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChtX29iamVjdCk7CiB9CiAKLXZvaWQgT2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiBvYmplY3Qs
IGJvb2wgd2FzQ3JlYXRlZFVuaW5pdGlhbGl6ZWQpCit2b2lkIE9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGU6Om5vdGlmeUFsbG9jYXRlZChKU09iamVjdCogb2JqZWN0KQogewotICAgIGlmICh3YXND
cmVhdGVkVW5pbml0aWFsaXplZCkgewotICAgICAgICBtX2Rpc2FsbG93R0MuZW5hYmxlKCk7Ci0g
ICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZW5hYmxlKCk7Ci0gICAgICAgIG1fb2JqZWN0ID0g
b2JqZWN0OwotICAgIH0gZWxzZQotICAgICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6
ZWQob2JqZWN0KTsKKyAgICBBU1NFUlQoIW1fZGlzYWxsb3dHQyk7CisgICAgQVNTRVJUKCFtX2Rp
c2FsbG93Vk1FbnRyeSk7CisgICAgbV9kaXNhbGxvd0dDLmVtcGxhY2UoKTsKKyAgICBtX2Rpc2Fs
bG93Vk1FbnRyeS5lbXBsYWNlKG1fdm0pOworICAgIG1fb2JqZWN0ID0gb2JqZWN0OwogfQogCiB2
b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAgICAgIG1fZGlzYWxsb3dHQy5k
aXNhYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZGlzYWJsZSgpOworICAgICAg
ICBtX2Rpc2FsbG93R0MucmVzZXQoKTsKKyAgICAgICAgbV9kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKICAgICAgICAgbV9vYmplY3QgPSBudWxscHRyOwogICAgIH0KICAgICB2ZXJpZnlQcm9wZXJ0
aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKQEAgLTExNCw2ICsxMTIsNyBAQCB2b2lkIE9iamVj
dEluaXRpYWxpemF0aW9uU2NvcGU6OnZlcmlmeVByCiAgICAgICAgIH0KICAgICB9CiB9Ci0jZW5k
aWYKKworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNTQgKzI2LDU1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRlZmVyR0Mu
aCIKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgorI2luY2x1ZGUgIkRpc2FsbG93Vk1F
bnRyeS5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBWTTsKIGNsYXNzIEpTT2JqZWN0OwogCi0jaWZkZWYgTkRF
QlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIAogY2xhc3MgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZSB7CiBwdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSBPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
KFZNJiB2bSkKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgIHsgfQotICAgIEFMV0FZU19JTkxJTkUg
fk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKQotICAgIHsKLSAgICAgICAgbV92bS5oZWFwLm11
dGF0b3JGZW5jZSgpOwotICAgIH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlKFZNJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUoKTsKIAotICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1
cm4gbV92bTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmpl
Y3QqLCBib29sKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQo
SlNPYmplY3QqKSB7IH0KKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CisgICAg
dm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKTsKKyAgICB2b2lkIG5vdGlmeUluaXRpYWxp
emVkKEpTT2JqZWN0Kik7CiAKIHByaXZhdGU6CisgICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVzQXJl
SW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKKwogICAgIFZNJiBtX3ZtOworICAgIE9wdGlvbmFsPERp
c2FsbG93R0M+IG1fZGlzYWxsb3dHQzsKKyAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IG1f
ZGlzYWxsb3dWTUVudHJ5OworICAgIEpTT2JqZWN0KiBtX29iamVjdCB7IG51bGxwdHIgfTsKIH07
CiAKLSNlbHNlIC8vIG5vdCBOREVCVUcKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogCiBj
bGFzcyBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKKyAgICBBTFdBWVNfSU5MSU5FIE9i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisgICAg
eyB9CisgICAgQUxXQVlTX0lOTElORSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSgpCisgICAg
eworICAgICAgICBtX3ZtLmhlYXAubXV0YXRvckZlbmNlKCk7CisgICAgfQogCi0gICAgVk0mIHZt
KCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpTT2Jq
ZWN0KiwgYm9vbCB3YXNDcmVhdGVkVW5pbml0aWFsaXplZCk7Ci0gICAgdm9pZCBub3RpZnlJbml0
aWFsaXplZChKU09iamVjdCopOworICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyBy
ZXR1cm4gbV92bTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNP
YmplY3QqKSB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNP
YmplY3QqKSB7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0
aWFsaXplZChKU09iamVjdCopOwotCiAgICAgVk0mIG1fdm07Ci0gICAgRGlzYWxsb3dHQyBtX2Rp
c2FsbG93R0M7Ci0gICAgRGlzYWxsb3dWTVJlZW50cnkgbV9kaXNhbGxvd1ZNUmVlbnRyeTsKLSAg
ICBKU09iamVjdCogbV9vYmplY3QgeyBudWxscHRyIH07CiB9OwogCi0jZW5kaWYgLy8gTkRFQlVH
CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAw
NS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjEsNiArMjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01B
bm5vdGF0aW9uLmgiCisjaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiR2V0
Vk0uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgi
CkBAIC0xMTIsMTAgKzExMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIE1vZHVsZU5hbWVzcGFjZSwg
Ly8gTW9kdWxlTmFtZXNwYWNlT2JqZWN0J3MgZW52aXJvbm1lbnQgYWNjZXNzLgogICAgIH07CiAK
LSAgICBleHBsaWNpdCBQcm9wZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUsIEludGVy
bmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUpCisgICAgZXhwbGljaXQgUHJvcGVydHlT
bG90KGNvbnN0IEpTVmFsdWUgdGhpc1ZhbHVlLCBJbnRlcm5hbE1ldGhvZFR5cGUgaW50ZXJuYWxN
ZXRob2RUeXBlLCBEaXNhbGxvd1ZNRW50cnkqIGRpc2FsbG93Vk1FbnRyeSA9IG51bGxwdHIpCiAg
ICAgICAgIDogbV90aGlzVmFsdWUodGhpc1ZhbHVlKQogICAgICAgICAsIG1faW50ZXJuYWxNZXRo
b2RUeXBlKGludGVybmFsTWV0aG9kVHlwZSkKICAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
ZGlzYWxsb3dWTUVudHJ5LCAoaW50ZXJuYWxNZXRob2RUeXBlID09IEludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5KSA9PSAhIWRpc2FsbG93Vk1FbnRyeSk7CiAgICAgfQogCiAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIHNsb3RCYXNlIC8gcmVjZWl2ZXIgYmVoYXZpb3IgZGlmZmVyZW5jZSBp
biBjdXN0b20gdmFsdWVzIGFuZCBjdXN0b20gYWNjZXNzb3JzLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9u
IDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw3IEBAIEFMV0FZU19JTkxJTkUgSlNB
cnJheSogdHJ5Q3JlYXRlVW5pbml0aWEKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6
OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBidXR0
ZXJmbHkpOwogCi0gICAgY29uc3QgYm9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1ZTsKLSAg
ICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVkKTsKKyAg
ICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1By
b2ZpbGVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw4ICs3Mjcs
OSBAQCBTdHJpbmcgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtCiAKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBEaXNhbGxvd1ZNRW50
cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBhdXRvIGdldFByb3BlcnR5SWZQdXJlT3BlcmF0
aW9uID0gWyZdIChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgLT4gU3RyaW5nIHsKLSAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QoY2FsbGVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoY2FsbGVlLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsK
ICAgICAgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShpZGVudCk7CiAgICAgICAgIGJvb2wg
aGFzUHJvcGVydHkgPSBjYWxsZWUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0NCw2ICs2
NDQsOCBAQCBwdWJsaWM6CiAjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVIKIAogICAgIFZNVHlwZSB2bVR5cGU7CisgICAgdW5zaWduZWQgZGlzYWxsb3dWTUVudHJ5Q291
bnQgeyAwIH07CisKICAgICBDbGllbnREYXRhKiBjbGllbnREYXRhOwogICAgIEVudHJ5RnJhbWUq
IHRvcEVudHJ5RnJhbWUgeyBudWxscHRyIH07CiAgICAgLy8gTk9URTogV2hlbiB0aHJvd2luZyBh
biBleGNlcHRpb24gd2hpbGUgcm9sbGluZyBiYWNrIHRoZSBjYWxsIGZyYW1lLCB0aGlzIG1heSBi
ZSBlcXVhbCB0bwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVu
dHJ5U2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCi0jaW5j
bHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC0zOSw3ICszOCw2IEBA
IFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNHbG8KICAgICA6IG1fdm0odm0p
CiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiB7Ci0gICAgQVNTRVJUKCFEaXNh
bGxvd1ZNUmVlbnRyeTo6aXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCgpKTsKICAgICBpZiAoIXZt
LmVudHJ5U2NvcGUpIHsKICAgICAgICAgdm0uZW50cnlTY29wZSA9IHRoaXM7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI2NDU3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjg5NSw5ICsyODk1LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmMKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3BlcnR5
KS0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgIFByb3BlcnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlz
YWxsb3dWTUVudHJ5KHZtKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1ZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAg
ICAgdmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBpZiAoc2xvdC5pc0Nh
Y2hlYWJsZUdldHRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTg0KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIw
MjAtMDctMTkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBs
aWZ5IERpc2FsbG93U2NvcGUsIERpc2FsbG93R0MsIGFuZCBEaXNhbGxvd1ZNUmVlbnRyeSBpbXBs
ZW1lbnRhdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQ1MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1Nzk1NzI5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJsZU5hbWVk
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVQdXQpOgorICAgICAgICAoR2VuZXJhdGVQdXRCeUluZGV4KToKKyAgICAgICAg
KEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpw
dXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwdXRCeUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dCk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6
ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwdXRCeUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlZmlu
ZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZWZpbmVPd25Qcm9wZXJ0eSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpwdXRCeUluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnB1
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllczo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6ZGVmaW5lT3duUHJvcGVydHkpOgorCiAyMDIwLTA3
LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ29s
b3JCdWlsZGVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTksNyArNTksOCBAQCBzdGF0aWMgYm9vbCBpc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJv
cGVydHkgbmFtZWQgUCwgdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qg
c2xvdCB7ICZ0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkgfTsKKyAgICBKU0M6OkRpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnko
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKKyAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90KCZ0
aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgIGlmIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoJnRoaXNPYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC05OSw3ICsxMDAsOCBAQCBz
dGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eShKCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQg
UCwgdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlz
T2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKKyAgICBKU0M6OkRpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpKTsKKyAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90KCZ0aGlzT2JqZWN0LCBK
U0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOwogICAgIGlmIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRo
aXNPYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY0NTc0KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTk2NSw5ICs5NjUsMTQgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAg
IAogICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0
c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7CiAgICAg
ICAgIGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCEocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYm9vbCBmb3VuZDtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICB9XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgaWYgKCFmb3VuZCkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAi
ICAgICI7CiAgICAgICAgIH0KIApAQCAtMTA0MSw5ICsxMDQ2LDE0IEBAIHN1YiBHZW5lcmF0ZVB1
dEJ5SW5kZXgKICAgICAgICAgICAgICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQg
PSAiIjsKICAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgewotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9O1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBi
b29sIGZvdW5kO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIERpc2FsbG93Vk1F
bnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgfVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKCFmb3VuZCkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAi
ICAgICI7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMTc2LDggKzExODYsMTMgQEAgc3ViIEdl
bmVyYXRlRGVmaW5lT3duUHJvcGVydHkKICAgICAgICAgICAgICMgRklYTUU6IElzIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGNhbGw/IElzIHRoZXJl
IGEgZnVuY3Rpb24gdGhhdCB3aWxsCiAgICAgICAgICAgICAjICAgICAgICBvbmx5IGxvb2sgYXQg
dGhlIGFjdHVhbCBwcm9wZXJ0aWVzLCBhbmQgbm90IGNhbGwgaW50byBvdXIgaW1wbGVtZW50YXRp
b24gb2YgdGhlCiAgICAgICAgICAgICAjICAgICAgICBbW0dldE93blByb3BlcnR5XV0gaG9vaz8K
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlv
bmFsSW5kZW50LiAiICAgICAgICBib29sIGZvdW5kO1xuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICB7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgICAgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVu
dC4gIiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTtcbiIp
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAg
ICAgICAgICAgICBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgfVxu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAi
ICAgICAgICBpZiAoIWZvdW5kKSB7XG4iKTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5kZW50
IC49ICIgICAgIjsKICAgICAgICAgfQogICAgICAgICBpZiAoISRuYW1lZFNldHRlck9wZXJhdGlv
bikgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsOSArMjM0LDE0IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICB9CiAKICAgICBpZiAoIXBy
b3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9Owot
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wg
Zm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCkpOworICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI2Myw5
ICsyNjgsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAg
IH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
OwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhp
c09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNP
YmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kOworICAg
IHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZv
dW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJv
cGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
fQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUp
OwpAQCAtMjkyLDggKzMwMiwxMyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpCiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAg
IERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7Cisg
ICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJl
dmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzNCw5ICsyMzQsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZwogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkp
IHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAg
ICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAg
ICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdl
dFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjYzLDkgKzI2OCwxNCBAQCBib29sIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZN
RW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRp
c2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmpl
Y3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewog
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yOTIsOCArMzAyLDEzIEBA
IGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICB9CiAKICAgICBp
ZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90
IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBi
b29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3VuZCA9IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7
CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDkgKzI0MywxNCBAQCBi
b29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAgICAgfQogCiAgICAgaWYg
KCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBi
b29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0y
NzIsOSArMjc3LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4K
ICAgICB9CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGlu
ZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsK
KyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAg
ICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdl
dFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgIH0KKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0
cnVlKTsKQEAgLTMwMSw4ICszMTEsMTMgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbgogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsK
LSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAg
ICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCkpOworICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OworICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAg
ICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNj
cmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50
aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsOSArMjA3LDE0IEBAIGJvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dCgKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJv
bCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYg
YXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsK
KyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dW
TUVudHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAg
ICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUp
LT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTIyOCw5ICsyMzMsMTQgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QgogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9Owot
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUp
LT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYg
YXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjQ3LDggKzI1NywxMyBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpkZWZpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNT
eW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAg
eworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2Fs
bG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lv
biAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
Nyw5ICsyMDcsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAg
IGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAo
IShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAg
ICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91
bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpA
QCAtMjI4LDkgKzIzMywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b246CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwog
CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0g
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgewor
ICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQg
PSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9Cisg
ICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBA
IC0yNDcsOCArMjU3LDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAK
ICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xv
dCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAg
ICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3Vu
ZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZv
dW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlw
dG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEzLDkgKzIxMywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXI6OnB1CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICBE
aXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkp
OworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAg
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZvdW5kID0g
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAg
ICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgdHJ1ZSk7CkBAIC0yMzQsOSArMjM5LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcjo6cHUKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEo
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9v
bCBmb3VuZDsKKyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnko
dm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
OworICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgIH0KKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB0cnVlKTsKQEAgLTI1Myw4ICsyNjMsMTMgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyOjpkZQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAg
ICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZt
KCkpOworICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwor
ICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9
CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlw
dG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsOSArMjM1LDE0IEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5
TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7
CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnko
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhp
c09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOworICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI1Niw5ICsyNjEs
MTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xv
dCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxs
b3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQp
IHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjc4LDggKzI4OCwx
MyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgICBE
aXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkp
OworICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAg
ICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9Cisg
ICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9y
LmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDMsOSArMjQzLDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckEKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0g
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsK
KyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91
bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3Miw5ICsyNzcsMTQgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsg
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9
OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMzAxLDggKzMxMSwxMyBAQCBib29s
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgfQogCiAgICAgaWYgKCFw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsK
LSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBm
b3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw5ICsyMzEsMTQgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcAogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAg
ICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNh
bGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjUyLDkgKzI1NywxNCBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wCiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50
cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2Fs
bG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNzcsOCArMjg3LDEzIEBAIHN0
YXRpYyBib29sIGlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHIKIH0KIAogICAgICAgICBpZiAo
IWlzVW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgewotICAgICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkgeworICAgICAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFs
T2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2Fs
bG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAg
ICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404693</attachid>
            <date>2020-07-19 19:41:32 -0700</date>
            <delta_ts>2020-07-19 20:00:25 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539.patch</filename>
            <type>text/plain</type>
            <size>116038</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0OCBA
QAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5kIERpc2FsbG93Vk1SZWVudHJ5
IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU3OTU3Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
RGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFibGluZyBhbmQgZGlzYWJsaW5nLiAg
VGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5hYmxlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93LCB3ZQorICAgICAgICBjYW4gbWFr
ZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50cnkgaW5zaWRlIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0aCBXVEY6Ok9wdGlvbmFsLiAgV2l0
aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMgYW5kIG1ha2UKKyAgICAgICAgdGhl
bSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAgICBIb3dldmVyLCB0aGVyZSBpcyBz
dGlsbCBvbmUgZXhjZXB0aW9uOiBEaXNhbGxvd1ZNUmVlbnRyeSBuZWVkcyBhIHJlbGVhc2UoKSBt
ZXRob2QKKyAgICAgICAgdG8gYWxsb3cgaXQgdG8gZGlzYWJsZSB0aGUgUkFJSSBzY29wZSBhaGVh
ZCBvZiBkZXN0cnVjdGlvbi4gIFRoZSByZWFzb24gZm9yIHRoaXMKKyAgICAgICAgaXMgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgZW5mb3JjZSB0aGF0IFByb3BlcnR5U2xvdHMgd2l0aCBWTUlu
cXVpcnkgaW50ZXJuYWwKKyAgICAgICAgbWV0aG9kIHR5cGUgd2lsbCBhbHdheXMgYmUgYWNjb21w
YW5pZWQgYnkgYSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0byBkaXNhYmxlCisgICAgICAgIGNh
bGxpbmcgYmFjayBpbnRvIEpTLiAgSG93ZXZlciwgdGhpcyBvbmx5IG5lZWQgdG8gYmUgZW5mb3Jj
ZWQgd2hpbGUgY2FsbGluZyBpbnRvCisgICAgICAgIGdldFByb3BlcnR5U2xvdCgpLiAgVGhlcmVh
ZnRlciwgdGhlIGNsaWVudCBtYXkgdXNlIHRoZSByZXN1bHRzIHJldHVybmVkIGluIHRoZQorICAg
ICAgICBQcm9wZXJ0eVNsb3QgdG8gbWFrZSBkZWNpc2lvbnMgb24gdGFraW5nIGFjdGlvbiB0aGF0
IG1heSBlbnRhaWwgY2FsbGluZyBpbnRvIEpTLgorICAgICAgICBUaGlzIG1ha2VzIG1hbmFnaW5n
IHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0cmlja3kuICBU
bworICAgICAgICB3b3JrYXJvdW5kIHRoaXMsIHdlIGxldCBEaXNhbGxvd1ZNUmVlbnRyeSBoYXZl
IGEgcmVsZWFzZSgpIG1ldGhvZCB0aGF0IGJhc2ljYWxseQorICAgICAgICBkb2VzIGFuIGVhcmx5
IHJlbGVhc2Ugb2YgcGVybWlzc2lvbiB0byBjYWxsIGludG8gSlMuICBUaGUgcmVsZWFzZSgpIG1l
dGhvZCBzaG91bGQKKyAgICAgICAgb25seSBiZSB1c2VkIGluIHBsYWNlcyB3aGVyZSB3ZSBjYW4n
dCByZWx5IG9uIGRlc3RydWN0aW9uIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeQorICAgICAgICBz
Y29wZSB0byB0YWtlIGNhcmUgb2YgdGhlIHJlbGVhc2UgYXV0b21hdGljYWxseS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUs
IGFuZCBhbHNvCisgICAgICAgICAgIGxheXMgdGhlIGdyb3VuZCB3b3JrIGluIGNhc2Ugd2Ugd2Fu
dCB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIG1vZGVzIG9mIGRpc2FibGluZworICAgICAgICAgICBW
TSBlbnRyeSBpbnN0ZWFkIG9mIGNyYXNoaW5nIGUuZy4gc2lsZW50IHJlamVjdGlvbnMgKGp1c3Qg
c2ltcGx5IGNob29zaW5nIG5vdAorICAgICAgICAgICB0byBjYWxsIGludG8gSlMsIGFuZCBhbHdh
eXMgcmV0dXJuaW5nIHVuZGVmaW5lZCkgaWYgd2UgbmVlZCBpdCBpbiB0aGUgZnV0dXJlLgorICAg
ICAgICAgICBGb3Igbm93LCB0aGUgb25seSBtb2RlIG9mIGRpc2FsbG93aW5nIGVudHJ5IGlzIHRv
IGNyYXNoLgorCisgICAgICAgIDMuIENoYW5nZSBEaXNhbGxvd1Njb3BlIGFuZCBEaXNhbGxvd0dD
IHRvIGJlIGJhc2VkIG9uIEFTU0VSVF9FTkFCTEVEIGluc3RlYWQgb2YgTkVCVUcuCisKKyAgICAg
ICAgNC4gTWFrZSBEaXNhbGxvd1ZNRW50cnkgYWx3YXlzIGVuZm9yY2VhYmxlLCBub3QganVzdCB3
aGVuIEFTU0VSVF9FTkFCTEVELgorCisgICAgICAgIDUuIEFkZCBEaXNhbGxvd1ZNRW50cnkgc2Nv
cGVzIHdoZW5ldmVyIHdlIGNyZWF0ZSBhIFByb3BlcnR5U2xvdCBmb3IgVk1JbnF1aXJ5LgorICAg
ICAgICAgICBUaGUgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yIHdpbGwgbm93IHRha2UgYW4gb3B0
aW9uYWwgRGlzYWxsb3dWTUVudHJ5IHBvaW50ZXIuCisgICAgICAgICAgIElmIHRoZSBzbG90J3Mg
c3BlY2lmaWVkIGludGVybmFsIG1ldGhvZCB0eXBlIGlzIFZNSW5xdWlyeSwgdGhlbiB3ZSdsbAor
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCB0aGF0IHRoZSBEaXNhbGxvd1ZNRW50cnkgcG9pbnRl
ciBpcyBub24tbnVsbC4KKworICAgICAgICA2LiBGaXhlZCBhIGJ1ZyBpbiBsbGludF9zbG93X3Bh
dGhfZ2V0X3ByaXZhdGVfbmFtZSgpLiAgSXQgc2hvdWxkIGJlIHBhc3NpbmcKKyAgICAgICAgICAg
R2V0T3duUHJvcGVydHkgdG8gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZCgpIGluc3RlYWQgb2Yg
Vk1JbnF1aXJ5LgorICAgICAgICAgICBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKCkgY2FuIHRo
cm93IGFuIGV4Y2VwdGlvbiwgd2hpY2ggbWFrZXMgaXQgbm90CisgICAgICAgICAgIGFwcHJvcHJp
YXRlIGZvciBhIFZNSW5xdWlyeS4gIFRoZXJlIGlzIGFsc28gbm8gY3VycmVudCBjbGllbnQgdGhh
dCBuZWVkcyBpdAorICAgICAgICAgICB0byBoYW5kbGUgYSBWTUlucXVpcnkuICBBZGRlZCBhbiBh
c3NlcnRpb24gaW4gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZCgpIHRvCisgICAgICAgICAgIHZl
cmlmeSB0aGF0IHRoZSBjbGllbnQgd2lsbCBub3QgYmUgcmVxdWVzdGluZyBhIFZNSW5xdWlyeS4K
KworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0RlZmVyR0Mu
Y3BwOgorICAgICAgICAqIGhlYXAvRGVmZXJHQy5oOgorICAgICAgICAoSlNDOjpEaXNhbGxvd0dD
OjpEaXNhbGxvd0dDKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dHQzo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6
OnF1ZXJ5SW5zdGFuY2VzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
OjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpsbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKToKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93U2NvcGUuaDoKKyAgICAgICAgKEpT
Qzo6RGlzYWxsb3dTY29wZTo6RGlzYWxsb3dTY29wZSk6CisgICAgICAgIChKU0M6OkRpc2FsbG93
U2NvcGU6On5EaXNhbGxvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6aXNJ
bkVmZmVjdE9uQ3VycmVudFRocmVhZCk6CisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmVu
YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmRpc2FibGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjplbnRlclNjb3BlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6ZXhpdFNjb3BlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oLgorICAgICAgICAoSlNDOjpE
aXNhbGxvd1ZNRW50cnlJbXBsOjpEaXNhbGxvd1ZNRW50cnlJbXBsKToKKyAgICAgICAgKEpTQzo6
RGlzYWxsb3dWTUVudHJ5SW1wbDo6fkRpc2FsbG93Vk1FbnRyeUltcGwpOgorICAgICAgICAoSlND
OjpEaXNhbGxvd1ZNRW50cnlJbXBsOjpyZWxlYXNlKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dW
TVJlZW50cnk6OkRpc2FsbG93Vk1SZWVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlz
YWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNh
bGxvd1ZNUmVlbnRyeTo6c2NvcGVSZWVudHJ5Q291bnQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpEaXNhbGxvd1ZNUmVlbnRyeTo6c2V0U2NvcGVSZWVudHJ5Q291bnQpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6
ZWRUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoK
KyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0
ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3Bl
cnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRHZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRy
eUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRQcml2YXRlRmllbGQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6Cisg
ICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlv
blNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5SW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlOjp2bSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGU6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUpOgorICAgICAgICAoSlND
OjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjp+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6
CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRl
ZCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRp
YWxpemVkKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4
cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtZUZyb21DYWxs
ZWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlT
Y29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAg
ICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRH
ZXR0ZXJTZXR0ZXIpOgorCiAyMDIwLTA3LTE5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgbm9uLXVuaWZpZWQgc291cmNlIGJ1
aWxkIGZpeApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC04MzUsNyArODM1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQQogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50
aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAot
ICAgIHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAorICAgIHJ1bnRpbWUvRGlzYWxsb3dWTUVu
dHJ5LmgKICAgICBydW50aW1lL0R1bXBDb250ZXh0LmgKICAgICBydW50aW1lL0VDTUFNb2RlLmgK
ICAgICBydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzY2LDcgKzc2Niw2IEBAIHJ1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAogcnVudGltZS9EaXJl
Y3RBcmd1bWVudHNPZmZzZXQuY3BwCiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAot
cnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAKIHJ1bnRpbWUvRG91YmxlUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcAogcnVudGltZS9EdW1wQ29udGV4dC5jcHAKIHJ1bnRpbWUvRUNNQU1vZGUu
Y3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5OCw4ICsyOTgsMTMgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0Nl
bAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0
aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZ2xv
YmFsT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlvbkVudHJ5KiBl
bnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoUGFyZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldFNsb3QpKQorICAgICAgICAgICAgICAgICAgICBib29sIGZvdW5kOworICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBnZXRT
bG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBQ
YXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0U2xvdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGZvdW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudDo6
cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC02NjgsOSArNjczLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50PjoKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqID0gYXNDYWxsYmFja09iamVjdCh0
aGlzVmFsdWUpOwogICAgIAogICAgIC8vIENoZWNrIGZvciBjYWNoZWQgb3Igb3ZlcnJpZGUgcHJv
cGVydHkuCi0gICAgUHJvcGVydHlTbG90IHNsb3QyKHRoaXNPYmosIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIGlmIChQYXJlbnQ6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKSk7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dW
TUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QyKHRoaXNPYmosIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwor
ICAgICAgICBib29sIGZvdW5kID0gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QyKTsKKyAgICAgICAgZGlzYWxsb3dWTUVu
dHJ5LnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkp
OworICAgIH0KIAogICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgp
KSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYo
KTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE5MTYsNyArMTkxNiw3IEBACiAJCUZFNTMzQ0E1MUYyMTdEQjMwMDE2QTFG
RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9u
LmZyYW1ld29yayAqLzsgfTsKIAkJRkU1MzNDQTYxRjIxN0RCMzAwMTZBMUZFIC8qIEphdmFTY3Jp
cHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgKi87IH07CiAJCUZFNTMzQ0FEMUYyMTdFQTUwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTUzM0NBMDFG
MjE3QzMxMDAxNkExRkUgLyogdGVzdG1hc20uY3BwICovOyB9OwotCQlGRTU0REVGQjFFOEM2RDg4
MDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAvKiBEaXNhbGxv
d1ZNUmVlbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUZFNTRERUZCMUU4QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZBMUU4QzZE
NzIwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTU0REVGRjFFOEQ3NkZBMDBBODkyQzUgLyogRGlz
YWxsb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU1NERFRkUxRThENzQyODAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTU2MjhDRTFFOTk1MTMy
MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU2MjhDQzFFOTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRT
cGVjaWFsLmggKi87IH07CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkz
MkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTIwMSw4ICs1MjAxLDcgQEAKIAkJRkU1
MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTUzM0NBMDFGMjE3QzMxMDAxNkExRkUgLyogdGVz
dG1hc20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdG1hc20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTUzM0NBQzFGMjE3REI0MDAxNkExRkUgLyogdGVzdG1hc20gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3RtYXNtOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlGRTU0REVGQTFFOEM2RDcyMDBB
ODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzYWxsb3dWTVJlZW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RkU1NERFRkMxRThDNkRGRjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc2FsbG93Vk1SZWVudHJ5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERp
c2FsbG93Vk1FbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhbGxv
d1ZNRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1NERFRkUxRThENzQy
ODAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzYWxsb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU2
MjhDQjFFOTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclByaW50U3BlY2lhbC5jcHA7IHBhdGggPSBiMy9h
aXIvQWlyUHJpbnRTcGVjaWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1
NjI4Q0MxRTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJQcmludFNwZWNpYWwuaDsgcGF0aCA9IGIzL2Fpci9BaXJQ
cmludFNwZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNDMsOCArNzE0
Miw3IEBACiAJCQkJMTQzODZBNzIxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcCAqLywKIAkJCQkxNDM4NkE3MzFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4
ZWN1dGFibGUuaCAqLywKIAkJCQlGRTU0REVGRTFFOEQ3NDI4MDBBODkyQzUgLyogRGlzYWxsb3dT
Y29wZS5oICovLAotCQkJCUZFNTRERUZDMUU4QzZERkYwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVl
bnRyeS5jcHAgKi8sCi0JCQkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1S
ZWVudHJ5LmggKi8sCisJCQkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1F
bnRyeS5oICovLAogCQkJCUUzMTYxODEwMUVDNUZFMDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9u
LmggKi8sCiAJCQkJRTMxNjE4MTExRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRl
clNldHRlci5jcHAgKi8sCiAJCQkJRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJp
YnV0ZUdldHRlclNldHRlci5oICovLApAQCAtOTQ4Miw3ICs5NDgwLDcgQEAKIAkJCQkxNDM4NkE3
NTFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMzczMDhGMUMwQ0Q2ODUwMDA1MkJGQSAvKiBEaXNhbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTRERUZGMUU4RDc2RkEwMEE4OTJD
NSAvKiBEaXNhbGxvd1Njb3BlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTU0REVGQjFFOEM2RDg4
MDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNTRE
RUZCMUU4QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRjQyNzMxMTU4RUJENTQwMDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzMTYxODEzMUVDNUZFMTcwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzE2MTgxNTFFQzVGRTI3MDAwNkEyMTggLyogRE9NQXR0cmlidXRl
R2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0RlZmVyR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0RlZmVyR0MuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9EZWZlckdDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIExh
enlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhy
ZWFkOjpUcnVlPj4gRGlzYWxsb3dHQzo6c19zY29wZVJlZW50cnlDb3VudDsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCShyZXZpc2lvbiAyNjQ1NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDE2ICs3Nyw4IEBAIGNsYXNzIERpc2FsbG93R0MgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTwK
ICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKICAgICB0eXBlZGVmIERpc2FsbG93U2Nv
cGU8RGlzYWxsb3dHQz4gQmFzZTsKIHB1YmxpYzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZ
U19JTkxJTkUgRGlzYWxsb3dHQyhib29sID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQotCi0jZWxzZSAvLyBub3QgTkRFQlVHCi0KLSAg
ICBEaXNhbGxvd0dDKGJvb2wgZW5hYmxlZCA9IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVk
KQotICAgIHsgfQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgRGlzYWxsb3dHQygpID0gZGVmYXVs
dDsKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQogICAgIHsKQEAgLTEwNSw3ICs5Nywx
MCBAQCBwcml2YXRlOgogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6
VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7CiAKLSNlbmRpZiAvLyBOREVCVUcKKyNlbHNlCisg
ICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd0dDKCkgeyB9IC8vIFdlIG5lZWQgdGhpcyB0byBwbGFj
YXRlIENsYW5nIGR1ZSB0byB1bnVzZWQgd2FybmluZ3MuCisgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKICAgICAK
ICAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxvd0dDPjsKIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNu
YXBzaG90QnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw3ICs0MDksOCBAQCBTdHJp
bmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvCiAgICAgICAgICAgICAvLyAiT2Jq
ZWN0IiBpbiBzbmFwc2hvdHMgYW5kIG5vdCBnZXQgdGhlIG5hbWUgb2YgdGhlIHByb3RvdHlwZSdz
IHBhcmVudC4KICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChub2RlLmNl
bGwpOwogICAgICAgICAgICAgaWYgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBvYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSkpIHsKLSAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwor
ICAgICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAg
ICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGdsb2JhbE9iamVj
dCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3QpKQogICAgICAgICAgICAgICAg
ICAgICBjbGFzc05hbWUgPSBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3QpOwog
ICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjQ2LDE0ICs2NDYsMTkgQEAgSlNWYWx1ZSBKU0luamVjdGVk
U2NyaXB0SG9zdDo6cXVlcnlJbnN0YQogCiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBvYmplY3Q7
CiAKLSAgICBQcm9wZXJ0eVNsb3QgcHJvdG90eXBlU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIGlmIChvYmplY3QtPmdldFByb3Bl
cnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90
eXBlU2xvdCkpIHsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAg
ICAgICAgaWYgKHByb3RvdHlwZVNsb3QuaXNWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlU2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgICAgICAgICBpZiAocHJvdG90eXBlVmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IHByb3RvdHlwZVZh
bHVlOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CisgICAg
eworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAg
UHJvcGVydHlTbG90IHByb3RvdHlwZVNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgYm9vbCBm
b3VuZCA9IG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGVTbG90KTsKKyAgICAgICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKKyAgICAgICAgZGlzYWxsb3dWTUVudHJ5LnJlbGVhc2UoKTsKKyAgICAgICAg
aWYgKGZvdW5kKSB7CisgICAgICAgICAgICBpZiAocHJvdG90eXBlU2xvdC5pc1ZhbHVlKCkpIHsK
KyAgICAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlU2xvdC5n
ZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAg
ICAgICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvdG90eXBlID0gcHJvdG90eXBlVmFsdWU7CisgICAgICAgICAgICAgICAgICAg
IG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBD
YW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC04MjUsMTUgKzgyNSwxNSBAQCBmYWlsZWRKU09OUDoKICAgICAgICAgQVNTRVJUKGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgog
ICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBl
bnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRy
PEpJVENvZGU+IGppdENvZGUgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KKyAgICBS
ZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFt
ZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxDYWxsZWUsIHRoaXNPYmosIDEpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxv
d0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGlu
IEV4ZWN1dGFibGUuCisgICAgICAgIGppdENvZGUgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2Rl
KCk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbENhbGxlZSwgdGhpc09iaiwgMSk7CisgICAgfQogCiAgICAgLy8gRXhlY3V0ZSB0aGUg
Y29kZToKLSAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKICAgICBBU1NFUlQoaml0Q29kZSA9PSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkucHRy
KCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0Nh
bGxGcmFtZSk7CkBAIC04OTAsMjcgKzg5MCwyNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlQ2FsbChKU0dsb2JhCiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlu
bGluZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVu
c3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJs
ZS4KLQogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwotICAgIGlmIChpc0pTQ2FsbCkKLSAg
ICAgICAgaml0Q29kZSA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZUZvckNhbGwoKTsKLQogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwot
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHsKKyAgICAgICAg
RGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJl
cGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAgIGlmIChpc0pTQ2FsbCkKKyAg
ICAgICAgICAgIGppdENvZGUgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3JDYWxsKCk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJn
cy5kYXRhKCkpOworICAgIH0KIAogICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsKLSAgICAgICAg
Ly8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICAgICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAg
ICAgIGlmIChpc0pTQ2FsbCkgewotICAgICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgICAgICBBU1NFUlQoaml0Q29kZSA9PSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkucHRyKCkpOwotICAgICAgICAgICAgcmVzdWx0
ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZl
KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZy
YW1lKSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFs
dWUoKSk7Ci0gICAgICAgIH0KKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIGlmIChpc0pT
Q2FsbCkgeworICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgQVNTRVJUKGpp
dENvZGUgPT0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
Rm9yQ2FsbCgpLnB0cigpKTsKKyAgICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0s
ICZwcm90b0NhbGxGcmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gSlNWYWx1
ZTo6ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9p
bnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4ocmVzdWx0KTsKQEAgLTk3MiwyOCArOTY5LDI1IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5
c0JlSW5saW5lZCA9IGZhbHNlOwogICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsg
Ly8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVj
dXRhYmxlLgotCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7Ci0gICAgaWYgKGlzSlNDb25z
dHJ1Y3QpCi0gICAgICAgIGppdENvZGUgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpOwotCiAgICAgUHJvdG9DYWxsRnJh
bWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50LCBhcmdzLmRh
dGEoKSk7CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBu
byBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAg
ICAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpCisgICAgICAgICAgICBqaXRDb2RlID0gY29uc3RydWN0
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3Qo
KTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVj
dCwgY29uc3RydWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAg
fQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewotICAgICAgICAvLyBFeGVjdXRlIHRoZSBj
b2RlLgotICAgICAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKLSAgICAgICAgaWYgKGlzSlNDb25z
dHJ1Y3QpIHsKLSAgICAgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNvbnN0cnVjdERhdGEuanMu
ZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkucHRyKCkp
OwotICAgICAgICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxG
cmFtZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpk
ZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1Bv
aW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2Rl
LgorICAgIGlmIChpc0pTQ29uc3RydWN0KSB7CisgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNv
bnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29u
c3RydWN0KCkucHRyKCkpOworICAgICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwg
JnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBKU1ZhbHVl
OjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJh
d1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKIAotICAgICAgICAgICAgaWYgKExJ
S0VMWSghdGhyb3dTY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmlzT2JqZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChMSUtFTFko
IXRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0LmlzT2JqZWN0KCkpOwogICAgIH0KIAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgbnVsbHB0cik7CkBAIC0xMTAwLDE5ICsxMDk0LDI0IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIC8vIFdlIGNhbid0IGRlY2xhcmUgYSAidmFy
Ii8iZnVuY3Rpb24iIHRoYXQgb3ZlcndyaXRlcyBhIGdsb2JhbCAibGV0Ii8iY29uc3QiLyJjbGFz
cyIgaW4gYSBzbG9wcHktbW9kZSBldmFsLgogICAgIGlmICh2YXJpYWJsZU9iamVjdC0+aXNHbG9i
YWxPYmplY3QoKSAmJiAhZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSAmJiAobnVtVmFyaWFibGVz
IHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeSh2bSk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YXJp
YWJsZU9iamVjdCktPmdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50ID0gdW5saW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlKGkpOwotICAg
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAgIGlm
IChKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExl
eGljYWxFbnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7Cisg
ICAgICAgICAgICBib29sIGZvdW5kID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93
blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHNsb3QpOworICAgICAgICAgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4odGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBtYWtlU3RyaW5n
KCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3Ry
aW5nKGlkZW50LmltcGwoKSksICInIikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7
ICsraSkgewogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVC
bG9jay0+ZnVuY3Rpb25EZWNsKGkpOwotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAgIGlmIChKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6
Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbi0+bmFtZSgpLCBzbG90KSkgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIGJvb2wgZm91
bmQgID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24tPm5hbWUoKSwgc2xv
dCk7CisgICAgICAgICAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAg
ICAgICBpZiAoZm91bmQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0
IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoZnVu
Y3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTExOTMsMTUgKzExOTIsMTUgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFs
RXhlY3V0YQogICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7
IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAgICAgfQogCi0gICAgRGlzYWxsb3dHQyBkaXNh
bGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2Nr
IGluIEV4ZWN1dGFibGUuCi0KLSAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSA9IGV2YWwtPmdl
bmVyYXRlZEpJVENvZGUoKTsKLQorICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIFBy
b3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwgdGhpc1ZhbHVlLCAxKTsKKyAgICB7CisgICAg
ICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNh
biByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgorICAgICAgICBqaXRDb2RlID0gZXZh
bC0+Z2VuZXJhdGVkSklUQ29kZSgpOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIHRoaXNWYWx1ZSwgMSk7CisgICAgfQogCiAgICAg
Ly8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKICAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0Q29kZSA9PSBldmFsLT5nZW5lcmF0ZWRK
SVRDb2RlKCkucHRyKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgm
dm0sICZwcm90b0NhbGxGcmFtZSk7CkBAIC0xMjUxLDE4ICsxMjUwLDE4IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmEKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0K
IAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdD
IGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENv
ZGU+IGppdENvZGUgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KLSAgICAvLyBU
aGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgotICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUt
ZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZwotICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQt
cmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAg
IFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQo
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwganNVbmRlZmluZWQoKSwgMSk7CisgICAg
eworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5z
LiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaml0Q29k
ZSA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKTsKKyAgICAgICAgLy8gVGhlIHx0aGlz
fCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KKyAgICAgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZp
cm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCisgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQt
cmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpzVW5kZWZpbmVkKCksIDEpOworICAgIH0KIAog
ICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7CiAgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENvZGUgPT0gZXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGppdENvZGUt
PmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjcsMTQgKzE2NywxNiBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeSh2bSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKwogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBp
ZGVudGlmaWVyLnVpZCgpKTsKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKIAog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAg
ICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7CkBAIC0x
ODQsMTMgKzE4NiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRy
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRw
dHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCiAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAg
IGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKQEAgLTE5
OSwxNCArMjAzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIERpc2FsbG93Vk1FbnRy
eSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZp
ZXIudWlkKCkpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOwogCiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3Qs
IGlkZW50LCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMxLDEyICs2MzEsMTQg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlbwogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wVHJ5R2V0QnlJZD4oKTsKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOwot
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJv
cGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOworICAgIHRocm93U2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0UHVyZVJlc3Vs
dCgpOwogCiAgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CkBAIC0xMDkzLDcgKzEw
OTUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhCiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUo
KSk7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsK
ICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eSwgc2xvdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKQEAgLTIzMTYs
NiArMjMxOCwxMiBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfd3JpdGVfYmFycmllcl9zbG93CiAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY2VsbCk7CiB9CiAKK2V4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIGxsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24oVk0qIHZtLCBQcm90b0Nh
bGxGcmFtZSopCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIXZtLT5kaXNhbGxvd1ZNRW50cnlDb3Vu
dCk7IC8vIEN1cnJlbnRseSwgdGhpcyBzaG91bGQgYWx3YXlzIGNyYXNoLgorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3Zh
bHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3Zh
bHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTQ3LDYgKzE0Nyw3IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF8K
ICNpZiBFTkFCTEUoQ19MT09QKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
c3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKICNl
bmRpZgorZXh0ZXJuICJDIiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIFNsb3dQYXRoUmV0dXJuVHlw
ZSBsbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBX
VEZfSU5URVJOQUw7CiBleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGlu
dF9jcmFzaCgpIFdURl9JTlRFUk5BTDsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzAs
NiArMTcwLDkgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgICMgU2luY2Ugd2UgaGF2
ZSB0aGUgZ3VhcmFudGVlIHRoYXQgdFggIT0gYVkgd2hlbiBYICE9IFksIHdlIGFyZSBzYWZlIGZy
b20KICAgICAjIGFsaWFzaW5nIHByb2JsZW1zIHdpdGggb3VyIGFyZ3VtZW50cy4KIAorICAgIGxv
YWRpIFZNOjpkaXNhbGxvd1ZNRW50cnlDb3VudFt2bV0sIHQ0CisgICAgYnRpbnogdDQsIC5jaGVj
a1ZNRW50cnlQZXJtaXNzaW9uCisKICAgICBpZiBBUk12NwogICAgICAgICB2bUVudHJ5UmVjb3Jk
KGNmciwgdDMpCiAgICAgICAgIG1vdmUgdDMsIHNwCkBAIC0zMTksNiArMzIyLDEzIEBAIG1hY3Jv
IGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICBwb3BDYWxsZWVTYXZlcygpCiAgICAgZnVuY3Rpb25F
cGlsb2d1ZSgpCiAgICAgcmV0CisKKy5jaGVja1ZNRW50cnlQZXJtaXNzaW9uOgorICAgICMgV2Ug
Z2V0IGhlcmUgYmVjYXVzZSB2bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQgaXMgbm9uLXplcm8uIEN1
cnJlbnRseSwgdGhpcworICAgICMgYWx3YXlzIG1lYW5zIHdlIHdpbGwgY3Jhc2guCisgICAgbW92
ZSBhMCwgdm0KKyAgICBtb3ZlIGExLCBwcm90b0NhbGxGcmFtZQorICAgIGNDYWxsMihfbGxpbnRf
Y2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbikKIGVuZAogCiAjIGEwLCBhMiwgdDMsIHQ0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsx
NjYsOSBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRl
ckFsaWdubWVudCh0NCwgMHhiYWQwZGMwMSkKIAorICAgIGxvYWRpIFZNOjpkaXNhbGxvd1ZNRW50
cnlDb3VudFt2bV0sIHQ0CisgICAgYnRpbnogdDQsIC5jaGVja1ZNRW50cnlQZXJtaXNzaW9uCisK
ICAgICBzdG9yZXAgdm0sIFZNRW50cnlSZWNvcmQ6Om1fdm1bc3BdCiAgICAgbG9hZHAgVk06OnRv
cENhbGxGcmFtZVt2bV0sIHQ0CiAgICAgc3RvcmVwIHQ0LCBWTUVudHJ5UmVjb3JkOjptX3ByZXZU
b3BDYWxsRnJhbWVbc3BdCkBAIC0yODQsNiArMjg3LDEzIEBAIG1hY3JvIGRvVk1FbnRyeShtYWtl
Q2FsbCkKICAgICBwb3BDYWxsZWVTYXZlcygpCiAgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAg
cmV0CisKKy5jaGVja1ZNRW50cnlQZXJtaXNzaW9uOgorICAgICMgV2UgZ2V0IGhlcmUgYmVjYXVz
ZSB2bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQgaXMgbm9uLXplcm8uIEN1cnJlbnRseSwgdGhpcwor
ICAgICMgYWx3YXlzIG1lYW5zIHdlIHdpbGwgY3Jhc2guCisgICAgbW92ZSBhMCwgdm0KKyAgICBt
b3ZlIGExLCBwcm90b0NhbGxGcmFtZQorICAgIGNDYWxsMihfbGxpbnRfY2hlY2tfdm1fZW50cnlf
cGVybWlzc2lvbikKIGVuZAogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Rpc2FsbG93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXNhbGxvd1Njb3BlLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDI3
ICszNSwxOCBAQCBjbGFzcyBEaXNhbGxvd1Njb3BlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEaXNhbGxvd1Njb3BlKTsKICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKIHB1Ymxp
YzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dTY29wZShib29s
ID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgfkRpc2FsbG93U2NvcGUoKSB7IH0KLSAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSB7
IHJldHVybiBmYWxzZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlbmFibGUoKSB7IH0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlzYWJsZSgpIHsgfQotCi0jZWxzZSAvLyBub3QgTkRFQlVH
Ci0KLSAgICBEaXNhbGxvd1Njb3BlKGJvb2wgZW5hYmxlZCA9IHRydWUpCisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBEaXNhbGxvd1Njb3BlKCkKICAgICB7Ci0gICAgICAgIG1faXNFbmFibGVkID0g
ZW5hYmxlZDsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkKQotICAgICAgICAgICAgZW50ZXJTY29w
ZSgpOworICAgICAgICBhdXRvIGNvdW50ID0gVDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKKyAgICAg
ICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoKytjb3VudCk7CiAgICAgfQogCiAgICAgfkRpc2Fs
bG93U2NvcGUoKQogICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkKQotICAgICAgICAgICAg
ZXhpdFNjb3BlKCk7CisgICAgICAgIGF1dG8gY291bnQgPSBUOjpzY29wZVJlZW50cnlDb3VudCgp
OworICAgICAgICBBU1NFUlQoY291bnQpOworICAgICAgICBUOjpzZXRTY29wZVJlZW50cnlDb3Vu
dCgtLWNvdW50KTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0luRWZmZWN0T25DdXJyZW50
VGhyZWFkKCkKQEAgLTYzLDM0ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhIVQ6
OnNjb3BlUmVlbnRyeUNvdW50KCk7CiAgICAgfQogCi0gICAgdm9pZCBlbmFibGUoKQotICAgIHsK
LSAgICAgICAgbV9pc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICBlbnRlclNjb3BlKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBkaXNhYmxlKCkKLSAgICB7Ci0gICAgICAgIG1faXNFbmFibGVkID0gZmFs
c2U7Ci0gICAgICAgIGV4aXRTY29wZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGVu
dGVyU2NvcGUoKQotICAgIHsKLSAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRyeUNv
dW50KCk7Ci0gICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50KCsrY291bnQpOwotICAgIH0K
LQotICAgIHZvaWQgZXhpdFNjb3BlKCkKLSAgICB7Ci0gICAgICAgIGF1dG8gY291bnQgPSBUOjpz
Y29wZVJlZW50cnlDb3VudCgpOwotICAgICAgICBBU1NFUlQoY291bnQpOwotICAgICAgICBUOjpz
ZXRTY29wZVJlZW50cnlDb3VudCgtLWNvdW50KTsKLSAgICB9Ci0KLSAgICBib29sIG1faXNFbmFi
bGVkOwotI2VuZGlmIC8vIE5ERUJVRworI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVECisgICAg
QUxXQVlTX0lOTElORSBEaXNhbGxvd1Njb3BlKCkgeyB9IC8vIFdlIG5lZWQgdGhpcyB0byBwbGFj
YXRlIENsYW5nIGR1ZSB0byB1bnVzZWQgd2FybmluZ3MuCisgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgYm9vbCBpc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAkocmV2
aXNpb24gMjY0NTc0KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxv
d1ZNUmVlbnRyeS5oOjI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
c2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkRpc2FsbG93U2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIERpc2FsbG93Vk1SZWVudHJ5IDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJl
ZW50cnk+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7Cisg
ICAgdHlwZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOworcHVibGlj
OgorI2lmZGVmIE5ERUJVRworCisgICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRyeShi
b29sID0gZmFsc2UpIHsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZSgpIHsgfQorCisjZWxzZSAvLyBub3QgTkRFQlVHCisKKyAgICBEaXNhbGxvd1ZNUmVlbnRyeShi
b29sIGVuYWJsZWQgPSB0cnVlKQorICAgICAgICA6IEJhc2UoZW5hYmxlZCkKKyAgICB7IH0KKwor
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQorICAgIHsKKyAgICAgICAgc19zY29wZVJlZW50
cnlDb3VudC5jb25zdHJ1Y3QoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHVuc2ln
bmVkIHNjb3BlUmVlbnRyeUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiAqc19zY29wZVJl
ZW50cnlDb3VudC5nZXQoKTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQgc2V0U2NvcGVSZWVudHJ5
Q291bnQodW5zaWduZWQgdmFsdWUpCisgICAgeworICAgICAgICAqc19zY29wZVJlZW50cnlDb3Vu
dC5nZXQoKSA9IHZhbHVlOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1Ro
cmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7CisKKyNlbmRpZiAvLyBOREVCVUcKKwor
ICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlzYWxsb3dWTUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDQ3
ICsyNSw0MiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRpc2FsbG93U2NvcGUuaCIK
LSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3Bl
Y2lmaWMuaD4KLQogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIERpc2FsbG93Vk1SZWVudHJ5IDog
cHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7Ci0gICAgdHlwZWRlZiBEaXNhbGxvd1Njb3Bl
PERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOwotcHVibGljOgotI2lmZGVmIE5ERUJVRwotCi0gICAg
QUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRyeShib29sID0gZmFsc2UpIHsgfQotICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQorY2xhc3MgVk07CiAKLSNl
bHNlIC8vIG5vdCBOREVCVUcKLQotICAgIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgZW5hYmxlZCA9
IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVkKQotICAgIHsgfQotCi0gICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZSgpCisvLyBUaGUgb25seSByZWFzb24gd2UgaW1wbGVtZW50IERpc2FsbG93
Vk1FbnRyeSBhcyBzcGVjaWFsaXphdGlvbiBvZiBhIHRlbXBsYXRlCisvLyBpcyBzbyB0aGF0IHdl
IGNhbiB3b3JrIGFyb3VuZCBoYXZpbmcgdG8gI2luY2x1ZGUgVk0uaCwgd2hpY2ggY2FuIGh1cnQg
YnVpbGQKKy8vIHRpbWUuIFRoaXMgZGVmZXJzIHRoZSBjb3N0IG9mICNpbmNsdWRlJ2luZyBWTS5o
IHRvIG9ubHkgdGhlIGNsaWVudHMgdGhhdAorLy8gbmVlZCBpdC4KKwordGVtcGxhdGU8Y2xhc3Mg
Vk1UeXBlID0gVk0+CitjbGFzcyBEaXNhbGxvd1ZNRW50cnlJbXBsIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEaXNhbGxvd1ZNRW50cnlJbXBsKTsKK3B1YmxpYzoKKyAgICBEaXNhbGxvd1ZN
RW50cnlJbXBsKFZNVHlwZSYgdm0pCisgICAgICAgIDogbV92bSgmdm0pCiAgICAgewotICAgICAg
ICBzX3Njb3BlUmVlbnRyeUNvdW50LmNvbnN0cnVjdCgpOworICAgICAgICBtX3ZtLT5kaXNhbGxv
d1ZNRW50cnlDb3VudCsrOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBzdGF0aWMgdW5zaWduZWQg
c2NvcGVSZWVudHJ5Q291bnQoKQorICAgIH5EaXNhbGxvd1ZNRW50cnlJbXBsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAqc19zY29wZVJlZW50cnlDb3VudC5nZXQoKTsKKyAgICAgICAgaWYgKG1f
dm0pCisgICAgICAgICAgICByZWxlYXNlKCk7CiAgICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFNj
b3BlUmVlbnRyeUNvdW50KHVuc2lnbmVkIHZhbHVlKQorCisgICAgdm9pZCByZWxlYXNlKCkKICAg
ICB7Ci0gICAgICAgICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgpID0gdmFsdWU7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50KTsKKyAgICAgICAgbV92
bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQtLTsKKyAgICAgICAgbV92bSA9IG51bGxwdHI7CiAgICAg
fQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxUaHJl
YWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpUcnVlPj4gc19zY29wZVJl
ZW50cnlDb3VudDsKLQotI2VuZGlmIC8vIE5ERUJVRwotCi0gICAgZnJpZW5kIGNsYXNzIERpc2Fs
bG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+OworcHJpdmF0ZToKKyAgICBWTVR5cGUqIG1fdm07
CiB9OwogCit1c2luZyBEaXNhbGxvd1ZNRW50cnkgPSBEaXNhbGxvd1ZNRW50cnlJbXBsPFZNPjsK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRpc2FsbG93Vk1SZWVudHJ5LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotICAg
IAotI2lmbmRlZiBOREVCVUcKLUxhenlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNp
Z25lZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpUcnVlPj4gRGlzYWxsb3dWTVJlZW50cnk6OnNfc2Nv
cGVSZWVudHJ5Q291bnQ7Ci0jZW5kaWYKLSAgICAKLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5o
CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNh
bGxvd1ZNUmVlbnRyeS5oCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiRGlzYWxsb3dTY29wZS5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgot
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xh
c3MgRGlzYWxsb3dWTVJlZW50cnkgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVl
bnRyeT4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93Vk1SZWVudHJ5KTsKLSAg
ICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IEJhc2U7Ci1wdWJsaWM6
Ci0jaWZkZWYgTkRFQlVHCi0KLSAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93Vk1SZWVudHJ5KGJv
b2wgPSBmYWxzZSkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KCkgeyB9Ci0KLSNlbHNlIC8vIG5vdCBOREVCVUcKLQotICAgIERpc2FsbG93Vk1SZWVudHJ5KGJv
b2wgZW5hYmxlZCA9IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVkKQotICAgIHsgfQotCi0g
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpCi0gICAgewotICAgICAgICBzX3Njb3BlUmVlbnRy
eUNvdW50LmNvbnN0cnVjdCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgdW5zaWdu
ZWQgc2NvcGVSZWVudHJ5Q291bnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICpzX3Njb3BlUmVl
bnRyeUNvdW50LmdldCgpOwotICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTY29wZVJlZW50cnlD
b3VudCh1bnNpZ25lZCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgICpzX3Njb3BlUmVlbnRyeUNvdW50
LmdldCgpID0gdmFsdWU7Ci0gICAgfQotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhy
ZWFkOjpUcnVlPj4gc19zY29wZVJlZW50cnlDb3VudDsKLQotI2VuZGlmIC8vIE5ERUJVRwotCi0g
ICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw3ICsxMzksOCBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcoCiAK
ICAgICBKU1ZhbHVlIG5hbWVWYWx1ZTsKICAgICBhdXRvIG5hbWVQcm9wZXJ0TmFtZSA9IHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWU7Ci0gICAgUHJvcGVydHlTbG90IG5hbWVTbG90KHRoaXMsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIERpc2FsbG93Vk1F
bnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3BlcnR5U2xvdCBuYW1lU2xvdCh0aGlz
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dW
TUVudHJ5KTsKIAogICAgIEpTVmFsdWUgY3VycmVudE9iaiA9IHRoaXM7CiAgICAgdW5zaWduZWQg
cHJvdG90eXBlRGVwdGggPSAwOwpAQCAtMTY3LDcgKzE2OCw3IEBAIFN0cmluZyBFcnJvckluc3Rh
bmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIAogICAgIEpTVmFsdWUgbWVzc2FnZVZhbHVlOwogICAg
IGF1dG8gbWVzc2FnZVByb3BlcnROYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+bWVzc2FnZTsKLSAg
ICBQcm9wZXJ0eVNsb3QgbWVzc2FnZVNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IG1lc3NhZ2VTbG90KHRoaXMs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpOwogICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGdsb2Jh
bE9iamVjdCwgbWVzc2FnZVByb3BlcnROYW1lLCBtZXNzYWdlU2xvdCkgJiYgbWVzc2FnZVNsb3Qu
aXNWYWx1ZSgpKQogICAgICAgICBtZXNzYWdlVmFsdWUgPSBtZXNzYWdlU2xvdC5nZXRWYWx1ZShn
bG9iYWxPYmplY3QsIG1lc3NhZ2VQcm9wZXJ0TmFtZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluaXRp
YWxpemVUaHJlYWRpbmcuaCIKIAotI2luY2x1ZGUgIkRpc2FsbG93Vk1SZWVudHJ5LmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2lu
Y2x1ZGUgIkpTQ1B0clRhZy5oIgpAQCAtNzgsMTAgKzc3LDggQEAgdm9pZCBpbml0aWFsaXplKCkK
ICAgICAgICAgICAgIGVuYWJsZVNpZ2lsbENyYXNoQW5hbHl6ZXIoKTsKIAogICAgICAgICBMTElu
dDo6aW5pdGlhbGl6ZSgpOwotI2lmbmRlZiBOREVCVUcKICAgICAgICAgRGlzYWxsb3dHQzo6aW5p
dGlhbGl6ZSgpOwotICAgICAgICBEaXNhbGxvd1ZNUmVlbnRyeTo6aW5pdGlhbGl6ZSgpOwotI2Vu
ZGlmCisKICAgICAgICAgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwogICAgICAgICBUaHJlYWQm
IHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICB0aHJlYWQuc2V0U2F2ZWRMYXN0
U3RhY2tUb3AodGhyZWFkLnN0YWNrKCkub3JpZ2luKCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFr
b3YgKGFwQG55cG9wLmNvbSkKICAqCkBAIC05Niw4ICs5Niw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNyZWF0ZVdp
dGhCdXR0ZXJmbHkodm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwog
Ci0gICAgY29uc3QgYm9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBzY29wZS5u
b3RpZnlBbGxvY2F0ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVkKTsKKyAgICBzY29wZS5u
b3RpZnlBbGxvY2F0ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHly
aWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUwOCw5ICs1MDgsMTAgQEAgdm9pZCBKU0Z1
bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TgogICAgIGlmIChtb2RlLmluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkgewogICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFz
IGJlZW4gcmVpZmllZC4KLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAg
ICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzbG90KTsKLSAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwogCiAgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRh
YmxlKCktPmhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKSkgewogICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyk7CkBAIC01
NjMsOSArNTY0LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG8K
ICAgICAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwogICAgICAgICAvLyBNYWtlIHN1cmUgcHJv
dG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3Jp
dHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIg
OC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRy
eSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IGdldFNsb3Qo
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0U2xvdCk7CisgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgICAgICB9CiAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNP
YmplY3QtPnJhcmVEYXRhKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRv
IHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpAQCAtNjQyLDkgKzY0NiwxMiBAQCBib29sIEpTRnVuY3Rp
b246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlw
ZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNoIHRoYXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0ZW4K
ICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIu
OS4KLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dW
TUVudHJ5KHZtKTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOworICAgICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgfQogICAgICAg
ICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSgp
KQogICAgICAgICAgICAgcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVy
dHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTYsOSArMTU2LDExIEBAIGlubGluZSBK
U09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAvLyBUaGlzIGdldFByb3BlcnR5U2xvdCBvcGVyYXRpb24gc2hvdWxkIG5vdCBiZSBvYnNl
cnZlZCBieSB0aGUgUHJveHkuCiAgICAgICAgICAgICAvLyBTbyB3ZSB1c2UgVk1JbnF1aXJ5LiBB
bmQgcHVyZ2UgdGhlIG9wYXF1ZSBvYmplY3QgY2FzZXMgKHByb3h5IGFuZCBuYW1lc3BhY2Ugb2Jq
ZWN0KSBieSBpc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpIGd1YXJkLgotICAgICAgICAgICAgUHJv
cGVydHlTbG90IGxlbmd0aFNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IGxlbmd0aFNsb3Qob2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVu
dHJ5KTsKICAgICAgICAgICAgIG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBsZW5ndGhTbG90KTsKLSAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5yZWxlYXNlKCk7CiAK
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDU3NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAxLDcgKzUwMSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldEds
b2JhbFRoaXMoVk0mIHYKIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGdldEdldHRlckJ5SWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQogewogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZShiYXNlKTsKLSAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkoZ2xv
YmFsT2JqZWN0LT52bSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OwogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xv
dCk7CiAgICAgcmV0dXJuIGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihzbG90LmdldFB1cmVSZXN1bHQo
KSk7CiB9CkBAIC0xMzgzLDEwICsxMzg0LDEzIEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEoKIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKIHsKICAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KG9iamVjdCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAg
Ly8gc2lsZW50bHkgaWdub3JlIGF0dGVtcHRzIHRvIGFkZCBhY2Nlc3NvcnMgYWxpYXNpbmcgdmFy
cy4KLSAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHN5bWJvbFRh
YmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodGhp
c09iamVjdC0+dm0oKSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOworICAgICAgICAvLyBzaWxlbnRseSBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIGFjY2Vzc29y
cyBhbGlhc2luZyB2YXJzLgorICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3Jp
cHRvcigpICYmIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJldHVybiBCYXNlOjpkZWZp
bmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCkBAIC0yMDUyLDcgKzIwNTYsOCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjCiAgICAgICAgIG1fYXJyYXlTcGVjaWVz
V2F0Y2hwb2ludFNldC5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJXYXMgbm90IGFi
bGUgdG8gc2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKSk7CiAgICAgfTsKIAotICAg
IFByb3BlcnR5U2xvdCBjb25zdHJ1Y3RvclNsb3QoYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIERpc2FsbG93Vk1FbnRyeSBk
aXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3BlcnR5U2xvdCBjb25zdHJ1Y3RvclNsb3QoYXJy
YXlQcm90b3R5cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZkaXNhbGxvd1ZNRW50cnkpOwogICAgIGFycmF5UHJvdG90eXBlLT5nZXRPd25Qcm9wZXJ0eVNs
b3QoYXJyYXlQcm90b3R5cGUsIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYg
KGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFycmF5UHJvdG90eXBlCkBAIC0yMDY2LDcg
KzIwNzEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjCiAgICAg
aWYgKGNvbnN0cnVjdG9yU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgY29uc3Ry
dWN0b3JTdHJ1Y3R1cmUgPSBjb25zdHJ1Y3RvclN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlT
dHJ1Y3R1cmUodm0sIGFycmF5Q29uc3RydWN0b3IpOwogCi0gICAgUHJvcGVydHlTbG90IHNwZWNp
ZXNTbG90KGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzcGVjaWVzU2xvdChhcnJheUNvbnN0cnVj
dG9yLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxs
b3dWTUVudHJ5KTsKICAgICBhcnJheUNvbnN0cnVjdG9yLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJy
YXlDb25zdHJ1Y3RvciwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3Bl
Y2llc1Nsb3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKHNwZWNp
ZXNTbG90LnNsb3RCYXNlKCkgIT0gYXJyYXlDb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVs
IChlcmljQHdlYmtpdC5vcmcpCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTUzNCw5ICs1MzQsMTEgQEAgU3Ry
aW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTTwogCiAgICAgLy8gQ2hlY2sgZm9y
IGEgZGlzcGxheSBuYW1lIG9mIG9iai5jb25zdHJ1Y3Rvci4KICAgICAvLyBUaGlzIGlzIHVzZWZ1
bCB0byBnZXQgYEZvb2AgZm9yIHRoZSBgKGNsYXNzIEZvbykucHJvdG90eXBlYCBvYmplY3QuCi0g
ICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICBpZiAob2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzbG90KSkg
ewotICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
b2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlz
YWxsb3dWTUVudHJ5KTsKKyAgICBib29sIGZvdW5kID0gb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBz
bG90KTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIGlmIChmb3VuZCkgewog
ICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCog
Y3Rvck9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgc2xvdC5nZXRWYWx1ZShn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoSlNGdW5jdGlvbiogY29uc3RydWN0b3JGdW5jdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KHZtLCBjdG9yT2JqZWN0KSkKQEAgLTU1OCw5ICs1NjAsMTAgQEAgU3Ry
aW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTTwogICAgICAgICAgICAgSlNWYWx1
ZSBwcm90b1ZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICAg
ICAgaWYgKHByb3RvVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgICAgIEpTT2JqZWN0
KiBwcm90b09iamVjdCA9IGFzT2JqZWN0KHByb3RvVmFsdWUpOwotICAgICAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHByb3RvVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwotICAgICAgICAgICAgICAgIGlmIChwcm90b09iamVjdC0+Z2V0UHJv
cGVydHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNs
b3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChwcm90b1ZhbHVlLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVu
dHJ5KTsKKyAgICAgICAgICAgICAgICBib29sIGZvdW5kID0gcHJvdG9PYmplY3QtPmdldFByb3Bl
cnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzbG90
KTsKKyAgICAgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICAg
ICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1ZhbHVl
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKU09iamVjdCogY3Rvck9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoSlNGdW5jdGlvbiogY29uc3RydWN0b3JGdW5jdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KHZtLCBjdG9yT2JqZWN0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyNjQ1NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTg0LDYgKzU4NCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6
Z2V0UHJpdmF0ZUYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNldCk7CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NF
UlQodmFsdWUpOwogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgewogICAgICAgICBKU0NlbGwqIGNl
bGwgPSB2YWx1ZS5hc0NlbGwoKTsKQEAgLTU5NCw2ICs1OTUsNyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OmdldFByaXZhdGVGCiAgICAgICAgIC8vIGFzIGluIEpTT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5U2xvdCgpCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzUKICAgICB9CisjZW5kaWYKIAogICAgIHNsb3Quc2V0
VmFsdWUob2JqZWN0LCBhdHRyaWJ1dGVzLCB2YWx1ZSwgb2Zmc2V0KTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTYwNCw2ICs2MDYsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZp
ZWxkKEpTCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKCFKU09iamVjdDo6Z2V0UHJpdmF0
ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAg
ICAgICAgQVNTRVJUKHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9i
amVjdCkpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZhbHNlKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNTIsOCArMTUyLDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBh
YnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OwogICAgICAgICBib29sIGhhc093blByb3BlcnR5ID0gZ2xvYmFsT2JqZWN0LT5nZXRPd25Qcm9w
ZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKKyAgICAg
ICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICBkaXNhbGxvd1ZNRW50
cnkucmVsZWFzZSgpOwogICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KSB7CiAgICAgICAgICAg
ICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShVbnJlc29sdmVkUHJvcGVydHksIG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCShyZXZpc2lvbiAy
NjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXph
dGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCwxMCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAorCiBPYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkK
ICAgICA6IG1fdm0odm0pCi0gICAgLCBtX2Rpc2FsbG93R0MoZmFsc2UpCi0gICAgLCBtX2Rpc2Fs
bG93Vk1SZWVudHJ5KGZhbHNlKQogewogfQogCkBAIC01MCwyMSArNDksMjAgQEAgT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYQogICAgIHZlcmlmeVByb3BlcnRpZXNBcmVJ
bml0aWFsaXplZChtX29iamVjdCk7CiB9CiAKLXZvaWQgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZTo6bm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiBvYmplY3QsIGJvb2wgd2FzQ3JlYXRlZFVuaW5p
dGlhbGl6ZWQpCit2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRl
ZChKU09iamVjdCogb2JqZWN0KQogewotICAgIGlmICh3YXNDcmVhdGVkVW5pbml0aWFsaXplZCkg
ewotICAgICAgICBtX2Rpc2FsbG93R0MuZW5hYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJl
ZW50cnkuZW5hYmxlKCk7Ci0gICAgICAgIG1fb2JqZWN0ID0gb2JqZWN0OwotICAgIH0gZWxzZQot
ICAgICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKKyAgICBBU1NF
UlQoIW1fZGlzYWxsb3dHQyk7CisgICAgQVNTRVJUKCFtX2Rpc2FsbG93Vk1FbnRyeSk7CisgICAg
bV9kaXNhbGxvd0dDLmVtcGxhY2UoKTsKKyAgICBtX2Rpc2FsbG93Vk1FbnRyeS5lbXBsYWNlKG1f
dm0pOworICAgIG1fb2JqZWN0ID0gb2JqZWN0OwogfQogCiB2b2lkIE9iamVjdEluaXRpYWxpemF0
aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYg
KG1fb2JqZWN0KSB7Ci0gICAgICAgIG1fZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAgICAgIG1f
ZGlzYWxsb3dWTVJlZW50cnkuZGlzYWJsZSgpOworICAgICAgICBtX2Rpc2FsbG93R0MucmVzZXQo
KTsKKyAgICAgICAgbV9kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgbV9vYmplY3Qg
PSBudWxscHRyOwogICAgIH0KICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2Jq
ZWN0KTsKQEAgLTExNCw2ICsxMTIsNyBAQCB2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6
OnZlcmlmeVByCiAgICAgICAgIH0KICAgICB9CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAko
cmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNTQgKzI2LDU1IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRlZmVyR0MuaCIKLSNpbmNsdWRlICJEaXNhbGxv
d1ZNUmVlbnRyeS5oIgorI2luY2x1ZGUgIkRpc2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUgIlZN
LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBWTTsKIGNsYXNzIEpTT2JqZWN0OwogCi0jaWZkZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJM
RUQKIAogY2xhc3MgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSB7CiBwdWJsaWM6Ci0gICAgQUxX
QVlTX0lOTElORSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKLSAgICAgICAgOiBt
X3ZtKHZtKQotICAgIHsgfQotICAgIEFMV0FZU19JTkxJTkUgfk9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUoKQotICAgIHsKLSAgICAgICAgbV92bS5oZWFwLm11dGF0b3JGZW5jZSgpOwotICAgIH0K
KyAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKIAotICAg
IEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqLCBib29sKSB7IH0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBW
TSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CisgICAgdm9pZCBub3RpZnlBbGxvY2F0ZWQo
SlNPYmplY3QqKTsKKyAgICB2b2lkIG5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0Kik7CiAKIHBy
aXZhdGU6CisgICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQoSlNPYmplY3Qq
KTsKKwogICAgIFZNJiBtX3ZtOworICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlzYWxsb3dH
QzsKKyAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IG1fZGlzYWxsb3dWTUVudHJ5OworICAg
IEpTT2JqZWN0KiBtX29iamVjdCB7IG51bGxwdHIgfTsKIH07CiAKLSNlbHNlIC8vIG5vdCBOREVC
VUcKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogCiBjbGFzcyBPYmplY3RJbml0aWFsaXph
dGlvblNjb3BlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlKFZNJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUoKTsKKyAgICBBTFdBWVNfSU5MSU5FIE9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisgICAgeyB9CisgICAgQUxXQVlTX0lOTElO
RSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSgpCisgICAgeworICAgICAgICBtX3ZtLmhlYXAu
bXV0YXRvckZlbmNlKCk7CisgICAgfQogCi0gICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92
bTsgfQotICAgIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiwgYm9vbCB3YXNDcmVhdGVk
VW5pbml0aWFsaXplZCk7Ci0gICAgdm9pZCBub3RpZnlJbml0aWFsaXplZChKU09iamVjdCopOwor
ICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KIAogcHJpdmF0
ZToKLSAgICB2b2lkIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChKU09iamVjdCopOwot
CiAgICAgVk0mIG1fdm07Ci0gICAgRGlzYWxsb3dHQyBtX2Rpc2FsbG93R0M7Ci0gICAgRGlzYWxs
b3dWTVJlZW50cnkgbV9kaXNhbGxvd1ZNUmVlbnRyeTsKLSAgICBKU09iamVjdCogbV9vYmplY3Qg
eyBudWxscHRyIH07CiB9OwogCi0jZW5kaWYgLy8gTkRFQlVHCisjZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNiArMjEs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01Bbm5vdGF0aW9uLmgiCisjaW5jbHVk
ZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiR2V0Vk0uaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCkBAIC0xMTIsMTAgKzExMywxMSBA
QCBwdWJsaWM6CiAgICAgICAgIE1vZHVsZU5hbWVzcGFjZSwgLy8gTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0J3MgZW52aXJvbm1lbnQgYWNjZXNzLgogICAgIH07CiAKLSAgICBleHBsaWNpdCBQcm9wZXJ0
eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUsIEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5h
bE1ldGhvZFR5cGUpCisgICAgZXhwbGljaXQgUHJvcGVydHlTbG90KGNvbnN0IEpTVmFsdWUgdGhp
c1ZhbHVlLCBJbnRlcm5hbE1ldGhvZFR5cGUgaW50ZXJuYWxNZXRob2RUeXBlLCBEaXNhbGxvd1ZN
RW50cnkqIGRpc2FsbG93Vk1FbnRyeSA9IG51bGxwdHIpCiAgICAgICAgIDogbV90aGlzVmFsdWUo
dGhpc1ZhbHVlKQogICAgICAgICAsIG1faW50ZXJuYWxNZXRob2RUeXBlKGludGVybmFsTWV0aG9k
VHlwZSkKICAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZGlzYWxsb3dWTUVudHJ5LCAoaW50
ZXJuYWxNZXRob2RUeXBlID09IEludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSA9PSAhIWRp
c2FsbG93Vk1FbnRyeSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNsb3RC
YXNlIC8gcmVjZWl2ZXIgYmVoYXZpb3IgZGlmZmVyZW5jZSBpbiBjdXN0b20gdmFsdWVzIGFuZCBj
dXN0b20gYWNjZXNzb3JzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw4ICs1NCw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0
aWEKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHko
dm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogCi0gICAgY29uc3Qg
Ym9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBzY29wZS5ub3RpZnlBbGxvY2F0
ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVkKTsKKyAgICBzY29wZS5ub3RpZnlBbGxvY2F0
ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw4ICs3MjcsOSBAQCBTdHJpbmcgU2FtcGxpbmdQ
cm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtCiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+
Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZt
KTsKICAgICBhdXRvIGdldFByb3BlcnR5SWZQdXJlT3BlcmF0aW9uID0gWyZdIChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgLT4gU3RyaW5nIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoY2Fs
bGVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoY2FsbGVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICAgICAgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZShpZGVudCk7CiAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBjYWxsZWUt
PmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAg
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0NCw2ICs2NDQsOCBAQCBwdWJsaWM6CiAjdW5k
ZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKIAogICAgIFZNVHlwZSB2bVR5
cGU7CisgICAgdW5zaWduZWQgZGlzYWxsb3dWTUVudHJ5Q291bnQgeyAwIH07CisKICAgICBDbGll
bnREYXRhKiBjbGllbnREYXRhOwogICAgIEVudHJ5RnJhbWUqIHRvcEVudHJ5RnJhbWUgeyBudWxs
cHRyIH07CiAgICAgLy8gTk9URTogV2hlbiB0aHJvd2luZyBhbiBleGNlcHRpb24gd2hpbGUgcm9s
bGluZyBiYWNrIHRoZSBjYWxsIGZyYW1lLCB0aGlzIG1heSBiZSBlcXVhbCB0bwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCShyZXZpc2lv
biAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50
cnkuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5o
IgogI2luY2x1ZGUgIlZNLmgiCkBAIC0zOSw3ICszOCw2IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRy
eVNjb3BlKFZNJiB2bSwgSlNHbG8KICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2dsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QpCiB7Ci0gICAgQVNTRVJUKCFEaXNhbGxvd1ZNUmVlbnRyeTo6aXNJbkVm
ZmVjdE9uQ3VycmVudFRocmVhZCgpKTsKICAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKICAgICAg
ICAgdm0uZW50cnlTY29wZSA9IHRoaXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5NSw5ICsy
ODk1LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9JZGVudGlmaWVyKGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFBy
b3BlcnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgdmFsdWUuZ2V0UHJvcGVydHlT
bG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKICAg
ICBKU1ZhbHVlIHJlc3VsdDsKICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDctMTkgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IERpc2FsbG93U2NvcGUsIERp
c2FsbG93R0MsIGFuZCBEaXNhbGxvd1ZNUmVlbnRyeSBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY1Nzk1NzI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVQdXQpOgorICAg
ICAgICAoR2VuZXJhdGVQdXRCeUluZGV4KToKKyAgICAgICAgKEdlbmVyYXRlRGVmaW5lT3duUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXRCeUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJvcGVydHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1
dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlcjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmRlZmluZU93blByb3BlcnR5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnB1dCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0QnlJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllczo6ZGVmaW5lT3duUHJvcGVydHkpOgorCiAyMDIwLTA3LTE5ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ29sb3JCdWlsZGVyCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNyArNTksOCBAQCBzdGF0aWMg
Ym9vbCBpc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQgUCwgdGhlbiBy
ZXR1cm4gZmFsc2UuCi0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0LCBK
U0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICBK
U0M6OkRpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpKTsKKyAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90KCZ0aGlzT2JqZWN0LCBKU0M6OlByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OwogICAgIGlmIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3Qs
ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCkBAIC05OSw3ICsxMDAsOCBAQCBzdGF0aWMgYXV0byBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eShKCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQgUCwgdGhlbiByZXR1cm4gZmFsc2Uu
Ci0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICBKU0M6OkRpc2FsbG93
Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKKyAgICBK
U0M6OlByb3BlcnR5U2xvdCBzbG90KCZ0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgIGlmIChK
U0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsICZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTk2NSw5
ICs5NjUsMTQgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAgIAogICAgICAgICBteSAkb3ZlcnJp
ZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRp
bnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7CiAgICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgYm9vbCBmb3VuZDtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9i
amVjdC0+dm0oKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAg
ICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB9XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFmb3VuZCkge1xuIik7
CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KIApA
QCAtMTA0MSw5ICsxMDQ2LDE0IEBAIHN1YiBHZW5lcmF0ZVB1dEJ5SW5kZXgKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQgPSAiIjsKICAgICAgICAgaWYgKCEk
b3ZlcnJpZGVCdWlsdGlucykgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSB9O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEo
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBib29sIGZvdW5kO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnko
dm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFmb3VuZCkge1xuIik7
CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC0xMTc2LDggKzExODYsMTMgQEAgc3ViIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVy
dHkKICAgICAgICAgICAgICMgRklYTUU6IElzIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qg
dGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGNhbGw/IElzIHRoZXJlIGEgZnVuY3Rpb24gdGhhdCB3aWxs
CiAgICAgICAgICAgICAjICAgICAgICBvbmx5IGxvb2sgYXQgdGhlIGFjdHVhbCBwcm9wZXJ0aWVz
LCBhbmQgbm90IGNhbGwgaW50byBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgICAgICAgICAg
ICAjICAgICAgICBbW0dldE93blByb3BlcnR5XV0gaG9vaz8KLSAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSB9O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5k
ZW50LiAiICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkge1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICBi
b29sIGZvdW5kO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlv
bmFsSW5kZW50LiAiICAgICAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTtcbiIpOworICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgICAgICBmb3VuZCA9IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgfVxuIik7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICBpZiAoIWZvdW5kKSB7
XG4iKTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAg
fQogICAgICAgICBpZiAoISRuYW1lZFNldHRlck9wZXJhdGlvbikgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzQsOSArMjM0LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGkKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVu
dHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAg
ICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI2Myw5ICsyNjgsMTQgQEAgYm9vbCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgIH0KIAogICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZk
aXNhbGxvd1ZNRW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjkyLDggKzMwMiwxMyBA
QCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgfQogCiAgICAg
aWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAg
Ym9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNh
bGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsy
MzQsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgIH0K
IAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
KyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVu
dHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlm
ICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRy
dWUpOwpAQCAtMjYzLDkgKzI2OCwxNCBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nCiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICgh
KHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJv
b2wgZm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5
KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KTsKKyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgdHJ1ZSk7CkBAIC0yOTIsOCArMzAyLDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7
CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxs
b3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXBy
b3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQzLDkgKzI0MywxNCBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVuCiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7
CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93
Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNzIsOSArMjc3LDE0IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICB9CiAKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsKKyAgICB7CisgICAgICAgIERpc2Fs
bG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoIWZvdW5k
KSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTMwMSw4ICszMTEs
MTMgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgIH0KIAog
ICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAg
ICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkg
ZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgIGZvdW5k
ID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91
bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0
b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDcsOSArMjA3LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXI6OnB1dCgKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+
Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
KSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93
Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB0cnVlKTsKQEAgLTIyOCw5ICsyMzMsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllcjo6cHV0QgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwg
aW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5k
OworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7Cisg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CisgICAg
ICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+
Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHRydWUpOwpAQCAtMjQ3LDggKzI1NywxMyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyOjpkZWZpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgIERpc2Fs
bG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAg
ICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNE
YXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5ICsyMDcsMTQgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAg
ICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNh
bGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjI4LDkgKzIzMywxNCBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50
cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2Fs
bG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNDcsOCArMjU3LDEzIEBAIGJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBp
ZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kOworICAg
ICAgICB7CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
ZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBp
ZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDkg
KzIxMywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYg
KCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBi
b29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0y
MzQsOSArMjM5LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsKKyAgICB7CisgICAg
ICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAgICBmb3VuZCA9IHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBp
ZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI1
Myw4ICsyNjMsMTMgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZQog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAg
IGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAg
IGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlz
YWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgIGZvdW5kID0g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQp
IHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3Io
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsOSArMjM1LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0g
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsK
KyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91
bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI1Niw5ICsyNjEsMTQgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBp
ZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAg
ICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1F
bnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwor
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjc4LDggKzI4OCwxMyBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIGJv
b2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgIGZvdW5kID0gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsK
ICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsOSArMjQzLDE0
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEKICAgICB9CiAKICAg
ICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYg
KCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVy
dHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAg
ICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBk
aXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmpl
Y3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZv
dW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsK
QEAgLTI3Miw5ICsyNzcsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQQogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90
b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qo
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZv
dW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7
CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Cisg
ICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRydWUpOwpAQCAtMzAxLDggKzMxMSwxMyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBCiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2wo
KSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAg
ICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1F
bnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0
eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJ
KHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzMSw5ICsyMzEsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsK
KyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9Cisg
ICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAg
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHRydWUpOwpAQCAtMjUyLDkgKzI1NywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wg
Zm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZt
KTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsK
KyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgdHJ1ZSk7CkBAIC0yNzcsOCArMjg3LDEzIEBAIHN0YXRpYyBib29sIGlzVW5mb3JnZWFi
bGVQcm9wZXJ0eU5hbWUoUHIKIH0KIAogICAgICAgICBpZiAoIWlzVW5mb3JnZWFibGVQcm9wZXJ0
eU5hbWUocHJvcGVydHlOYW1lKSkgewotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07
Ci0gICAgICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICAg
ICAgYm9vbCBmb3VuZDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgRGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAg
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAg
ICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVy
dHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404694</attachid>
            <date>2020-07-19 20:00:25 -0700</date>
            <delta_ts>2020-07-19 20:39:57 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539.patch</filename>
            <type>text/plain</type>
            <size>116038</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0OCBA
QAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5kIERpc2FsbG93Vk1SZWVudHJ5
IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU3OTU3Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
RGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFibGluZyBhbmQgZGlzYWJsaW5nLiAg
VGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5hYmxlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93LCB3ZQorICAgICAgICBjYW4gbWFr
ZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50cnkgaW5zaWRlIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0aCBXVEY6Ok9wdGlvbmFsLiAgV2l0
aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMgYW5kIG1ha2UKKyAgICAgICAgdGhl
bSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAgICBIb3dldmVyLCB0aGVyZSBpcyBz
dGlsbCBvbmUgZXhjZXB0aW9uOiBEaXNhbGxvd1ZNUmVlbnRyeSBuZWVkcyBhIHJlbGVhc2UoKSBt
ZXRob2QKKyAgICAgICAgdG8gYWxsb3cgaXQgdG8gZGlzYWJsZSB0aGUgUkFJSSBzY29wZSBhaGVh
ZCBvZiBkZXN0cnVjdGlvbi4gIFRoZSByZWFzb24gZm9yIHRoaXMKKyAgICAgICAgaXMgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgZW5mb3JjZSB0aGF0IFByb3BlcnR5U2xvdHMgd2l0aCBWTUlu
cXVpcnkgaW50ZXJuYWwKKyAgICAgICAgbWV0aG9kIHR5cGUgd2lsbCBhbHdheXMgYmUgYWNjb21w
YW5pZWQgYnkgYSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0byBkaXNhYmxlCisgICAgICAgIGNh
bGxpbmcgYmFjayBpbnRvIEpTLiAgSG93ZXZlciwgdGhpcyBvbmx5IG5lZWQgdG8gYmUgZW5mb3Jj
ZWQgd2hpbGUgY2FsbGluZyBpbnRvCisgICAgICAgIGdldFByb3BlcnR5U2xvdCgpLiAgVGhlcmVh
ZnRlciwgdGhlIGNsaWVudCBtYXkgdXNlIHRoZSByZXN1bHRzIHJldHVybmVkIGluIHRoZQorICAg
ICAgICBQcm9wZXJ0eVNsb3QgdG8gbWFrZSBkZWNpc2lvbnMgb24gdGFraW5nIGFjdGlvbiB0aGF0
IG1heSBlbnRhaWwgY2FsbGluZyBpbnRvIEpTLgorICAgICAgICBUaGlzIG1ha2VzIG1hbmFnaW5n
IHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0cmlja3kuICBU
bworICAgICAgICB3b3JrYXJvdW5kIHRoaXMsIHdlIGxldCBEaXNhbGxvd1ZNUmVlbnRyeSBoYXZl
IGEgcmVsZWFzZSgpIG1ldGhvZCB0aGF0IGJhc2ljYWxseQorICAgICAgICBkb2VzIGFuIGVhcmx5
IHJlbGVhc2Ugb2YgcGVybWlzc2lvbiB0byBjYWxsIGludG8gSlMuICBUaGUgcmVsZWFzZSgpIG1l
dGhvZCBzaG91bGQKKyAgICAgICAgb25seSBiZSB1c2VkIGluIHBsYWNlcyB3aGVyZSB3ZSBjYW4n
dCByZWx5IG9uIGRlc3RydWN0aW9uIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeQorICAgICAgICBz
Y29wZSB0byB0YWtlIGNhcmUgb2YgdGhlIHJlbGVhc2UgYXV0b21hdGljYWxseS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUs
IGFuZCBhbHNvCisgICAgICAgICAgIGxheXMgdGhlIGdyb3VuZCB3b3JrIGluIGNhc2Ugd2Ugd2Fu
dCB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIG1vZGVzIG9mIGRpc2FibGluZworICAgICAgICAgICBW
TSBlbnRyeSBpbnN0ZWFkIG9mIGNyYXNoaW5nIGUuZy4gc2lsZW50IHJlamVjdGlvbnMgKGp1c3Qg
c2ltcGx5IGNob29zaW5nIG5vdAorICAgICAgICAgICB0byBjYWxsIGludG8gSlMsIGFuZCBhbHdh
eXMgcmV0dXJuaW5nIHVuZGVmaW5lZCkgaWYgd2UgbmVlZCBpdCBpbiB0aGUgZnV0dXJlLgorICAg
ICAgICAgICBGb3Igbm93LCB0aGUgb25seSBtb2RlIG9mIGRpc2FsbG93aW5nIGVudHJ5IGlzIHRv
IGNyYXNoLgorCisgICAgICAgIDMuIENoYW5nZSBEaXNhbGxvd1Njb3BlIGFuZCBEaXNhbGxvd0dD
IHRvIGJlIGJhc2VkIG9uIEFTU0VSVF9FTkFCTEVEIGluc3RlYWQgb2YgTkVCVUcuCisKKyAgICAg
ICAgNC4gTWFrZSBEaXNhbGxvd1ZNRW50cnkgYWx3YXlzIGVuZm9yY2VhYmxlLCBub3QganVzdCB3
aGVuIEFTU0VSVF9FTkFCTEVELgorCisgICAgICAgIDUuIEFkZCBEaXNhbGxvd1ZNRW50cnkgc2Nv
cGVzIHdoZW5ldmVyIHdlIGNyZWF0ZSBhIFByb3BlcnR5U2xvdCBmb3IgVk1JbnF1aXJ5LgorICAg
ICAgICAgICBUaGUgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yIHdpbGwgbm93IHRha2UgYW4gb3B0
aW9uYWwgRGlzYWxsb3dWTUVudHJ5IHBvaW50ZXIuCisgICAgICAgICAgIElmIHRoZSBzbG90J3Mg
c3BlY2lmaWVkIGludGVybmFsIG1ldGhvZCB0eXBlIGlzIFZNSW5xdWlyeSwgdGhlbiB3ZSdsbAor
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCB0aGF0IHRoZSBEaXNhbGxvd1ZNRW50cnkgcG9pbnRl
ciBpcyBub24tbnVsbC4KKworICAgICAgICA2LiBGaXhlZCBhIGJ1ZyBpbiBsbGludF9zbG93X3Bh
dGhfZ2V0X3ByaXZhdGVfbmFtZSgpLiAgSXQgc2hvdWxkIGJlIHBhc3NpbmcKKyAgICAgICAgICAg
R2V0T3duUHJvcGVydHkgdG8gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZCgpIGluc3RlYWQgb2Yg
Vk1JbnF1aXJ5LgorICAgICAgICAgICBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKCkgY2FuIHRo
cm93IGFuIGV4Y2VwdGlvbiwgd2hpY2ggbWFrZXMgaXQgbm90CisgICAgICAgICAgIGFwcHJvcHJp
YXRlIGZvciBhIFZNSW5xdWlyeS4gIFRoZXJlIGlzIGFsc28gbm8gY3VycmVudCBjbGllbnQgdGhh
dCBuZWVkcyBpdAorICAgICAgICAgICB0byBoYW5kbGUgYSBWTUlucXVpcnkuICBBZGRlZCBhbiBh
c3NlcnRpb24gaW4gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZCgpIHRvCisgICAgICAgICAgIHZl
cmlmeSB0aGF0IHRoZSBjbGllbnQgd2lsbCBub3QgYmUgcmVxdWVzdGluZyBhIFZNSW5xdWlyeS4K
KworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0RlZmVyR0Mu
Y3BwOgorICAgICAgICAqIGhlYXAvRGVmZXJHQy5oOgorICAgICAgICAoSlNDOjpEaXNhbGxvd0dD
OjpEaXNhbGxvd0dDKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dHQzo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cFNuYXBzaG90QnVpbGRlcjo6anNvbik6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6
OnF1ZXJ5SW5zdGFuY2VzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
OjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpsbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKToKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93U2NvcGUuaDoKKyAgICAgICAgKEpT
Qzo6RGlzYWxsb3dTY29wZTo6RGlzYWxsb3dTY29wZSk6CisgICAgICAgIChKU0M6OkRpc2FsbG93
U2NvcGU6On5EaXNhbGxvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6aXNJ
bkVmZmVjdE9uQ3VycmVudFRocmVhZCk6CisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmVu
YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmRpc2FibGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjplbnRlclNjb3BlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6ZXhpdFNjb3BlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oLgorICAgICAgICAoSlNDOjpE
aXNhbGxvd1ZNRW50cnlJbXBsOjpEaXNhbGxvd1ZNRW50cnlJbXBsKToKKyAgICAgICAgKEpTQzo6
RGlzYWxsb3dWTUVudHJ5SW1wbDo6fkRpc2FsbG93Vk1FbnRyeUltcGwpOgorICAgICAgICAoSlND
OjpEaXNhbGxvd1ZNRW50cnlJbXBsOjpyZWxlYXNlKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dW
TVJlZW50cnk6OkRpc2FsbG93Vk1SZWVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlz
YWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNh
bGxvd1ZNUmVlbnRyeTo6c2NvcGVSZWVudHJ5Q291bnQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpEaXNhbGxvd1ZNUmVlbnRyeTo6c2V0U2NvcGVSZWVudHJ5Q291bnQpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvckluc3RhbmNlOjpzYW5pdGl6
ZWRUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoK
KyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0
ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3Bl
cnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRHZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRy
eUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRQcml2YXRlRmllbGQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6Cisg
ICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlv
blNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5SW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlOjp2bSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGU6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUpOgorICAgICAgICAoSlND
OjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjp+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6
CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRl
ZCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRp
YWxpemVkKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4
cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtZUZyb21DYWxs
ZWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlT
Y29wZS5jcHA6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAg
ICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRH
ZXR0ZXJTZXR0ZXIpOgorCiAyMDIwLTA3LTE5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgbm9uLXVuaWZpZWQgc291cmNlIGJ1
aWxkIGZpeApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC04MzUsNyArODM1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQQogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50
aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAot
ICAgIHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAorICAgIHJ1bnRpbWUvRGlzYWxsb3dWTUVu
dHJ5LmgKICAgICBydW50aW1lL0R1bXBDb250ZXh0LmgKICAgICBydW50aW1lL0VDTUFNb2RlLmgK
ICAgICBydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzY2LDcgKzc2Niw2IEBAIHJ1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAogcnVudGltZS9EaXJl
Y3RBcmd1bWVudHNPZmZzZXQuY3BwCiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAot
cnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAKIHJ1bnRpbWUvRG91YmxlUHJlZGljdGlvbkZ1
enplckFnZW50LmNwcAogcnVudGltZS9EdW1wQ29udGV4dC5jcHAKIHJ1bnRpbWUvRUNNQU1vZGUu
Y3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5OCw4ICsyOTgsMTMgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0Nl
bAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0
aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZ2xv
YmFsT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlvbkVudHJ5KiBl
bnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoUGFyZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGdldFNsb3QpKQorICAgICAgICAgICAgICAgICAgICBib29sIGZvdW5kOworICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBnZXRT
bG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBQ
YXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgZ2V0U2xvdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGZvdW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudDo6
cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC02NjgsOSArNjczLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50PjoKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqID0gYXNDYWxsYmFja09iamVjdCh0
aGlzVmFsdWUpOwogICAgIAogICAgIC8vIENoZWNrIGZvciBjYWNoZWQgb3Igb3ZlcnJpZGUgcHJv
cGVydHkuCi0gICAgUHJvcGVydHlTbG90IHNsb3QyKHRoaXNPYmosIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIGlmIChQYXJlbnQ6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lKSk7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dW
TUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QyKHRoaXNPYmosIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwor
ICAgICAgICBib29sIGZvdW5kID0gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QyKTsKKyAgICAgICAgZGlzYWxsb3dWTUVu
dHJ5LnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkp
OworICAgIH0KIAogICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgp
KSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYo
KTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE5MTYsNyArMTkxNiw3IEBACiAJCUZFNTMzQ0E1MUYyMTdEQjMwMDE2QTFG
RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9u
LmZyYW1ld29yayAqLzsgfTsKIAkJRkU1MzNDQTYxRjIxN0RCMzAwMTZBMUZFIC8qIEphdmFTY3Jp
cHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgKi87IH07CiAJCUZFNTMzQ0FEMUYyMTdFQTUwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTUzM0NBMDFG
MjE3QzMxMDAxNkExRkUgLyogdGVzdG1hc20uY3BwICovOyB9OwotCQlGRTU0REVGQjFFOEM2RDg4
MDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAvKiBEaXNhbGxv
d1ZNUmVlbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUZFNTRERUZCMUU4QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZBMUU4QzZE
NzIwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTU0REVGRjFFOEQ3NkZBMDBBODkyQzUgLyogRGlz
YWxsb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU1NERFRkUxRThENzQyODAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTU2MjhDRTFFOTk1MTMy
MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU2MjhDQzFFOTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRT
cGVjaWFsLmggKi87IH07CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkz
MkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTIwMSw4ICs1MjAxLDcgQEAKIAkJRkU1
MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTUzM0NBMDFGMjE3QzMxMDAxNkExRkUgLyogdGVz
dG1hc20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdG1hc20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTUzM0NBQzFGMjE3REI0MDAxNkExRkUgLyogdGVzdG1hc20gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3RtYXNtOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlGRTU0REVGQTFFOEM2RDcyMDBB
ODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzYWxsb3dWTVJlZW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RkU1NERFRkMxRThDNkRGRjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc2FsbG93Vk1SZWVudHJ5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERp
c2FsbG93Vk1FbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhbGxv
d1ZNRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1NERFRkUxRThENzQy
ODAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzYWxsb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU2
MjhDQjFFOTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclByaW50U3BlY2lhbC5jcHA7IHBhdGggPSBiMy9h
aXIvQWlyUHJpbnRTcGVjaWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1
NjI4Q0MxRTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJQcmludFNwZWNpYWwuaDsgcGF0aCA9IGIzL2Fpci9BaXJQ
cmludFNwZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNDMsOCArNzE0
Miw3IEBACiAJCQkJMTQzODZBNzIxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcCAqLywKIAkJCQkxNDM4NkE3MzFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4
ZWN1dGFibGUuaCAqLywKIAkJCQlGRTU0REVGRTFFOEQ3NDI4MDBBODkyQzUgLyogRGlzYWxsb3dT
Y29wZS5oICovLAotCQkJCUZFNTRERUZDMUU4QzZERkYwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVl
bnRyeS5jcHAgKi8sCi0JCQkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1S
ZWVudHJ5LmggKi8sCisJCQkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1F
bnRyeS5oICovLAogCQkJCUUzMTYxODEwMUVDNUZFMDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9u
LmggKi8sCiAJCQkJRTMxNjE4MTExRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRl
clNldHRlci5jcHAgKi8sCiAJCQkJRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJp
YnV0ZUdldHRlclNldHRlci5oICovLApAQCAtOTQ4Miw3ICs5NDgwLDcgQEAKIAkJCQkxNDM4NkE3
NTFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMzczMDhGMUMwQ0Q2ODUwMDA1MkJGQSAvKiBEaXNhbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTRERUZGMUU4RDc2RkEwMEE4OTJD
NSAvKiBEaXNhbGxvd1Njb3BlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTU0REVGQjFFOEM2RDg4
MDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNTRE
RUZCMUU4QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRjQyNzMxMTU4RUJENTQwMDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzMTYxODEzMUVDNUZFMTcwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzE2MTgxNTFFQzVGRTI3MDAwNkEyMTggLyogRE9NQXR0cmlidXRl
R2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0RlZmVyR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0RlZmVyR0MuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9EZWZlckdDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIExh
enlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhy
ZWFkOjpUcnVlPj4gRGlzYWxsb3dHQzo6c19zY29wZVJlZW50cnlDb3VudDsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCShyZXZpc2lvbiAyNjQ1NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDE2ICs3Nyw4IEBAIGNsYXNzIERpc2FsbG93R0MgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTwK
ICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKICAgICB0eXBlZGVmIERpc2FsbG93U2Nv
cGU8RGlzYWxsb3dHQz4gQmFzZTsKIHB1YmxpYzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZ
U19JTkxJTkUgRGlzYWxsb3dHQyhib29sID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQotCi0jZWxzZSAvLyBub3QgTkRFQlVHCi0KLSAg
ICBEaXNhbGxvd0dDKGJvb2wgZW5hYmxlZCA9IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVk
KQotICAgIHsgfQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgRGlzYWxsb3dHQygpID0gZGVmYXVs
dDsKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQogICAgIHsKQEAgLTEwNSw3ICs5Nywx
MCBAQCBwcml2YXRlOgogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6
VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7CiAKLSNlbmRpZiAvLyBOREVCVUcKKyNlbHNlCisg
ICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd0dDKCkgeyB9IC8vIFdlIG5lZWQgdGhpcyB0byBwbGFj
YXRlIENsYW5nIGR1ZSB0byB1bnVzZWQgd2FybmluZ3MuCisgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKICAgICAK
ICAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxvd0dDPjsKIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNu
YXBzaG90QnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw3ICs0MDksOCBAQCBTdHJp
bmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvCiAgICAgICAgICAgICAvLyAiT2Jq
ZWN0IiBpbiBzbmFwc2hvdHMgYW5kIG5vdCBnZXQgdGhlIG5hbWUgb2YgdGhlIHByb3RvdHlwZSdz
IHBhcmVudC4KICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChub2RlLmNl
bGwpOwogICAgICAgICAgICAgaWYgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBvYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSkpIHsKLSAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwor
ICAgICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAg
ICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGdsb2JhbE9iamVj
dCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3QpKQogICAgICAgICAgICAgICAg
ICAgICBjbGFzc05hbWUgPSBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3QpOwog
ICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjQ2LDE0ICs2NDYsMTkgQEAgSlNWYWx1ZSBKU0luamVjdGVk
U2NyaXB0SG9zdDo6cXVlcnlJbnN0YQogCiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBvYmplY3Q7
CiAKLSAgICBQcm9wZXJ0eVNsb3QgcHJvdG90eXBlU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIGlmIChvYmplY3QtPmdldFByb3Bl
cnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90
eXBlU2xvdCkpIHsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAg
ICAgICAgaWYgKHByb3RvdHlwZVNsb3QuaXNWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlU2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgICAgICAgICBpZiAocHJvdG90eXBlVmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IHByb3RvdHlwZVZh
bHVlOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CisgICAg
eworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAg
UHJvcGVydHlTbG90IHByb3RvdHlwZVNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgYm9vbCBm
b3VuZCA9IG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGVTbG90KTsKKyAgICAgICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKKyAgICAgICAgZGlzYWxsb3dWTUVudHJ5LnJlbGVhc2UoKTsKKyAgICAgICAg
aWYgKGZvdW5kKSB7CisgICAgICAgICAgICBpZiAocHJvdG90eXBlU2xvdC5pc1ZhbHVlKCkpIHsK
KyAgICAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlU2xvdC5n
ZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAg
ICAgICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcHJvdG90eXBlID0gcHJvdG90eXBlVmFsdWU7CisgICAgICAgICAgICAgICAgICAg
IG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBD
YW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC04MjUsMTUgKzgyNSwxNSBAQCBmYWlsZWRKU09OUDoKICAgICAgICAgQVNTRVJUKGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgog
ICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBl
bnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRy
PEpJVENvZGU+IGppdENvZGUgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KKyAgICBS
ZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFt
ZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxDYWxsZWUsIHRoaXNPYmosIDEpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxv
d0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGlu
IEV4ZWN1dGFibGUuCisgICAgICAgIGppdENvZGUgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2Rl
KCk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbENhbGxlZSwgdGhpc09iaiwgMSk7CisgICAgfQogCiAgICAgLy8gRXhlY3V0ZSB0aGUg
Y29kZToKLSAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKICAgICBBU1NFUlQoaml0Q29kZSA9PSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkucHRy
KCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0Nh
bGxGcmFtZSk7CkBAIC04OTAsMjcgKzg5MCwyNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlQ2FsbChKU0dsb2JhCiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlu
bGluZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVu
c3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJs
ZS4KLQogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwotICAgIGlmIChpc0pTQ2FsbCkKLSAg
ICAgICAgaml0Q29kZSA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZUZvckNhbGwoKTsKLQogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwot
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIHsKKyAgICAgICAg
RGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJl
cGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAgIGlmIChpc0pTQ2FsbCkKKyAg
ICAgICAgICAgIGppdENvZGUgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3JDYWxsKCk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJn
cy5kYXRhKCkpOworICAgIH0KIAogICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsKLSAgICAgICAg
Ly8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICAgICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAg
ICAgIGlmIChpc0pTQ2FsbCkgewotICAgICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgICAgICBBU1NFUlQoaml0Q29kZSA9PSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkucHRyKCkpOwotICAgICAgICAgICAgcmVzdWx0
ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZl
KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZy
YW1lKSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFs
dWUoKSk7Ci0gICAgICAgIH0KKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIGlmIChpc0pT
Q2FsbCkgeworICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgQVNTRVJUKGpp
dENvZGUgPT0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
Rm9yQ2FsbCgpLnB0cigpKTsKKyAgICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0s
ICZwcm90b0NhbGxGcmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gSlNWYWx1
ZTo6ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9p
bnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4ocmVzdWx0KTsKQEAgLTk3MiwyOCArOTY5LDI1IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5
c0JlSW5saW5lZCA9IGZhbHNlOwogICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsg
Ly8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVj
dXRhYmxlLgotCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7Ci0gICAgaWYgKGlzSlNDb25z
dHJ1Y3QpCi0gICAgICAgIGppdENvZGUgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpOwotCiAgICAgUHJvdG9DYWxsRnJh
bWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50LCBhcmdzLmRh
dGEoKSk7CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBu
byBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAg
ICAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpCisgICAgICAgICAgICBqaXRDb2RlID0gY29uc3RydWN0
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3Qo
KTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVj
dCwgY29uc3RydWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAg
fQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewotICAgICAgICAvLyBFeGVjdXRlIHRoZSBj
b2RlLgotICAgICAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKLSAgICAgICAgaWYgKGlzSlNDb25z
dHJ1Y3QpIHsKLSAgICAgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNvbnN0cnVjdERhdGEuanMu
ZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkucHRyKCkp
OwotICAgICAgICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxG
cmFtZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpk
ZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1Bv
aW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2Rl
LgorICAgIGlmIChpc0pTQ29uc3RydWN0KSB7CisgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNv
bnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29u
c3RydWN0KCkucHRyKCkpOworICAgICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwg
JnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBKU1ZhbHVl
OjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJh
d1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKIAotICAgICAgICAgICAgaWYgKExJ
S0VMWSghdGhyb3dTY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmlzT2JqZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChMSUtFTFko
IXRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0LmlzT2JqZWN0KCkpOwogICAgIH0KIAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgbnVsbHB0cik7CkBAIC0xMTAwLDE5ICsxMDk0LDI0IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIC8vIFdlIGNhbid0IGRlY2xhcmUgYSAidmFy
Ii8iZnVuY3Rpb24iIHRoYXQgb3ZlcndyaXRlcyBhIGdsb2JhbCAibGV0Ii8iY29uc3QiLyJjbGFz
cyIgaW4gYSBzbG9wcHktbW9kZSBldmFsLgogICAgIGlmICh2YXJpYWJsZU9iamVjdC0+aXNHbG9i
YWxPYmplY3QoKSAmJiAhZXZhbC0+aXNJblN0cmljdENvbnRleHQoKSAmJiAobnVtVmFyaWFibGVz
IHx8IG51bVRvcExldmVsRnVuY3Rpb25EZWNscykpIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeSh2bSk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YXJp
YWJsZU9iamVjdCktPmdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50ID0gdW5saW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlKGkpOwotICAg
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAgIGlm
IChKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExl
eGljYWxFbnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7Cisg
ICAgICAgICAgICBib29sIGZvdW5kID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93
blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHNsb3QpOworICAgICAgICAgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4odGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBtYWtlU3RyaW5n
KCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3Ry
aW5nKGlkZW50LmltcGwoKSksICInIikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7
ICsraSkgewogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVC
bG9jay0+ZnVuY3Rpb25EZWNsKGkpOwotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAgIGlmIChKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6
Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbi0+bmFtZSgpLCBzbG90KSkgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIGJvb2wgZm91
bmQgID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24tPm5hbWUoKSwgc2xv
dCk7CisgICAgICAgICAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAg
ICAgICBpZiAoZm91bmQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0
IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoZnVu
Y3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTExOTMsMTUgKzExOTIsMTUgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFs
RXhlY3V0YQogICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7
IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAgICAgfQogCi0gICAgRGlzYWxsb3dHQyBkaXNh
bGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2Nr
IGluIEV4ZWN1dGFibGUuCi0KLSAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSA9IGV2YWwtPmdl
bmVyYXRlZEpJVENvZGUoKTsKLQorICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIFBy
b3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwgdGhpc1ZhbHVlLCAxKTsKKyAgICB7CisgICAg
ICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNh
biByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgorICAgICAgICBqaXRDb2RlID0gZXZh
bC0+Z2VuZXJhdGVkSklUQ29kZSgpOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIHRoaXNWYWx1ZSwgMSk7CisgICAgfQogCiAgICAg
Ly8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKICAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0Q29kZSA9PSBldmFsLT5nZW5lcmF0ZWRK
SVRDb2RlKCkucHRyKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgm
dm0sICZwcm90b0NhbGxGcmFtZSk7CkBAIC0xMjUxLDE4ICsxMjUwLDE4IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmEKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0K
IAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdD
IGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENv
ZGU+IGppdENvZGUgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KLSAgICAvLyBU
aGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgotICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUt
ZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZwotICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQt
cmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAg
IFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQo
Y29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwganNVbmRlZmluZWQoKSwgMSk7CisgICAg
eworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5z
LiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaml0Q29k
ZSA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKTsKKyAgICAgICAgLy8gVGhlIHx0aGlz
fCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KKyAgICAgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZp
cm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCisgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQt
cmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpzVW5kZWZpbmVkKCksIDEpOworICAgIH0KIAog
ICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7CiAgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENvZGUgPT0gZXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGppdENvZGUt
PmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjcsMTQgKzE2NywxNiBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeSh2bSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKwogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBp
ZGVudGlmaWVyLnVpZCgpKTsKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKIAog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAg
ICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7CkBAIC0x
ODQsMTMgKzE4NiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRy
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRw
dHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCiAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAg
IGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKQEAgLTE5
OSwxNCArMjAzLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIERpc2FsbG93Vk1FbnRy
eSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZp
ZXIudWlkKCkpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOwogCiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3Qs
IGlkZW50LCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMxLDEyICs2MzEsMTQg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlbwogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wVHJ5R2V0QnlJZD4oKTsKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOwot
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJv
cGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOworICAgIHRocm93U2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0UHVyZVJlc3Vs
dCgpOwogCiAgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CkBAIC0xMDkzLDcgKzEw
OTUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhCiAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUo
KSk7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsK
ICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eSwgc2xvdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAKQEAgLTIzMTYs
NiArMjMxOCwxMiBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfd3JpdGVfYmFycmllcl9zbG93CiAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY2VsbCk7CiB9CiAKK2V4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIGxsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24oVk0qIHZtLCBQcm90b0Nh
bGxGcmFtZSopCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIXZtLT5kaXNhbGxvd1ZNRW50cnlDb3Vu
dCk7IC8vIEN1cnJlbnRseSwgdGhpcyBzaG91bGQgYWx3YXlzIGNyYXNoLgorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3Zh
bHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3Zh
bHVlKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTQ3LDYgKzE0Nyw3IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF8K
ICNpZiBFTkFCTEUoQ19MT09QKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
c3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKICNl
bmRpZgorZXh0ZXJuICJDIiBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIFNsb3dQYXRoUmV0dXJuVHlw
ZSBsbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBX
VEZfSU5URVJOQUw7CiBleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBsbGlu
dF9jcmFzaCgpIFdURl9JTlRFUk5BTDsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzAs
NiArMTcwLDkgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgICMgU2luY2Ugd2UgaGF2
ZSB0aGUgZ3VhcmFudGVlIHRoYXQgdFggIT0gYVkgd2hlbiBYICE9IFksIHdlIGFyZSBzYWZlIGZy
b20KICAgICAjIGFsaWFzaW5nIHByb2JsZW1zIHdpdGggb3VyIGFyZ3VtZW50cy4KIAorICAgIGxv
YWRpIFZNOjpkaXNhbGxvd1ZNRW50cnlDb3VudFt2bV0sIHQ0CisgICAgYnRpbnogdDQsIC5jaGVj
a1ZNRW50cnlQZXJtaXNzaW9uCisKICAgICBpZiBBUk12NwogICAgICAgICB2bUVudHJ5UmVjb3Jk
KGNmciwgdDMpCiAgICAgICAgIG1vdmUgdDMsIHNwCkBAIC0zMTksNiArMzIyLDEzIEBAIG1hY3Jv
IGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICBwb3BDYWxsZWVTYXZlcygpCiAgICAgZnVuY3Rpb25F
cGlsb2d1ZSgpCiAgICAgcmV0CisKKy5jaGVja1ZNRW50cnlQZXJtaXNzaW9uOgorICAgICMgV2Ug
Z2V0IGhlcmUgYmVjYXVzZSB2bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQgaXMgbm9uLXplcm8uIEN1
cnJlbnRseSwgdGhpcworICAgICMgYWx3YXlzIG1lYW5zIHdlIHdpbGwgY3Jhc2guCisgICAgbW92
ZSB2bSwgYTAKKyAgICBtb3ZlIHByb3RvQ2FsbEZyYW1lLCBhMQorICAgIGNDYWxsMihfbGxpbnRf
Y2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbikKIGVuZAogCiAjIGEwLCBhMiwgdDMsIHQ0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsx
NjYsOSBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRl
ckFsaWdubWVudCh0NCwgMHhiYWQwZGMwMSkKIAorICAgIGxvYWRpIFZNOjpkaXNhbGxvd1ZNRW50
cnlDb3VudFt2bV0sIHQ0CisgICAgYnRpbnogdDQsIC5jaGVja1ZNRW50cnlQZXJtaXNzaW9uCisK
ICAgICBzdG9yZXAgdm0sIFZNRW50cnlSZWNvcmQ6Om1fdm1bc3BdCiAgICAgbG9hZHAgVk06OnRv
cENhbGxGcmFtZVt2bV0sIHQ0CiAgICAgc3RvcmVwIHQ0LCBWTUVudHJ5UmVjb3JkOjptX3ByZXZU
b3BDYWxsRnJhbWVbc3BdCkBAIC0yODQsNiArMjg3LDEzIEBAIG1hY3JvIGRvVk1FbnRyeShtYWtl
Q2FsbCkKICAgICBwb3BDYWxsZWVTYXZlcygpCiAgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAg
cmV0CisKKy5jaGVja1ZNRW50cnlQZXJtaXNzaW9uOgorICAgICMgV2UgZ2V0IGhlcmUgYmVjYXVz
ZSB2bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQgaXMgbm9uLXplcm8uIEN1cnJlbnRseSwgdGhpcwor
ICAgICMgYWx3YXlzIG1lYW5zIHdlIHdpbGwgY3Jhc2guCisgICAgbW92ZSB2bSwgYTAKKyAgICBt
b3ZlIHByb3RvQ2FsbEZyYW1lLCBhMQorICAgIGNDYWxsMihfbGxpbnRfY2hlY2tfdm1fZW50cnlf
cGVybWlzc2lvbikKIGVuZAogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Rpc2FsbG93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXNhbGxvd1Njb3BlLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDI3
ICszNSwxOCBAQCBjbGFzcyBEaXNhbGxvd1Njb3BlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEaXNhbGxvd1Njb3BlKTsKICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKIHB1Ymxp
YzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dTY29wZShib29s
ID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgfkRpc2FsbG93U2NvcGUoKSB7IH0KLSAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSB7
IHJldHVybiBmYWxzZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlbmFibGUoKSB7IH0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlzYWJsZSgpIHsgfQotCi0jZWxzZSAvLyBub3QgTkRFQlVH
Ci0KLSAgICBEaXNhbGxvd1Njb3BlKGJvb2wgZW5hYmxlZCA9IHRydWUpCisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBEaXNhbGxvd1Njb3BlKCkKICAgICB7Ci0gICAgICAgIG1faXNFbmFibGVkID0g
ZW5hYmxlZDsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkKQotICAgICAgICAgICAgZW50ZXJTY29w
ZSgpOworICAgICAgICBhdXRvIGNvdW50ID0gVDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKKyAgICAg
ICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoKytjb3VudCk7CiAgICAgfQogCiAgICAgfkRpc2Fs
bG93U2NvcGUoKQogICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkKQotICAgICAgICAgICAg
ZXhpdFNjb3BlKCk7CisgICAgICAgIGF1dG8gY291bnQgPSBUOjpzY29wZVJlZW50cnlDb3VudCgp
OworICAgICAgICBBU1NFUlQoY291bnQpOworICAgICAgICBUOjpzZXRTY29wZVJlZW50cnlDb3Vu
dCgtLWNvdW50KTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0luRWZmZWN0T25DdXJyZW50
VGhyZWFkKCkKQEAgLTYzLDM0ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhIVQ6
OnNjb3BlUmVlbnRyeUNvdW50KCk7CiAgICAgfQogCi0gICAgdm9pZCBlbmFibGUoKQotICAgIHsK
LSAgICAgICAgbV9pc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICBlbnRlclNjb3BlKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBkaXNhYmxlKCkKLSAgICB7Ci0gICAgICAgIG1faXNFbmFibGVkID0gZmFs
c2U7Ci0gICAgICAgIGV4aXRTY29wZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGVu
dGVyU2NvcGUoKQotICAgIHsKLSAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRyeUNv
dW50KCk7Ci0gICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50KCsrY291bnQpOwotICAgIH0K
LQotICAgIHZvaWQgZXhpdFNjb3BlKCkKLSAgICB7Ci0gICAgICAgIGF1dG8gY291bnQgPSBUOjpz
Y29wZVJlZW50cnlDb3VudCgpOwotICAgICAgICBBU1NFUlQoY291bnQpOwotICAgICAgICBUOjpz
ZXRTY29wZVJlZW50cnlDb3VudCgtLWNvdW50KTsKLSAgICB9Ci0KLSAgICBib29sIG1faXNFbmFi
bGVkOwotI2VuZGlmIC8vIE5ERUJVRworI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVECisgICAg
QUxXQVlTX0lOTElORSBEaXNhbGxvd1Njb3BlKCkgeyB9IC8vIFdlIG5lZWQgdGhpcyB0byBwbGFj
YXRlIENsYW5nIGR1ZSB0byB1bnVzZWQgd2FybmluZ3MuCisgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgYm9vbCBpc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAkocmV2
aXNpb24gMjY0NTc0KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxv
d1ZNUmVlbnRyeS5oOjI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
c2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkRpc2FsbG93U2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIERpc2FsbG93Vk1SZWVudHJ5IDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJl
ZW50cnk+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7Cisg
ICAgdHlwZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOworcHVibGlj
OgorI2lmZGVmIE5ERUJVRworCisgICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRyeShi
b29sID0gZmFsc2UpIHsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZSgpIHsgfQorCisjZWxzZSAvLyBub3QgTkRFQlVHCisKKyAgICBEaXNhbGxvd1ZNUmVlbnRyeShi
b29sIGVuYWJsZWQgPSB0cnVlKQorICAgICAgICA6IEJhc2UoZW5hYmxlZCkKKyAgICB7IH0KKwor
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQorICAgIHsKKyAgICAgICAgc19zY29wZVJlZW50
cnlDb3VudC5jb25zdHJ1Y3QoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHVuc2ln
bmVkIHNjb3BlUmVlbnRyeUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiAqc19zY29wZVJl
ZW50cnlDb3VudC5nZXQoKTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQgc2V0U2NvcGVSZWVudHJ5
Q291bnQodW5zaWduZWQgdmFsdWUpCisgICAgeworICAgICAgICAqc19zY29wZVJlZW50cnlDb3Vu
dC5nZXQoKSA9IHZhbHVlOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1Ro
cmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7CisKKyNlbmRpZiAvLyBOREVCVUcKKwor
ICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlzYWxsb3dWTUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDQ3
ICsyNSw0MiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRpc2FsbG93U2NvcGUuaCIK
LSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3Bl
Y2lmaWMuaD4KLQogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIERpc2FsbG93Vk1SZWVudHJ5IDog
cHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7Ci0gICAgdHlwZWRlZiBEaXNhbGxvd1Njb3Bl
PERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOwotcHVibGljOgotI2lmZGVmIE5ERUJVRwotCi0gICAg
QUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRyeShib29sID0gZmFsc2UpIHsgfQotICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQorY2xhc3MgVk07CiAKLSNl
bHNlIC8vIG5vdCBOREVCVUcKLQotICAgIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgZW5hYmxlZCA9
IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVkKQotICAgIHsgfQotCi0gICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZSgpCisvLyBUaGUgb25seSByZWFzb24gd2UgaW1wbGVtZW50IERpc2FsbG93
Vk1FbnRyeSBhcyBzcGVjaWFsaXphdGlvbiBvZiBhIHRlbXBsYXRlCisvLyBpcyBzbyB0aGF0IHdl
IGNhbiB3b3JrIGFyb3VuZCBoYXZpbmcgdG8gI2luY2x1ZGUgVk0uaCwgd2hpY2ggY2FuIGh1cnQg
YnVpbGQKKy8vIHRpbWUuIFRoaXMgZGVmZXJzIHRoZSBjb3N0IG9mICNpbmNsdWRlJ2luZyBWTS5o
IHRvIG9ubHkgdGhlIGNsaWVudHMgdGhhdAorLy8gbmVlZCBpdC4KKwordGVtcGxhdGU8Y2xhc3Mg
Vk1UeXBlID0gVk0+CitjbGFzcyBEaXNhbGxvd1ZNRW50cnlJbXBsIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEaXNhbGxvd1ZNRW50cnlJbXBsKTsKK3B1YmxpYzoKKyAgICBEaXNhbGxvd1ZN
RW50cnlJbXBsKFZNVHlwZSYgdm0pCisgICAgICAgIDogbV92bSgmdm0pCiAgICAgewotICAgICAg
ICBzX3Njb3BlUmVlbnRyeUNvdW50LmNvbnN0cnVjdCgpOworICAgICAgICBtX3ZtLT5kaXNhbGxv
d1ZNRW50cnlDb3VudCsrOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBzdGF0aWMgdW5zaWduZWQg
c2NvcGVSZWVudHJ5Q291bnQoKQorICAgIH5EaXNhbGxvd1ZNRW50cnlJbXBsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAqc19zY29wZVJlZW50cnlDb3VudC5nZXQoKTsKKyAgICAgICAgaWYgKG1f
dm0pCisgICAgICAgICAgICByZWxlYXNlKCk7CiAgICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFNj
b3BlUmVlbnRyeUNvdW50KHVuc2lnbmVkIHZhbHVlKQorCisgICAgdm9pZCByZWxlYXNlKCkKICAg
ICB7Ci0gICAgICAgICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgpID0gdmFsdWU7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50KTsKKyAgICAgICAgbV92
bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQtLTsKKyAgICAgICAgbV92bSA9IG51bGxwdHI7CiAgICAg
fQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxUaHJl
YWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpUcnVlPj4gc19zY29wZVJl
ZW50cnlDb3VudDsKLQotI2VuZGlmIC8vIE5ERUJVRwotCi0gICAgZnJpZW5kIGNsYXNzIERpc2Fs
bG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+OworcHJpdmF0ZToKKyAgICBWTVR5cGUqIG1fdm07
CiB9OwogCit1c2luZyBEaXNhbGxvd1ZNRW50cnkgPSBEaXNhbGxvd1ZNRW50cnlJbXBsPFZNPjsK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRpc2FsbG93Vk1SZWVudHJ5LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotICAg
IAotI2lmbmRlZiBOREVCVUcKLUxhenlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNp
Z25lZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpUcnVlPj4gRGlzYWxsb3dWTVJlZW50cnk6OnNfc2Nv
cGVSZWVudHJ5Q291bnQ7Ci0jZW5kaWYKLSAgICAKLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5o
CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNh
bGxvd1ZNUmVlbnRyeS5oCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiRGlzYWxsb3dTY29wZS5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgot
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xh
c3MgRGlzYWxsb3dWTVJlZW50cnkgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVl
bnRyeT4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93Vk1SZWVudHJ5KTsKLSAg
ICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IEJhc2U7Ci1wdWJsaWM6
Ci0jaWZkZWYgTkRFQlVHCi0KLSAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93Vk1SZWVudHJ5KGJv
b2wgPSBmYWxzZSkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KCkgeyB9Ci0KLSNlbHNlIC8vIG5vdCBOREVCVUcKLQotICAgIERpc2FsbG93Vk1SZWVudHJ5KGJv
b2wgZW5hYmxlZCA9IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVkKQotICAgIHsgfQotCi0g
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpCi0gICAgewotICAgICAgICBzX3Njb3BlUmVlbnRy
eUNvdW50LmNvbnN0cnVjdCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgdW5zaWdu
ZWQgc2NvcGVSZWVudHJ5Q291bnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICpzX3Njb3BlUmVl
bnRyeUNvdW50LmdldCgpOwotICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTY29wZVJlZW50cnlD
b3VudCh1bnNpZ25lZCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgICpzX3Njb3BlUmVlbnRyeUNvdW50
LmdldCgpID0gdmFsdWU7Ci0gICAgfQotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhy
ZWFkOjpUcnVlPj4gc19zY29wZVJlZW50cnlDb3VudDsKLQotI2VuZGlmIC8vIE5ERUJVRwotCi0g
ICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw3ICsxMzksOCBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcoCiAK
ICAgICBKU1ZhbHVlIG5hbWVWYWx1ZTsKICAgICBhdXRvIG5hbWVQcm9wZXJ0TmFtZSA9IHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWU7Ci0gICAgUHJvcGVydHlTbG90IG5hbWVTbG90KHRoaXMsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIERpc2FsbG93Vk1F
bnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3BlcnR5U2xvdCBuYW1lU2xvdCh0aGlz
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dW
TUVudHJ5KTsKIAogICAgIEpTVmFsdWUgY3VycmVudE9iaiA9IHRoaXM7CiAgICAgdW5zaWduZWQg
cHJvdG90eXBlRGVwdGggPSAwOwpAQCAtMTY3LDcgKzE2OCw3IEBAIFN0cmluZyBFcnJvckluc3Rh
bmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIAogICAgIEpTVmFsdWUgbWVzc2FnZVZhbHVlOwogICAg
IGF1dG8gbWVzc2FnZVByb3BlcnROYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+bWVzc2FnZTsKLSAg
ICBQcm9wZXJ0eVNsb3QgbWVzc2FnZVNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IG1lc3NhZ2VTbG90KHRoaXMs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpOwogICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGdsb2Jh
bE9iamVjdCwgbWVzc2FnZVByb3BlcnROYW1lLCBtZXNzYWdlU2xvdCkgJiYgbWVzc2FnZVNsb3Qu
aXNWYWx1ZSgpKQogICAgICAgICBtZXNzYWdlVmFsdWUgPSBtZXNzYWdlU2xvdC5nZXRWYWx1ZShn
bG9iYWxPYmplY3QsIG1lc3NhZ2VQcm9wZXJ0TmFtZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluaXRp
YWxpemVUaHJlYWRpbmcuaCIKIAotI2luY2x1ZGUgIkRpc2FsbG93Vk1SZWVudHJ5LmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2lu
Y2x1ZGUgIkpTQ1B0clRhZy5oIgpAQCAtNzgsMTAgKzc3LDggQEAgdm9pZCBpbml0aWFsaXplKCkK
ICAgICAgICAgICAgIGVuYWJsZVNpZ2lsbENyYXNoQW5hbHl6ZXIoKTsKIAogICAgICAgICBMTElu
dDo6aW5pdGlhbGl6ZSgpOwotI2lmbmRlZiBOREVCVUcKICAgICAgICAgRGlzYWxsb3dHQzo6aW5p
dGlhbGl6ZSgpOwotICAgICAgICBEaXNhbGxvd1ZNUmVlbnRyeTo6aW5pdGlhbGl6ZSgpOwotI2Vu
ZGlmCisKICAgICAgICAgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwogICAgICAgICBUaHJlYWQm
IHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICB0aHJlYWQuc2V0U2F2ZWRMYXN0
U3RhY2tUb3AodGhyZWFkLnN0YWNrKCkub3JpZ2luKCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFr
b3YgKGFwQG55cG9wLmNvbSkKICAqCkBAIC05Niw4ICs5Niw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNyZWF0ZVdp
dGhCdXR0ZXJmbHkodm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwog
Ci0gICAgY29uc3QgYm9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBzY29wZS5u
b3RpZnlBbGxvY2F0ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVkKTsKKyAgICBzY29wZS5u
b3RpZnlBbGxvY2F0ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHly
aWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUwOCw5ICs1MDgsMTAgQEAgdm9pZCBKU0Z1
bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TgogICAgIGlmIChtb2RlLmluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMoKSkgewogICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFz
IGJlZW4gcmVpZmllZC4KLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAg
ICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzbG90KTsKLSAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwogCiAgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRh
YmxlKCktPmhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKSkgewogICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyk7CkBAIC01
NjMsOSArNTY0LDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG8K
ICAgICAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwogICAgICAgICAvLyBNYWtlIHN1cmUgcHJv
dG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3Jp
dHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIg
OC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRy
eSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IGdldFNsb3Qo
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0U2xvdCk7CisgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgICAgICB9CiAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNP
YmplY3QtPnJhcmVEYXRhKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRv
IHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpAQCAtNjQyLDkgKzY0NiwxMiBAQCBib29sIEpTRnVuY3Rp
b246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlw
ZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNoIHRoYXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0ZW4K
ICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIu
OS4KLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZmFsc2UpOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dW
TUVudHJ5KHZtKTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOworICAgICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgICAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgfQogICAgICAg
ICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSgp
KQogICAgICAgICAgICAgcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVy
dHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTYsOSArMTU2LDExIEBAIGlubGluZSBK
U09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAvLyBUaGlzIGdldFByb3BlcnR5U2xvdCBvcGVyYXRpb24gc2hvdWxkIG5vdCBiZSBvYnNl
cnZlZCBieSB0aGUgUHJveHkuCiAgICAgICAgICAgICAvLyBTbyB3ZSB1c2UgVk1JbnF1aXJ5LiBB
bmQgcHVyZ2UgdGhlIG9wYXF1ZSBvYmplY3QgY2FzZXMgKHByb3h5IGFuZCBuYW1lc3BhY2Ugb2Jq
ZWN0KSBieSBpc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpIGd1YXJkLgotICAgICAgICAgICAgUHJv
cGVydHlTbG90IGxlbmd0aFNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IGxlbmd0aFNsb3Qob2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVu
dHJ5KTsKICAgICAgICAgICAgIG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBsZW5ndGhTbG90KTsKLSAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5yZWxlYXNlKCk7CiAK
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDU3NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAxLDcgKzUwMSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldEds
b2JhbFRoaXMoVk0mIHYKIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGdldEdldHRlckJ5SWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQogewogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZShiYXNlKTsKLSAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkoZ2xv
YmFsT2JqZWN0LT52bSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OwogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xv
dCk7CiAgICAgcmV0dXJuIGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihzbG90LmdldFB1cmVSZXN1bHQo
KSk7CiB9CkBAIC0xMzgzLDEwICsxMzg0LDEzIEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEoKIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKIHsKICAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KG9iamVjdCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAg
Ly8gc2lsZW50bHkgaWdub3JlIGF0dGVtcHRzIHRvIGFkZCBhY2Nlc3NvcnMgYWxpYXNpbmcgdmFy
cy4KLSAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmIHN5bWJvbFRh
YmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodGhp
c09iamVjdC0+dm0oKSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOworICAgICAgICAvLyBzaWxlbnRseSBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIGFjY2Vzc29y
cyBhbGlhc2luZyB2YXJzLgorICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3Jp
cHRvcigpICYmIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJldHVybiBCYXNlOjpkZWZp
bmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCkBAIC0yMDUyLDcgKzIwNTYsOCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjCiAgICAgICAgIG1fYXJyYXlTcGVjaWVz
V2F0Y2hwb2ludFNldC5pbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJXYXMgbm90IGFi
bGUgdG8gc2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKSk7CiAgICAgfTsKIAotICAg
IFByb3BlcnR5U2xvdCBjb25zdHJ1Y3RvclNsb3QoYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIERpc2FsbG93Vk1FbnRyeSBk
aXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3BlcnR5U2xvdCBjb25zdHJ1Y3RvclNsb3QoYXJy
YXlQcm90b3R5cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZkaXNhbGxvd1ZNRW50cnkpOwogICAgIGFycmF5UHJvdG90eXBlLT5nZXRPd25Qcm9wZXJ0eVNs
b3QoYXJyYXlQcm90b3R5cGUsIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYg
KGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFycmF5UHJvdG90eXBlCkBAIC0yMDY2LDcg
KzIwNzEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjCiAgICAg
aWYgKGNvbnN0cnVjdG9yU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgY29uc3Ry
dWN0b3JTdHJ1Y3R1cmUgPSBjb25zdHJ1Y3RvclN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlT
dHJ1Y3R1cmUodm0sIGFycmF5Q29uc3RydWN0b3IpOwogCi0gICAgUHJvcGVydHlTbG90IHNwZWNp
ZXNTbG90KGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzcGVjaWVzU2xvdChhcnJheUNvbnN0cnVj
dG9yLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxs
b3dWTUVudHJ5KTsKICAgICBhcnJheUNvbnN0cnVjdG9yLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJy
YXlDb25zdHJ1Y3RvciwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3Bl
Y2llc1Nsb3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKHNwZWNp
ZXNTbG90LnNsb3RCYXNlKCkgIT0gYXJyYXlDb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVs
IChlcmljQHdlYmtpdC5vcmcpCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTUzNCw5ICs1MzQsMTEgQEAgU3Ry
aW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTTwogCiAgICAgLy8gQ2hlY2sgZm9y
IGEgZGlzcGxheSBuYW1lIG9mIG9iai5jb25zdHJ1Y3Rvci4KICAgICAvLyBUaGlzIGlzIHVzZWZ1
bCB0byBnZXQgYEZvb2AgZm9yIHRoZSBgKGNsYXNzIEZvbykucHJvdG90eXBlYCBvYmplY3QuCi0g
ICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICBpZiAob2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzbG90KSkg
ewotICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
b2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlz
YWxsb3dWTUVudHJ5KTsKKyAgICBib29sIGZvdW5kID0gb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBz
bG90KTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIGlmIChmb3VuZCkgewog
ICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCog
Y3Rvck9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgc2xvdC5nZXRWYWx1ZShn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoSlNGdW5jdGlvbiogY29uc3RydWN0b3JGdW5jdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KHZtLCBjdG9yT2JqZWN0KSkKQEAgLTU1OCw5ICs1NjAsMTAgQEAgU3Ry
aW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTTwogICAgICAgICAgICAgSlNWYWx1
ZSBwcm90b1ZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICAg
ICAgaWYgKHByb3RvVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgICAgIEpTT2JqZWN0
KiBwcm90b09iamVjdCA9IGFzT2JqZWN0KHByb3RvVmFsdWUpOwotICAgICAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHByb3RvVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwotICAgICAgICAgICAgICAgIGlmIChwcm90b09iamVjdC0+Z2V0UHJv
cGVydHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNs
b3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChwcm90b1ZhbHVlLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVu
dHJ5KTsKKyAgICAgICAgICAgICAgICBib29sIGZvdW5kID0gcHJvdG9PYmplY3QtPmdldFByb3Bl
cnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzbG90
KTsKKyAgICAgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICAg
ICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1ZhbHVl
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKU09iamVjdCogY3Rvck9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoSlNGdW5jdGlvbiogY29uc3RydWN0b3JGdW5jdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KHZtLCBjdG9yT2JqZWN0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyNjQ1NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTg0LDYgKzU4NCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6
Z2V0UHJpdmF0ZUYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNldCk7CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NF
UlQodmFsdWUpOwogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgewogICAgICAgICBKU0NlbGwqIGNl
bGwgPSB2YWx1ZS5hc0NlbGwoKTsKQEAgLTU5NCw2ICs1OTUsNyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OmdldFByaXZhdGVGCiAgICAgICAgIC8vIGFzIGluIEpTT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5U2xvdCgpCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzUKICAgICB9CisjZW5kaWYKIAogICAgIHNsb3Quc2V0
VmFsdWUob2JqZWN0LCBhdHRyaWJ1dGVzLCB2YWx1ZSwgb2Zmc2V0KTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTYwNCw2ICs2MDYsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZp
ZWxkKEpTCiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKCFKU09iamVjdDo6Z2V0UHJpdmF0
ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAg
ICAgICAgQVNTRVJUKHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9i
amVjdCkpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZhbHNlKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNTIsOCArMTUyLDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBh
YnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OwogICAgICAgICBib29sIGhhc093blByb3BlcnR5ID0gZ2xvYmFsT2JqZWN0LT5nZXRPd25Qcm9w
ZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKKyAgICAg
ICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICBkaXNhbGxvd1ZNRW50
cnkucmVsZWFzZSgpOwogICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KSB7CiAgICAgICAgICAg
ICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShVbnJlc29sdmVkUHJvcGVydHksIG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCShyZXZpc2lvbiAy
NjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXph
dGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCwxMCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAorCiBPYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkK
ICAgICA6IG1fdm0odm0pCi0gICAgLCBtX2Rpc2FsbG93R0MoZmFsc2UpCi0gICAgLCBtX2Rpc2Fs
bG93Vk1SZWVudHJ5KGZhbHNlKQogewogfQogCkBAIC01MCwyMSArNDksMjAgQEAgT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYQogICAgIHZlcmlmeVByb3BlcnRpZXNBcmVJ
bml0aWFsaXplZChtX29iamVjdCk7CiB9CiAKLXZvaWQgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZTo6bm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiBvYmplY3QsIGJvb2wgd2FzQ3JlYXRlZFVuaW5p
dGlhbGl6ZWQpCit2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRl
ZChKU09iamVjdCogb2JqZWN0KQogewotICAgIGlmICh3YXNDcmVhdGVkVW5pbml0aWFsaXplZCkg
ewotICAgICAgICBtX2Rpc2FsbG93R0MuZW5hYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJl
ZW50cnkuZW5hYmxlKCk7Ci0gICAgICAgIG1fb2JqZWN0ID0gb2JqZWN0OwotICAgIH0gZWxzZQot
ICAgICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKKyAgICBBU1NF
UlQoIW1fZGlzYWxsb3dHQyk7CisgICAgQVNTRVJUKCFtX2Rpc2FsbG93Vk1FbnRyeSk7CisgICAg
bV9kaXNhbGxvd0dDLmVtcGxhY2UoKTsKKyAgICBtX2Rpc2FsbG93Vk1FbnRyeS5lbXBsYWNlKG1f
dm0pOworICAgIG1fb2JqZWN0ID0gb2JqZWN0OwogfQogCiB2b2lkIE9iamVjdEluaXRpYWxpemF0
aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYg
KG1fb2JqZWN0KSB7Ci0gICAgICAgIG1fZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAgICAgIG1f
ZGlzYWxsb3dWTVJlZW50cnkuZGlzYWJsZSgpOworICAgICAgICBtX2Rpc2FsbG93R0MucmVzZXQo
KTsKKyAgICAgICAgbV9kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgbV9vYmplY3Qg
PSBudWxscHRyOwogICAgIH0KICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2Jq
ZWN0KTsKQEAgLTExNCw2ICsxMTIsNyBAQCB2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6
OnZlcmlmeVByCiAgICAgICAgIH0KICAgICB9CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAko
cmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNTQgKzI2LDU1IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRlZmVyR0MuaCIKLSNpbmNsdWRlICJEaXNhbGxv
d1ZNUmVlbnRyeS5oIgorI2luY2x1ZGUgIkRpc2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUgIlZN
LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBWTTsKIGNsYXNzIEpTT2JqZWN0OwogCi0jaWZkZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJM
RUQKIAogY2xhc3MgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSB7CiBwdWJsaWM6Ci0gICAgQUxX
QVlTX0lOTElORSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKLSAgICAgICAgOiBt
X3ZtKHZtKQotICAgIHsgfQotICAgIEFMV0FZU19JTkxJTkUgfk9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUoKQotICAgIHsKLSAgICAgICAgbV92bS5oZWFwLm11dGF0b3JGZW5jZSgpOwotICAgIH0K
KyAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKIAotICAg
IEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqLCBib29sKSB7IH0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBW
TSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CisgICAgdm9pZCBub3RpZnlBbGxvY2F0ZWQo
SlNPYmplY3QqKTsKKyAgICB2b2lkIG5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0Kik7CiAKIHBy
aXZhdGU6CisgICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQoSlNPYmplY3Qq
KTsKKwogICAgIFZNJiBtX3ZtOworICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlzYWxsb3dH
QzsKKyAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IG1fZGlzYWxsb3dWTUVudHJ5OworICAg
IEpTT2JqZWN0KiBtX29iamVjdCB7IG51bGxwdHIgfTsKIH07CiAKLSNlbHNlIC8vIG5vdCBOREVC
VUcKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogCiBjbGFzcyBPYmplY3RJbml0aWFsaXph
dGlvblNjb3BlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlKFZNJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUoKTsKKyAgICBBTFdBWVNfSU5MSU5FIE9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisgICAgeyB9CisgICAgQUxXQVlTX0lOTElO
RSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSgpCisgICAgeworICAgICAgICBtX3ZtLmhlYXAu
bXV0YXRvckZlbmNlKCk7CisgICAgfQogCi0gICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92
bTsgfQotICAgIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiwgYm9vbCB3YXNDcmVhdGVk
VW5pbml0aWFsaXplZCk7Ci0gICAgdm9pZCBub3RpZnlJbml0aWFsaXplZChKU09iamVjdCopOwor
ICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KIAogcHJpdmF0
ZToKLSAgICB2b2lkIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChKU09iamVjdCopOwot
CiAgICAgVk0mIG1fdm07Ci0gICAgRGlzYWxsb3dHQyBtX2Rpc2FsbG93R0M7Ci0gICAgRGlzYWxs
b3dWTVJlZW50cnkgbV9kaXNhbGxvd1ZNUmVlbnRyeTsKLSAgICBKU09iamVjdCogbV9vYmplY3Qg
eyBudWxscHRyIH07CiB9OwogCi0jZW5kaWYgLy8gTkRFQlVHCisjZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNiArMjEs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01Bbm5vdGF0aW9uLmgiCisjaW5jbHVk
ZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiR2V0Vk0uaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCkBAIC0xMTIsMTAgKzExMywxMSBA
QCBwdWJsaWM6CiAgICAgICAgIE1vZHVsZU5hbWVzcGFjZSwgLy8gTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0J3MgZW52aXJvbm1lbnQgYWNjZXNzLgogICAgIH07CiAKLSAgICBleHBsaWNpdCBQcm9wZXJ0
eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUsIEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5h
bE1ldGhvZFR5cGUpCisgICAgZXhwbGljaXQgUHJvcGVydHlTbG90KGNvbnN0IEpTVmFsdWUgdGhp
c1ZhbHVlLCBJbnRlcm5hbE1ldGhvZFR5cGUgaW50ZXJuYWxNZXRob2RUeXBlLCBEaXNhbGxvd1ZN
RW50cnkqIGRpc2FsbG93Vk1FbnRyeSA9IG51bGxwdHIpCiAgICAgICAgIDogbV90aGlzVmFsdWUo
dGhpc1ZhbHVlKQogICAgICAgICAsIG1faW50ZXJuYWxNZXRob2RUeXBlKGludGVybmFsTWV0aG9k
VHlwZSkKICAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZGlzYWxsb3dWTUVudHJ5LCAoaW50
ZXJuYWxNZXRob2RUeXBlID09IEludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSA9PSAhIWRp
c2FsbG93Vk1FbnRyeSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNsb3RC
YXNlIC8gcmVjZWl2ZXIgYmVoYXZpb3IgZGlmZmVyZW5jZSBpbiBjdXN0b20gdmFsdWVzIGFuZCBj
dXN0b20gYWNjZXNzb3JzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw4ICs1NCw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0
aWEKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHko
dm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogCi0gICAgY29uc3Qg
Ym9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBzY29wZS5ub3RpZnlBbGxvY2F0
ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVkKTsKKyAgICBzY29wZS5ub3RpZnlBbGxvY2F0
ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw4ICs3MjcsOSBAQCBTdHJpbmcgU2FtcGxpbmdQ
cm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtCiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+
Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZt
KTsKICAgICBhdXRvIGdldFByb3BlcnR5SWZQdXJlT3BlcmF0aW9uID0gWyZdIChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgLT4gU3RyaW5nIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoY2Fs
bGVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoY2FsbGVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICAgICAgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZShpZGVudCk7CiAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBjYWxsZWUt
PmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAg
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0NCw2ICs2NDQsOCBAQCBwdWJsaWM6CiAjdW5k
ZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIKIAogICAgIFZNVHlwZSB2bVR5
cGU7CisgICAgdW5zaWduZWQgZGlzYWxsb3dWTUVudHJ5Q291bnQgeyAwIH07CisKICAgICBDbGll
bnREYXRhKiBjbGllbnREYXRhOwogICAgIEVudHJ5RnJhbWUqIHRvcEVudHJ5RnJhbWUgeyBudWxs
cHRyIH07CiAgICAgLy8gTk9URTogV2hlbiB0aHJvd2luZyBhbiBleGNlcHRpb24gd2hpbGUgcm9s
bGluZyBiYWNrIHRoZSBjYWxsIGZyYW1lLCB0aGlzIG1heSBiZSBlcXVhbCB0bwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCShyZXZpc2lv
biAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50
cnkuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5o
IgogI2luY2x1ZGUgIlZNLmgiCkBAIC0zOSw3ICszOCw2IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRy
eVNjb3BlKFZNJiB2bSwgSlNHbG8KICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2dsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QpCiB7Ci0gICAgQVNTRVJUKCFEaXNhbGxvd1ZNUmVlbnRyeTo6aXNJbkVm
ZmVjdE9uQ3VycmVudFRocmVhZCgpKTsKICAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKICAgICAg
ICAgdm0uZW50cnlTY29wZSA9IHRoaXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5NSw5ICsy
ODk1LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9JZGVudGlmaWVyKGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFBy
b3BlcnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgdmFsdWUuZ2V0UHJvcGVydHlT
bG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKICAg
ICBKU1ZhbHVlIHJlc3VsdDsKICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDctMTkgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IERpc2FsbG93U2NvcGUsIERp
c2FsbG93R0MsIGFuZCBEaXNhbGxvd1ZNUmVlbnRyeSBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY1Nzk1NzI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6YWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVQdXQpOgorICAg
ICAgICAoR2VuZXJhdGVQdXRCeUluZGV4KToKKyAgICAgICAgKEdlbmVyYXRlRGVmaW5lT3duUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXRCeUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJvcGVydHkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1
dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlcjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmRlZmluZU93blByb3BlcnR5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnB1dCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0QnlJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllczo6ZGVmaW5lT3duUHJvcGVydHkpOgorCiAyMDIwLTA3LTE5ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgQ29sb3JCdWlsZGVyCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNyArNTksOCBAQCBzdGF0aWMg
Ym9vbCBpc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQgUCwgdGhlbiBy
ZXR1cm4gZmFsc2UuCi0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0LCBK
U0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICBK
U0M6OkRpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpKTsKKyAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90KCZ0aGlzT2JqZWN0LCBKU0M6OlByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OwogICAgIGlmIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3Qs
ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCkBAIC05OSw3ICsxMDAsOCBAQCBzdGF0aWMgYXV0byBhY2Nlc3NWaXNp
YmxlTmFtZWRQcm9wZXJ0eShKCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAv
LyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQgUCwgdGhlbiByZXR1cm4gZmFsc2Uu
Ci0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICBKU0M6OkRpc2FsbG93
Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKKyAgICBK
U0M6OlByb3BlcnR5U2xvdCBzbG90KCZ0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgIGlmIChK
U0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsICZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTk2NSw5
ICs5NjUsMTQgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAgIAogICAgICAgICBteSAkb3ZlcnJp
ZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRp
bnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7CiAgICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgYm9vbCBmb3VuZDtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9i
amVjdC0+dm0oKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAg
ICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB9XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFmb3VuZCkge1xuIik7
CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KIApA
QCAtMTA0MSw5ICsxMDQ2LDE0IEBAIHN1YiBHZW5lcmF0ZVB1dEJ5SW5kZXgKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgbXkgJGFkZGl0aW9uYWxJbmRlbnQgPSAiIjsKICAgICAgICAgaWYgKCEk
b3ZlcnJpZGVCdWlsdGlucykgewotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSB9O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEo
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBib29sIGZvdW5kO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnko
dm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFmb3VuZCkge1xuIik7
CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC0xMTc2LDggKzExODYsMTMgQEAgc3ViIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVy
dHkKICAgICAgICAgICAgICMgRklYTUU6IElzIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qg
dGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGNhbGw/IElzIHRoZXJlIGEgZnVuY3Rpb24gdGhhdCB3aWxs
CiAgICAgICAgICAgICAjICAgICAgICBvbmx5IGxvb2sgYXQgdGhlIGFjdHVhbCBwcm9wZXJ0aWVz
LCBhbmQgbm90IGNhbGwgaW50byBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgICAgICAgICAg
ICAjICAgICAgICBbW0dldE93blByb3BlcnR5XV0gaG9vaz8KLSAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSB9O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5k
ZW50LiAiICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkge1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICBi
b29sIGZvdW5kO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlv
bmFsSW5kZW50LiAiICAgICAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTtcbiIpOworICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgICAgICBmb3VuZCA9IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgfVxuIik7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICBpZiAoIWZvdW5kKSB7
XG4iKTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAg
fQogICAgICAgICBpZiAoISRuYW1lZFNldHRlck9wZXJhdGlvbikgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzQsOSArMjM0LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGkKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVu
dHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAg
ICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI2Myw5ICsyNjgsMTQgQEAgYm9vbCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgIH0KIAogICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZk
aXNhbGxvd1ZNRW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjkyLDggKzMwMiwxMyBA
QCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgfQogCiAgICAg
aWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAg
Ym9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNh
bGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsy
MzQsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgIH0K
IAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
KyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVu
dHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlm
ICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRy
dWUpOwpAQCAtMjYzLDkgKzI2OCwxNCBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nCiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICgh
KHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJv
b2wgZm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5
KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KTsKKyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgdHJ1ZSk7CkBAIC0yOTIsOCArMzAyLDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmcKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7
CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxs
b3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXBy
b3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQzLDkgKzI0MywxNCBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVuCiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7
CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93
Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNzIsOSArMjc3LDE0IEBAIGJvb2wg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICB9CiAKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsKKyAgICB7CisgICAgICAgIERpc2Fs
bG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoIWZvdW5k
KSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTMwMSw4ICszMTEs
MTMgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgIH0KIAog
ICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAg
ICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkg
ZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgIGZvdW5k
ID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91
bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0
b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDcsOSArMjA3LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXI6OnB1dCgKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+
Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
KSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93
Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB0cnVlKTsKQEAgLTIyOCw5ICsyMzMsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllcjo6cHV0QgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwg
aW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5k
OworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7Cisg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CisgICAg
ICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+
Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHRydWUpOwpAQCAtMjQ3LDggKzI1NywxMyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyOjpkZWZpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgIERpc2Fs
bG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7Cisg
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAg
ICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNE
YXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5ICsyMDcsMTQgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAg
ICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNh
bGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjI4LDkgKzIzMywxNCBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50
cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2Fs
bG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNDcsOCArMjU3LDEzIEBAIGJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBp
ZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kOworICAg
ICAgICB7CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
ZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBp
ZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDkg
KzIxMywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYg
KCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBi
b29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0y
MzQsOSArMjM5LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsKKyAgICB7CisgICAg
ICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAgICBmb3VuZCA9IHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBp
ZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI1
Myw4ICsyNjMsMTMgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZQog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAg
IGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAg
IGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlz
YWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgIGZvdW5kID0g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQp
IHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3Io
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsOSArMjM1LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0g
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsK
KyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91
bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI1Niw5ICsyNjEsMTQgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBp
ZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAg
ICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1F
bnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwor
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjc4LDggKzI4OCwxMyBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIGJv
b2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgIGZvdW5kID0gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsK
ICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsOSArMjQzLDE0
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEKICAgICB9CiAKICAg
ICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYg
KCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVy
dHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAg
ICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBk
aXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmpl
Y3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZv
dW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsK
QEAgLTI3Miw5ICsyNzcsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQQogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90
b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qo
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZv
dW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7
CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Cisg
ICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRydWUpOwpAQCAtMzAxLDggKzMxMSwxMyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBCiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2wo
KSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAg
ICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1F
bnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0
eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJ
KHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzMSw5ICsyMzEsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsK
KyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9Cisg
ICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAg
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHRydWUpOwpAQCAtMjUyLDkgKzI1NywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wg
Zm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZt
KTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsK
KyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgdHJ1ZSk7CkBAIC0yNzcsOCArMjg3LDEzIEBAIHN0YXRpYyBib29sIGlzVW5mb3JnZWFi
bGVQcm9wZXJ0eU5hbWUoUHIKIH0KIAogICAgICAgICBpZiAoIWlzVW5mb3JnZWFibGVQcm9wZXJ0
eU5hbWUocHJvcGVydHlOYW1lKSkgewotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07
Ci0gICAgICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICAg
ICAgYm9vbCBmb3VuZDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgRGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAg
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAg
ICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVy
dHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404696</attachid>
            <date>2020-07-19 20:39:57 -0700</date>
            <delta_ts>2020-07-20 16:46:44 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539.patch</filename>
            <type>text/plain</type>
            <size>116481</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MiBA
QAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5kIERpc2FsbG93Vk1SZWVudHJ5
IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU3OTU3Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
RGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFibGluZyBhbmQgZGlzYWJsaW5nLiAg
VGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5hYmxlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93LCB3ZQorICAgICAgICBjYW4gbWFr
ZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50cnkgaW5zaWRlIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0aCBXVEY6Ok9wdGlvbmFsLiAgV2l0
aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMgYW5kIG1ha2UKKyAgICAgICAgdGhl
bSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAgICBIb3dldmVyLCB0aGVyZSBpcyBz
dGlsbCBvbmUgZXhjZXB0aW9uOiBEaXNhbGxvd1ZNUmVlbnRyeSBuZWVkcyBhIHJlbGVhc2UoKSBt
ZXRob2QKKyAgICAgICAgdG8gYWxsb3cgaXQgdG8gZGlzYWJsZSB0aGUgUkFJSSBzY29wZSBhaGVh
ZCBvZiBkZXN0cnVjdGlvbi4gIFRoZSByZWFzb24gZm9yIHRoaXMKKyAgICAgICAgaXMgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgZW5mb3JjZSB0aGF0IFByb3BlcnR5U2xvdHMgd2l0aCBWTUlu
cXVpcnkgaW50ZXJuYWwKKyAgICAgICAgbWV0aG9kIHR5cGUgd2lsbCBhbHdheXMgYmUgYWNjb21w
YW5pZWQgYnkgYSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0byBkaXNhYmxlCisgICAgICAgIGNh
bGxpbmcgYmFjayBpbnRvIEpTLiAgSG93ZXZlciwgdGhpcyBvbmx5IG5lZWQgdG8gYmUgZW5mb3Jj
ZWQgd2hpbGUgY2FsbGluZyBpbnRvCisgICAgICAgIGdldFByb3BlcnR5U2xvdCgpLiAgVGhlcmVh
ZnRlciwgdGhlIGNsaWVudCBtYXkgdXNlIHRoZSByZXN1bHRzIHJldHVybmVkIGluIHRoZQorICAg
ICAgICBQcm9wZXJ0eVNsb3QgdG8gbWFrZSBkZWNpc2lvbnMgb24gdGFraW5nIGFjdGlvbiB0aGF0
IG1heSBlbnRhaWwgY2FsbGluZyBpbnRvIEpTLgorICAgICAgICBUaGlzIG1ha2VzIG1hbmFnaW5n
IHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0cmlja3kuICBU
bworICAgICAgICB3b3JrYXJvdW5kIHRoaXMsIHdlIGxldCBEaXNhbGxvd1ZNUmVlbnRyeSBoYXZl
IGEgcmVsZWFzZSgpIG1ldGhvZCB0aGF0IGJhc2ljYWxseQorICAgICAgICBkb2VzIGFuIGVhcmx5
IHJlbGVhc2Ugb2YgcGVybWlzc2lvbiB0byBjYWxsIGludG8gSlMuICBUaGUgcmVsZWFzZSgpIG1l
dGhvZCBzaG91bGQKKyAgICAgICAgb25seSBiZSB1c2VkIGluIHBsYWNlcyB3aGVyZSB3ZSBjYW4n
dCByZWx5IG9uIGRlc3RydWN0aW9uIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeQorICAgICAgICBz
Y29wZSB0byB0YWtlIGNhcmUgb2YgdGhlIHJlbGVhc2UgYXV0b21hdGljYWxseS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUs
IGFuZCBhbHNvCisgICAgICAgICAgIGxheXMgdGhlIGdyb3VuZCB3b3JrIGluIGNhc2Ugd2Ugd2Fu
dCB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIG1vZGVzIG9mIGRpc2FibGluZworICAgICAgICAgICBW
TSBlbnRyeSBpbnN0ZWFkIG9mIGNyYXNoaW5nIGUuZy4gc2lsZW50IHJlamVjdGlvbnMgKGp1c3Qg
c2ltcGx5IGNob29zaW5nIG5vdAorICAgICAgICAgICB0byBjYWxsIGludG8gSlMsIGFuZCBhbHdh
eXMgcmV0dXJuaW5nIHVuZGVmaW5lZCkgaWYgd2UgbmVlZCBpdCBpbiB0aGUgZnV0dXJlLgorICAg
ICAgICAgICBGb3Igbm93LCB0aGUgb25seSBtb2RlIG9mIGRpc2FsbG93aW5nIGVudHJ5IGlzIHRv
IGNyYXNoLgorCisgICAgICAgIDMuIENoYW5nZSBEaXNhbGxvd1Njb3BlIGFuZCBEaXNhbGxvd0dD
IHRvIGJlIGJhc2VkIG9uIEFTU0VSVF9FTkFCTEVEIGluc3RlYWQgb2YgTkVCVUcuCisKKyAgICAg
ICAgNC4gTWFrZSBEaXNhbGxvd1ZNRW50cnkgYWx3YXlzIGVuZm9yY2VhYmxlLCBub3QganVzdCB3
aGVuIEFTU0VSVF9FTkFCTEVELgorCisgICAgICAgIDUuIEFkZCBEaXNhbGxvd1ZNRW50cnkgc2Nv
cGVzIHdoZW5ldmVyIHdlIGNyZWF0ZSBhIFByb3BlcnR5U2xvdCBmb3IgVk1JbnF1aXJ5LgorICAg
ICAgICAgICBUaGUgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yIHdpbGwgbm93IHRha2UgYW4gb3B0
aW9uYWwgRGlzYWxsb3dWTUVudHJ5IHBvaW50ZXIuCisgICAgICAgICAgIElmIHRoZSBzbG90J3Mg
c3BlY2lmaWVkIGludGVybmFsIG1ldGhvZCB0eXBlIGlzIFZNSW5xdWlyeSwgdGhlbiB3ZSdsbAor
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCB0aGF0IHRoZSBEaXNhbGxvd1ZNRW50cnkgcG9pbnRl
ciBpcyBub24tbnVsbC4KKworICAgICAgICA2LiBGaXhlZCBhIGJ1ZyBpbiBsbGludF9zbG93X3Bh
dGhfZ2V0X3ByaXZhdGVfbmFtZSgpLiAgSXQgc2hvdWxkIGJlIHBhc3NpbmcKKyAgICAgICAgICAg
R2V0T3duUHJvcGVydHkgdG8gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZCgpIGluc3RlYWQgb2Yg
Vk1JbnF1aXJ5LgorICAgICAgICAgICBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKCkgY2FuIHRo
cm93IGFuIGV4Y2VwdGlvbiwgd2hpY2ggbWFrZXMgaXQgbm90CisgICAgICAgICAgIGFwcHJvcHJp
YXRlIGZvciBhIFZNSW5xdWlyeS4gIFRoZXJlIGlzIGFsc28gbm8gY3VycmVudCBjbGllbnQgdGhh
dCBuZWVkcyBpdAorICAgICAgICAgICB0byBoYW5kbGUgYSBWTUlucXVpcnkuICBBZGRlZCBhbiBh
c3NlcnRpb24gaW4gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZCgpIHRvCisgICAgICAgICAgIHZl
cmlmeSB0aGF0IHRoZSBjbGllbnQgd2lsbCBub3QgYmUgcmVxdWVzdGluZyBhIFZNSW5xdWlyeS4K
KworICAgICAgICA3LiBBZGRlZCBQcm9wZXJ0eVNsb3Q6OmlzVk1JbnF1aXJ5KCkgY29udmVuaWVu
Y2UgcXVlcnkgbWV0aG9kLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIGhlYXAvRGVmZXJHQy5jcHA6CisgICAgICAgICogaGVhcC9EZWZlckdDLmg6CisgICAgICAg
IChKU0M6OkRpc2FsbG93R0M6OkRpc2FsbG93R0MpOgorICAgICAgICAoSlNDOjpEaXNhbGxvd0dD
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgor
ICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9n
cmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlTW9k
dWxlUHJvZ3JhbSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X2NoZWNrX3ZtX2VudHJ5
X3Blcm1pc3Npb24pOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dTY29w
ZS5oOgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpEaXNhbGxvd1Njb3BlKToKKyAgICAg
ICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6fkRpc2FsbG93U2NvcGUpOgorICAgICAgICAoSlNDOjpE
aXNhbGxvd1Njb3BlOjppc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6
RGlzYWxsb3dTY29wZTo6ZW5hYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dT
Y29wZTo6ZGlzYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmVu
dGVyU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpleGl0U2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dWTUVudHJ5Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5Lmgu
CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6OkRpc2FsbG93Vk1FbnRyeUltcGwp
OgorICAgICAgICAoSlNDOjpEaXNhbGxvd1ZNRW50cnlJbXBsOjp+RGlzYWxsb3dWTUVudHJ5SW1w
bCk6CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6OnJlbGVhc2UpOgorICAgICAg
ICAoSlNDOjpEaXNhbGxvd1ZNUmVlbnRyeTo6RGlzYWxsb3dWTVJlZW50cnkpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpEaXNhbGxvd1ZNUmVlbnRyeTo6aW5pdGlhbGl6ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5OjpzY29wZVJlZW50cnlDb3VudCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5OjpzZXRTY29wZVJlZW50cnlDb3Vu
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9y
SW5zdGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkUmVzdHJpY3RlZCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldEdldHRlckJ5SWQpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FsY3Vs
YXRlZENsYXNzTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
Y3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgICogcnVudGltZS9P
YmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0SW5pdGlh
bGl6YXRpb25TY29wZTo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6CisgICAgICAgIChKU0M6
Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRlZCk6CisgICAgICAgIChK
U0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKToKKyAgICAg
ICAgKiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaDoKKyAgICAgICAgKEpTQzo6
T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6dm0gY29uc3QpOgorICAgICAgICAoSlNDOjpPYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKToKKyAgICAg
ICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3RpZnlB
bGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3Rp
ZnlJbml0aWFsaXplZCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVNsb3Q6OmlzVk1JbnF1aXJ5IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5oOgorICAgICAgICAoSlNDOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhw
TWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpuYW1lRnJvbUNhbGxl
ZSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAg
ICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldEdl
dHRlclNldHRlcik6CisKIDIwMjAtMDctMTkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVq
aWlAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBub24tdW5pZmllZCBzb3VyY2UgYnVp
bGQgZml4CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
NjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTgzNSw3ICs4MzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuaAogICAgIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5oCi0g
ICAgcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oCisgICAgcnVudGltZS9EaXNhbGxvd1ZNRW50
cnkuaAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuaAogICAgIHJ1bnRpbWUvRUNNQU1vZGUuaAog
ICAgIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NjYsNyArNzY2LDYgQEAgcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcAogcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwCiBydW50aW1lL0RpcmVj
dEFyZ3VtZW50c09mZnNldC5jcHAKIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCi1y
dW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAogcnVudGltZS9Eb3VibGVQcmVkaWN0aW9uRnV6
emVyQWdlbnQuY3BwCiBydW50aW1lL0R1bXBDb250ZXh0LmNwcAogcnVudGltZS9FQ01BTW9kZS5j
cHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
Mjk4LDggKzI5OCwxMyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2Vs
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rp
b25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhnbG9i
YWxPYmplY3QpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVu
dHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQobmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
UHJvcGVydHlTbG90IGdldFNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChQYXJlbnQ6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
Z2V0U2xvdCkpCisgICAgICAgICAgICAgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxv
d1ZNRW50cnkodm0pOworICAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IGdldFNs
b3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFBh
cmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXRTbG90KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAoZm91bmQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFyZW50Ojpw
dXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTY2OCw5ICs2NzMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OgogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRo
aXNWYWx1ZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlkZSBwcm9w
ZXJ0eS4KLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdDIodGhpc09iaiwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90MikpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdDIuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDIodGhpc09iaiwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7Cisg
ICAgICAgIGJvb2wgZm91bmQgPSBQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdDIpOworICAgICAgICBkaXNhbGxvd1ZNRW50
cnkucmVsZWFzZSgpOworICAgICAgICBpZiAoZm91bmQpCisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7
CisgICAgfQogCiAgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkp
IHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigp
OyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTkxNiw3ICsxOTE2LDcgQEAKIAkJRkU1MzNDQTUxRjIxN0RCMzAwMTZBMUZF
IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24u
ZnJhbWV3b3JrICovOyB9OwogCQlGRTUzM0NBNjFGMjE3REIzMDAxNkExRkUgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayAqLzsgfTsKIAkJRkU1MzNDQUQxRjIxN0VBNTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTMzQ0EwMUYy
MTdDMzEwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAgKi87IH07Ci0JCUZFNTRERUZCMUU4QzZEODgw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93
Vk1SZWVudHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRkU1NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NERFRkExRThDNkQ3
MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNTRERUZGMUU4RDc2RkEwMEE4OTJDNSAvKiBEaXNh
bGxvd1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTU0REVGRTFFOEQ3NDI4MDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNTYyOENFMUU5OTUxMzIw
MEM0OUU0NSAvKiBBaXJQcmludFNwZWNpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTYyOENDMUU5OTUxMjQwMEM0OUU0NSAvKiBBaXJQcmludFNw
ZWNpYWwuaCAqLzsgfTsKIAkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMy
QTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MjAxLDggKzUyMDEsNyBAQAogCQlGRTUw
Njg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVycmVkU291cmNlRHVtcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTMzQ0EwMUYyMTdDMzEwMDE2QTFGRSAvKiB0ZXN0
bWFzbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0ZXN0bWFzbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFNTMzQ0FDMUYyMTdEQjQwMDE2QTFGRSAvKiB0ZXN0bWFzbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdG1hc207IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCUZFNTRERUZBMUU4QzZENzIwMEE4
OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNhbGxvd1ZNUmVlbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
RTU0REVGQzFFOEM2REZGMDBBODkyQzUgLyogRGlzYWxsb3dWTVJlZW50cnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzYWxsb3dWTVJlZW50cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlz
YWxsb3dWTUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93
Vk1FbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU0REVGRTFFOEQ3NDI4
MDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNhbGxvd1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTYy
OENCMUU5OTUxMjQwMEM0OUU0NSAvKiBBaXJQcmludFNwZWNpYWwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyUHJpbnRTcGVjaWFsLmNwcDsgcGF0aCA9IGIzL2Fp
ci9BaXJQcmludFNwZWNpYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU2
MjhDQzFFOTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEFpclByaW50U3BlY2lhbC5oOyBwYXRoID0gYjMvYWlyL0FpclBy
aW50U3BlY2lhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE0Myw4ICs3MTQy
LDcgQEAKIAkJCQkxNDM4NkE3MjFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuY3BwICovLAogCQkJCTE0Mzg2QTczMURENjk4OTUwMDg2NTJDNCAvKiBEaXJlY3RFdmFsRXhl
Y3V0YWJsZS5oICovLAogCQkJCUZFNTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNhbGxvd1Nj
b3BlLmggKi8sCi0JCQkJRkU1NERFRkMxRThDNkRGRjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVu
dHJ5LmNwcCAqLywKLQkJCQlGRTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTVJl
ZW50cnkuaCAqLywKKwkJCQlGRTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTUVu
dHJ5LmggKi8sCiAJCQkJRTMxNjE4MTAxRUM1RkUwODAwMDZBMjE4IC8qIERPTUFubm90YXRpb24u
aCAqLywKIAkJCQlFMzE2MTgxMTFFQzVGRTA4MDAwNkEyMTggLyogRE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyLmNwcCAqLywKIAkJCQlFMzE2MTgxMjFFQzVGRTA4MDAwNkEyMTggLyogRE9NQXR0cmli
dXRlR2V0dGVyU2V0dGVyLmggKi8sCkBAIC05NDgyLDcgKzk0ODAsNyBAQAogCQkJCTE0Mzg2QTc1
MURENjk4OTUwMDg2NTJDNCAvKiBEaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzNzMwOEYxQzBDRDY4NTAwMDUyQkZBIC8qIERpc2FsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1NERFRkYxRThENzZGQTAwQTg5MkM1
IC8qIERpc2FsbG93U2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFNTRERUZCMUU4QzZEODgw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU1NERF
RkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGNDI3MzExNThFQkQ1NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzMTYxODE1MUVDNUZFMjcwMDA2QTIxOCAvKiBET01BdHRyaWJ1dGVH
ZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvRGVmZXJHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvRGVmZXJHQy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0RlZmVyR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogTGF6
eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJl
YWQ6OlRydWU+PiBEaXNhbGxvd0dDOjpzX3Njb3BlUmVlbnRyeUNvdW50OwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgJKHJldmlzaW9uIDI2NDU3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkod29ya2luZyBjb3B5KQpAQCAt
NzcsMTYgKzc3LDggQEAgY2xhc3MgRGlzYWxsb3dHQyA6IHB1YmxpYyBEaXNhbGxvd1Njb3BlPAog
ICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOwogICAgIHR5cGVkZWYgRGlzYWxsb3dTY29w
ZTxEaXNhbGxvd0dDPiBCYXNlOwogcHVibGljOgotI2lmZGVmIE5ERUJVRwotCi0gICAgQUxXQVlT
X0lOTElORSBEaXNhbGxvd0dDKGJvb2wgPSBmYWxzZSkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9Ci0KLSNlbHNlIC8vIG5vdCBOREVCVUcKLQotICAg
IERpc2FsbG93R0MoYm9vbCBlbmFibGVkID0gdHJ1ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJsZWQp
Ci0gICAgeyB9CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBEaXNhbGxvd0dDKCkgPSBkZWZhdWx0
OwogCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgewpAQCAtMTA1LDcgKzk3LDEw
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpU
cnVlPj4gc19zY29wZVJlZW50cnlDb3VudDsKIAotI2VuZGlmIC8vIE5ERUJVRworI2Vsc2UKKyAg
ICBBTFdBWVNfSU5MSU5FIERpc2FsbG93R0MoKSB7IH0gLy8gV2UgbmVlZCB0aGlzIHRvIHBsYWNh
dGUgQ2xhbmcgZHVlIHRvIHVudXNlZCB3YXJuaW5ncy4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyB2b2lkIGluaXRpYWxpemUoKSB7IH0KKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogICAgIAog
ICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93R0M+OwogfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3RCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA5LDcgKzQwOSw4IEBAIFN0cmlu
ZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAgICAgICAgICAgIC8vICJPYmpl
Y3QiIGluIHNuYXBzaG90cyBhbmQgbm90IGdldCB0aGUgbmFtZSBvZiB0aGUgcHJvdG90eXBlJ3Mg
cGFyZW50LgogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG5vZGUuY2Vs
bCk7CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG9iamVj
dC0+Z2xvYmFsT2JqZWN0KHZtKSkgewotICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Cisg
ICAgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAg
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICAgICAgICAg
ICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCkpCiAgICAgICAgICAgICAgICAg
ICAgIGNsYXNzTmFtZSA9IEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKG9iamVjdCk7CiAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02NDYsMTQgKzY0NiwxOSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpxdWVyeUluc3RhCiAKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iamVjdDsK
IAotICAgIFByb3BlcnR5U2xvdCBwcm90b3R5cGVTbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5
cGVTbG90KSkgewotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAg
ICAgICBpZiAocHJvdG90eXBlU2xvdC5pc1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGVTbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICAgICAgICAgIGlmIChwcm90b3R5cGVWYWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gcHJvdG90eXBlVmFs
dWU7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICB7
CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQ
cm9wZXJ0eVNsb3QgcHJvdG90eXBlU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBib29sIGZv
dW5kID0gb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZVNsb3QpOworICAgICAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOworICAgICAgICBkaXNhbGxvd1ZNRW50cnkucmVsZWFzZSgpOworICAgICAgICBp
ZiAoZm91bmQpIHsKKyAgICAgICAgICAgIGlmIChwcm90b3R5cGVTbG90LmlzVmFsdWUoKSkgewor
ICAgICAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGVTbG90Lmdl
dFZhbHVlKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAg
ICAgICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAg
ICAgICAgICBwcm90b3R5cGUgPSBwcm90b3R5cGVWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAg
b2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENh
bWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTgyNSwxNSArODI1LDE1IEBAIGZhaWxlZEpTT05QOgogICAgICAgICBBU1NFUlQoY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAg
ICAgfQogCi0gICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVu
cy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0KLSAgICBSZWZQdHI8
SklUQ29kZT4gaml0Q29kZSA9IHByb2dyYW0tPmdlbmVyYXRlZEpJVENvZGUoKTsKLQorICAgIFJl
ZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1l
OwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bENhbGxlZSwgdGhpc09iaiwgMSk7CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93
R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4g
RXhlY3V0YWJsZS4KKyAgICAgICAgaml0Q29kZSA9IHByb2dyYW0tPmdlbmVyYXRlZEpJVENvZGUo
KTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
Z2xvYmFsQ2FsbGVlLCB0aGlzT2JqLCAxKTsKKyAgICB9CiAKICAgICAvLyBFeGVjdXRlIHRoZSBj
b2RlOgotICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgp
OwogICAgIEFTU0VSVChqaXRDb2RlID09IHByb2dyYW0tPmdlbmVyYXRlZEpJVENvZGUoKS5wdHIo
KSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2Fs
bEZyYW1lKTsKQEAgLTg5MCwyNyArODkwLDI0IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGVDYWxsKEpTR2xvYmEKICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5s
aW5lZCA9IGZhbHNlOwogICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5z
dXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxl
LgotCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7Ci0gICAgaWYgKGlzSlNDYWxsKQotICAg
ICAgICBqaXRDb2RlID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRK
SVRDb2RlRm9yQ2FsbCgpOwotCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0g
ICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgZnVuY3Rp
b24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgeworICAgICAgICBE
aXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVw
bGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaWYgKGlzSlNDYWxsKQorICAg
ICAgICAgICAgaml0Q29kZSA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJh
dGVkSklUQ29kZUZvckNhbGwoKTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2Rl
QmxvY2ssIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdz
LmRhdGEoKSk7CisgICAgfQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgewotICAgICAgICAv
LyBFeGVjdXRlIHRoZSBjb2RlOgotICAgICAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKLSAgICAg
ICAgaWYgKGlzSlNDYWxsKSB7Ci0gICAgICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5wdHIoKSk7Ci0gICAgICAgICAgICByZXN1bHQg
PSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUo
Y2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJh
bWUpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgSlNWYWx1
ZSgpKTsKLSAgICAgICAgfQorICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CisgICAgaWYgKGlzSlND
YWxsKSB7CisgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgICAgICBBU1NFUlQoaml0
Q29kZSA9PSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVG
b3JDYWxsKCkucHRyKCkpOworICAgICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwg
JnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBKU1ZhbHVl
OjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbi5yYXdQb2lu
dGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgSlNWYWx1ZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybihyZXN1bHQpOwpAQCAtOTcyLDI4ICs5NjksMjUgQEAgSlNPYmplY3QqIEludGVycHJldGVy
OjpleGVjdXRlQ29uc3RydWN0KAogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlz
QmVJbmxpbmVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAv
LyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1
dGFibGUuCi0KICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKLSAgICBpZiAoaXNKU0NvbnN0
cnVjdCkKLSAgICAgICAgaml0Q29kZSA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRh
YmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7Ci0KICAgICBQcm90b0NhbGxGcmFt
ZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywg
Z2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0
YSgpKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5v
IEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgorICAg
ICAgICBpZiAoaXNKU0NvbnN0cnVjdCkKKyAgICAgICAgICAgIGppdENvZGUgPSBjb25zdHJ1Y3RE
YXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgp
OworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywgZ2xvYmFsT2JqZWN0
LCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICB9
CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICB7Ci0gICAgICAgIC8vIEV4ZWN1dGUgdGhlIGNv
ZGUuCi0gICAgICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwotICAgICAgICBpZiAoaXNKU0NvbnN0
cnVjdCkgewotICAgICAgICAgICAgQVNTRVJUKGppdENvZGUgPT0gY29uc3RydWN0RGF0YS5qcy5m
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKS5wdHIoKSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZy
YW1lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRl
Y29kZSh2bUVudHJ5VG9OYXRpdmUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9p
bnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOworICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGUu
CisgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKKyAgICAgICAgQVNTRVJUKGppdENvZGUgPT0gY29u
c3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25z
dHJ1Y3QoKS5wdHIoKSk7CisgICAgICAgIHJlc3VsdCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAm
cHJvdG9DYWxsRnJhbWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6
OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3
UG9pbnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOwogCi0gICAgICAgICAgICBpZiAoTElL
RUxZKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChyZXN1bHQuaXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKExJS0VMWSgh
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuaXNPYmplY3QoKSk7CiAgICAgfQogCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBudWxscHRyKTsKQEAgLTExMDAsMTkgKzEwOTQsMjQgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogCiAgICAgLy8gV2UgY2FuJ3QgZGVjbGFyZSBhICJ2YXIi
LyJmdW5jdGlvbiIgdGhhdCBvdmVyd3JpdGVzIGEgZ2xvYmFsICJsZXQiLyJjb25zdCIvImNsYXNz
IiBpbiBhIHNsb3BweS1tb2RlIGV2YWwuCiAgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5pc0dsb2Jh
bE9iamVjdCgpICYmICFldmFsLT5pc0luU3RyaWN0Q29udGV4dCgpICYmIChudW1WYXJpYWJsZXMg
fHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSkgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkg
ZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQq
IGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHZhcmlh
YmxlT2JqZWN0KS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSB1bmxpbmtlZENvZGVCbG9jay0+dmFyaWFibGUoaSk7Ci0gICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICAgICAgaWYg
KEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSkgeworICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAg
ICAgICAgICAgIGJvb2wgZm91bmQgPSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0LCBpZGVu
dCwgc2xvdCk7CisgICAgICAgICAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAoZm91bmQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybih0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIG1ha2VTdHJpbmco
IkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJp
bmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvcExldmVsRnVuY3Rpb25EZWNsczsg
KytpKSB7CiAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJs
b2NrLT5mdW5jdGlvbkRlY2woaSk7Ci0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOwotICAgICAgICAgICAgaWYgKEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLT5uYW1lKCksIHNsb3QpKSB7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgYm9vbCBmb3Vu
ZCAgPSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbi0+bmFtZSgpLCBzbG90
KTsKKyAgICAgICAgICAgIHRocm93U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAg
ICAgIGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgbWFrZVN0cmluZygiQ2FuJ3Qg
Y3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0cmluZyhmdW5j
dGlvbi0+bmFtZSgpLmltcGwoKSksICInIikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTE5MywxNSArMTE5MiwxNSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxF
eGVjdXRhCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsg
Ly8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KICAgICB9CiAKLSAgICBEaXNhbGxvd0dDIGRpc2Fs
bG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sg
aW4gRXhlY3V0YWJsZS4KLQotICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlID0gZXZhbC0+Z2Vu
ZXJhdGVkSklUQ29kZSgpOwotCisgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CiAgICAgUHJv
dG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2Rl
QmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCB0aGlzVmFsdWUsIDEpOworICAgIHsKKyAgICAg
ICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2Fu
IHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAgIGppdENvZGUgPSBldmFs
LT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJs
b2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwgdGhpc1ZhbHVlLCAxKTsKKyAgICB9CiAKICAgICAv
LyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwogICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChqaXRDb2RlID09IGV2YWwtPmdlbmVyYXRlZEpJ
VENvZGUoKS5wdHIoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2
bSwgJnByb3RvQ2FsbEZyYW1lKTsKQEAgLTEyNTEsMTggKzEyNTAsMTggQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYQogICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCiAgICAgfQog
Ci0gICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0Mg
Y2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0KLSAgICBSZWZQdHI8SklUQ29k
ZT4gaml0Q29kZSA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKTsKLQotICAgIC8vIFRo
ZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCi0gICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1l
bnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCi0gICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1y
ZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CiAgICAg
UHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChj
b2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCBqc1VuZGVmaW5lZCgpLCAxKTsKKyAgICB7
CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMu
IEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgorICAgICAgICBqaXRDb2Rl
ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpOworICAgICAgICAvLyBUaGUgfHRoaXN8
IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgorICAgICAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmly
b25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKKyAgICAgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1y
ZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJs
b2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwganNVbmRlZmluZWQoKSwgMSk7CisgICAgfQogCiAg
ICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKICAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0Q29kZSA9PSBleGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlKCkucHRyKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaml0Q29kZS0+
ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
NywxNCArMTY3LDE2IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KHZtKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0g
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRp
Zmllcik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlk
ZW50aWZpZXIudWlkKCkpOwogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAg
IGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKQEAgLTE4
NCwxMyArMTg2LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0
cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CiAKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKLSAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAg
YmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwpAQCAtMTk5
LDE0ICsyMDMsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ucgog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeSh2bSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsK
ICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmll
ci51aWQoKSk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNl
KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93
Vk1FbnRyeSk7CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwg
aWRlbnQsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzEsMTIgKzYzMSwxNCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFuY2VvCiBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfdHJ5X2dldF9ieV9pZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwor
ICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBwYy0+YXM8T3BUcnlHZXRCeUlkPigpOwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7Ci0g
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKIAogICAgIGJhc2VWYWx1ZS5nZXRQcm9w
ZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgdGhyb3dTY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRQdXJlUmVzdWx0
KCk7CiAKICAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKQEAgLTEwOTMsNyArMTA5
NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmEKICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKICAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgp
KTsKIAotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwog
ICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHBy
b3BlcnR5LCBzbG90KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIApAQCAtMjMxNiw2
ICsyMzE4LDEyIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVyX3Nsb3cKICAg
ICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbihWTSogdm0sIFByb3RvQ2Fs
bEZyYW1lKikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50
KTsgLy8gQ3VycmVudGx5LCB0aGlzIHNob3VsZCBhbHdheXMgY3Jhc2guCisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFs
dWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFs
dWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDcsNiArMTQ3LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRoXwog
I2lmIEVOQUJMRShDX0xPT1ApCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9z
dGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwogI2Vu
ZGlmCitleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggU2xvd1BhdGhSZXR1cm5UeXBl
IGxsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24oVk0qLCBQcm90b0NhbGxGcmFtZSopIFdU
Rl9JTlRFUk5BTDsKIGV4dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGxsaW50
X2NyYXNoKCkgV1RGX0lOVEVSTkFMOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MCw2
ICsxNzAsOSBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgIyBTaW5jZSB3ZSBoYXZl
IHRoZSBndWFyYW50ZWUgdGhhdCB0WCAhPSBhWSB3aGVuIFggIT0gWSwgd2UgYXJlIHNhZmUgZnJv
bQogICAgICMgYWxpYXNpbmcgcHJvYmxlbXMgd2l0aCBvdXIgYXJndW1lbnRzLgogCisgICAgbG9h
ZGkgVk06OmRpc2FsbG93Vk1FbnRyeUNvdW50W3ZtXSwgdDQKKyAgICBidGlueiB0NCwgLmNoZWNr
Vk1FbnRyeVBlcm1pc3Npb24KKwogICAgIGlmIEFSTXY3CiAgICAgICAgIHZtRW50cnlSZWNvcmQo
Y2ZyLCB0MykKICAgICAgICAgbW92ZSB0Mywgc3AKQEAgLTMxOSw2ICszMjIsMTMgQEAgbWFjcm8g
ZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgIHBvcENhbGxlZVNhdmVzKCkKICAgICBmdW5jdGlvbkVw
aWxvZ3VlKCkKICAgICByZXQKKworLmNoZWNrVk1FbnRyeVBlcm1pc3Npb246CisgICAgIyBXZSBn
ZXQgaGVyZSBiZWNhdXNlIHZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCBpcyBub24temVyby4gQ3Vy
cmVudGx5LCB0aGlzCisgICAgIyBhbHdheXMgbWVhbnMgd2Ugd2lsbCBjcmFzaC4KKyAgICBtb3Zl
IHZtLCBhMAorICAgIG1vdmUgcHJvdG9DYWxsRnJhbWUsIGExCisgICAgY0NhbGwyKF9sbGludF9j
aGVja192bV9lbnRyeV9wZXJtaXNzaW9uKQogZW5kCiAKICMgYTAsIGEyLCB0MywgdDQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2
Niw5IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKIAogICAgIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KHQ0LCAweGJhZDBkYzAxKQogCisgICAgbG9hZGkgVk06OmRpc2FsbG93Vk1FbnRy
eUNvdW50W3ZtXSwgdDQKKyAgICBidGlueiB0NCwgLmNoZWNrVk1FbnRyeVBlcm1pc3Npb24KKwog
ICAgIHN0b3JlcCB2bSwgVk1FbnRyeVJlY29yZDo6bV92bVtzcF0KICAgICBsb2FkcCBWTTo6dG9w
Q2FsbEZyYW1lW3ZtXSwgdDQKICAgICBzdG9yZXAgdDQsIFZNRW50cnlSZWNvcmQ6Om1fcHJldlRv
cENhbGxGcmFtZVtzcF0KQEAgLTI4NCw2ICsyODcsMTMgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VD
YWxsKQogICAgIHBvcENhbGxlZVNhdmVzKCkKICAgICBmdW5jdGlvbkVwaWxvZ3VlKCkKICAgICBy
ZXQKKworLmNoZWNrVk1FbnRyeVBlcm1pc3Npb246CisgICAgIyBXZSBnZXQgaGVyZSBiZWNhdXNl
IHZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCBpcyBub24temVyby4gQ3VycmVudGx5LCB0aGlzCisg
ICAgIyBhbHdheXMgbWVhbnMgd2Ugd2lsbCBjcmFzaC4KKyAgICBtb3ZlIHZtLCBhMAorICAgIG1v
dmUgcHJvdG9DYWxsRnJhbWUsIGExCisgICAgY0NhbGwyKF9sbGludF9jaGVja192bV9lbnRyeV9w
ZXJtaXNzaW9uKQogZW5kCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlzYWxsb3dTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Rpc2FsbG93U2NvcGUuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMjcg
KzM1LDE4IEBAIGNsYXNzIERpc2FsbG93U2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERpc2FsbG93U2NvcGUpOwogICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOwogcHVibGlj
OgotI2lmZGVmIE5ERUJVRwotCi0gICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1Njb3BlKGJvb2wg
PSBmYWxzZSkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSB+RGlzYWxsb3dTY29wZSgpIHsgfQotICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCgpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGVuYWJsZSgpIHsgfQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBkaXNhYmxlKCkgeyB9Ci0KLSNlbHNlIC8vIG5vdCBOREVCVUcK
LQotICAgIERpc2FsbG93U2NvcGUoYm9vbCBlbmFibGVkID0gdHJ1ZSkKKyNpZiBBU1NFUlRfRU5B
QkxFRAorICAgIERpc2FsbG93U2NvcGUoKQogICAgIHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSBl
bmFibGVkOwotICAgICAgICBpZiAobV9pc0VuYWJsZWQpCi0gICAgICAgICAgICBlbnRlclNjb3Bl
KCk7CisgICAgICAgIGF1dG8gY291bnQgPSBUOjpzY29wZVJlZW50cnlDb3VudCgpOworICAgICAg
ICBUOjpzZXRTY29wZVJlZW50cnlDb3VudCgrK2NvdW50KTsKICAgICB9CiAKICAgICB+RGlzYWxs
b3dTY29wZSgpCiAgICAgewotICAgICAgICBpZiAobV9pc0VuYWJsZWQpCi0gICAgICAgICAgICBl
eGl0U2NvcGUoKTsKKyAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRyeUNvdW50KCk7
CisgICAgICAgIEFTU0VSVChjb3VudCk7CisgICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50
KC0tY291bnQpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRU
aHJlYWQoKQpAQCAtNjMsMzQgKzU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEhVDo6
c2NvcGVSZWVudHJ5Q291bnQoKTsKICAgICB9CiAKLSAgICB2b2lkIGVuYWJsZSgpCi0gICAgewot
ICAgICAgICBtX2lzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIGVudGVyU2NvcGUoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGRpc2FibGUoKQotICAgIHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSBmYWxz
ZTsKLSAgICAgICAgZXhpdFNjb3BlKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgZW50
ZXJTY29wZSgpCi0gICAgewotICAgICAgICBhdXRvIGNvdW50ID0gVDo6c2NvcGVSZWVudHJ5Q291
bnQoKTsKLSAgICAgICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoKytjb3VudCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBleGl0U2NvcGUoKQotICAgIHsKLSAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNj
b3BlUmVlbnRyeUNvdW50KCk7Ci0gICAgICAgIEFTU0VSVChjb3VudCk7Ci0gICAgICAgIFQ6OnNl
dFNjb3BlUmVlbnRyeUNvdW50KC0tY291bnQpOwotICAgIH0KLQotICAgIGJvb2wgbV9pc0VuYWJs
ZWQ7Ci0jZW5kaWYgLy8gTkRFQlVHCisjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKKyAgICBB
TFdBWVNfSU5MSU5FIERpc2FsbG93U2NvcGUoKSB7IH0gLy8gV2UgbmVlZCB0aGlzIHRvIHBsYWNh
dGUgQ2xhbmcgZHVlIHRvIHVudXNlZCB3YXJuaW5ncy4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmIC8vIEFTU0VSVF9FTkFCTEVECiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCShyZXZp
c2lvbiAyNjQ1NzQpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93
Vk1SZWVudHJ5Lmg6MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlz
YWxsb3dWTUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRGlzYWxsb3dTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgRGlzYWxsb3dWTVJlZW50cnkgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVl
bnRyeT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93Vk1SZWVudHJ5KTsKKyAg
ICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IEJhc2U7CitwdWJsaWM6
CisjaWZkZWYgTkRFQlVHCisKKyAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93Vk1SZWVudHJ5KGJv
b2wgPSBmYWxzZSkgeyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KCkgeyB9CisKKyNlbHNlIC8vIG5vdCBOREVCVUcKKworICAgIERpc2FsbG93Vk1SZWVudHJ5KGJv
b2wgZW5hYmxlZCA9IHRydWUpCisgICAgICAgIDogQmFzZShlbmFibGVkKQorICAgIHsgfQorCisg
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpCisgICAgeworICAgICAgICBzX3Njb3BlUmVlbnRy
eUNvdW50LmNvbnN0cnVjdCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgc2NvcGVSZWVudHJ5Q291bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICpzX3Njb3BlUmVl
bnRyeUNvdW50LmdldCgpOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCBzZXRTY29wZVJlZW50cnlD
b3VudCh1bnNpZ25lZCB2YWx1ZSkKKyAgICB7CisgICAgICAgICpzX3Njb3BlUmVlbnRyeUNvdW50
LmdldCgpID0gdmFsdWU7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhy
ZWFkOjpUcnVlPj4gc19zY29wZVJlZW50cnlDb3VudDsKKworI2VuZGlmIC8vIE5ERUJVRworCisg
ICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
aXNhbGxvd1ZNRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXNhbGxvd1ZNRW50cnkuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNDcg
KzI1LDQyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRGlzYWxsb3dTY29wZS5oIgot
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVj
aWZpYy5oPgotCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRGlzYWxsb3dWTVJlZW50cnkgOiBw
dWJsaWMgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4gewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKERpc2FsbG93Vk1SZWVudHJ5KTsKLSAgICB0eXBlZGVmIERpc2FsbG93U2NvcGU8
RGlzYWxsb3dWTVJlZW50cnk+IEJhc2U7Ci1wdWJsaWM6Ci0jaWZkZWYgTkRFQlVHCi0KLSAgICBB
TFdBWVNfSU5MSU5FIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgPSBmYWxzZSkgeyB9Ci0gICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9CitjbGFzcyBWTTsKIAotI2Vs
c2UgLy8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCBlbmFibGVkID0g
dHJ1ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplKCkKKy8vIFRoZSBvbmx5IHJlYXNvbiB3ZSBpbXBsZW1lbnQgRGlzYWxsb3dW
TUVudHJ5IGFzIHNwZWNpYWxpemF0aW9uIG9mIGEgdGVtcGxhdGUKKy8vIGlzIHNvIHRoYXQgd2Ug
Y2FuIHdvcmsgYXJvdW5kIGhhdmluZyB0byAjaW5jbHVkZSBWTS5oLCB3aGljaCBjYW4gaHVydCBi
dWlsZAorLy8gdGltZS4gVGhpcyBkZWZlcnMgdGhlIGNvc3Qgb2YgI2luY2x1ZGUnaW5nIFZNLmgg
dG8gb25seSB0aGUgY2xpZW50cyB0aGF0CisvLyBuZWVkIGl0LgorCit0ZW1wbGF0ZTxjbGFzcyBW
TVR5cGUgPSBWTT4KK2NsYXNzIERpc2FsbG93Vk1FbnRyeUltcGwgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKERpc2FsbG93Vk1FbnRyeUltcGwpOworcHVibGljOgorICAgIERpc2FsbG93Vk1F
bnRyeUltcGwoVk1UeXBlJiB2bSkKKyAgICAgICAgOiBtX3ZtKCZ2bSkKICAgICB7Ci0gICAgICAg
IHNfc2NvcGVSZWVudHJ5Q291bnQuY29uc3RydWN0KCk7CisgICAgICAgIG1fdm0tPmRpc2FsbG93
Vk1FbnRyeUNvdW50Kys7CiAgICAgfQogCi1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25lZCBz
Y29wZVJlZW50cnlDb3VudCgpCisgICAgfkRpc2FsbG93Vk1FbnRyeUltcGwoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgpOworICAgICAgICBpZiAobV92
bSkKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKICAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0U2Nv
cGVSZWVudHJ5Q291bnQodW5zaWduZWQgdmFsdWUpCisKKyAgICB2b2lkIHJlbGVhc2UoKQogICAg
IHsKLSAgICAgICAgKnNfc2NvcGVSZWVudHJ5Q291bnQuZ2V0KCkgPSB2YWx1ZTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQpOworICAgICAgICBtX3Zt
LT5kaXNhbGxvd1ZNRW50cnlDb3VudC0tOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVh
ZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Njb3BlUmVl
bnRyeUNvdW50OwotCi0jZW5kaWYgLy8gTkRFQlVHCi0KLSAgICBmcmllbmQgY2xhc3MgRGlzYWxs
b3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT47Citwcml2YXRlOgorICAgIFZNVHlwZSogbV92bTsK
IH07CiAKK3VzaW5nIERpc2FsbG93Vk1FbnRyeSA9IERpc2FsbG93Vk1FbnRyeUltcGw8Vk0+Owor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0gICAg
Ci0jaWZuZGVmIE5ERUJVRwotTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2ln
bmVkLCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBEaXNhbGxvd1ZNUmVlbnRyeTo6c19zY29w
ZVJlZW50cnlDb3VudDsKLSNlbmRpZgotICAgIAotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgJ
KHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2Fs
bG93Vk1SZWVudHJ5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJEaXNhbGxvd1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFz
cyBEaXNhbGxvd1ZNUmVlbnRyeSA6IHB1YmxpYyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVu
dHJ5PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzYWxsb3dWTVJlZW50cnkpOwotICAg
IHR5cGVkZWYgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4gQmFzZTsKLXB1YmxpYzoK
LSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dWTVJlZW50cnkoYm9v
bCA9IGZhbHNlKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUo
KSB7IH0KLQotI2Vsc2UgLy8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dWTVJlZW50cnkoYm9v
bCBlbmFibGVkID0gdHJ1ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHNfc2NvcGVSZWVudHJ5
Q291bnQuY29uc3RydWN0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25l
ZCBzY29wZVJlZW50cnlDb3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gKnNfc2NvcGVSZWVu
dHJ5Q291bnQuZ2V0KCk7Ci0gICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFNjb3BlUmVlbnRyeUNv
dW50KHVuc2lnbmVkIHZhbHVlKQotICAgIHsKLSAgICAgICAgKnNfc2NvcGVSZWVudHJ5Q291bnQu
Z2V0KCkgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJl
YWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50OwotCi0jZW5kaWYgLy8gTkRFQlVHCi0KLSAg
ICBmcmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT47Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDcgKzEzOSw4IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIAog
ICAgIEpTVmFsdWUgbmFtZVZhbHVlOwogICAgIGF1dG8gbmFtZVByb3BlcnROYW1lID0gdm0ucHJv
cGVydHlOYW1lcy0+bmFtZTsKLSAgICBQcm9wZXJ0eVNsb3QgbmFtZVNsb3QodGhpcywgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVu
dHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IG5hbWVTbG90KHRoaXMs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpOwogCiAgICAgSlNWYWx1ZSBjdXJyZW50T2JqID0gdGhpczsKICAgICB1bnNpZ25lZCBw
cm90b3R5cGVEZXB0aCA9IDA7CkBAIC0xNjcsNyArMTY4LDcgQEAgU3RyaW5nIEVycm9ySW5zdGFu
Y2U6OnNhbml0aXplZFRvU3RyaW5nKAogCiAgICAgSlNWYWx1ZSBtZXNzYWdlVmFsdWU7CiAgICAg
YXV0byBtZXNzYWdlUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlOwotICAg
IFByb3BlcnR5U2xvdCBtZXNzYWdlU2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3QgbWVzc2FnZVNsb3QodGhpcywg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1F
bnRyeSk7CiAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZ2xvYmFs
T2JqZWN0LCBtZXNzYWdlUHJvcGVydE5hbWUsIG1lc3NhZ2VTbG90KSAmJiBtZXNzYWdlU2xvdC5p
c1ZhbHVlKCkpCiAgICAgICAgIG1lc3NhZ2VWYWx1ZSA9IG1lc3NhZ2VTbG90LmdldFZhbHVlKGds
b2JhbE9iamVjdCwgbWVzc2FnZVByb3BlcnROYW1lKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5pdGlh
bGl6ZVRocmVhZGluZy5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKICNpbmNs
dWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAjaW5j
bHVkZSAiSlNDUHRyVGFnLmgiCkBAIC03OCwxMCArNzcsOCBAQCB2b2lkIGluaXRpYWxpemUoKQog
ICAgICAgICAgICAgZW5hYmxlU2lnaWxsQ3Jhc2hBbmFseXplcigpOwogCiAgICAgICAgIExMSW50
Ojppbml0aWFsaXplKCk7Ci0jaWZuZGVmIE5ERUJVRwogICAgICAgICBEaXNhbGxvd0dDOjppbml0
aWFsaXplKCk7Ci0gICAgICAgIERpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXplKCk7Ci0jZW5k
aWYKKwogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7CiAgICAgICAgIFRocmVhZCYg
dGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIHRocmVhZC5zZXRTYXZlZExhc3RT
dGFja1RvcCh0aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkg
KHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diAoYXBAbnlwb3AuY29tKQogICoKQEAgLTk2LDggKzk2LDcgQEAgSlNBcnJheSogSlNBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY3JlYXRlV2l0
aEJ1dHRlcmZseSh2bSwgZGVmZXJyYWxDb250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAK
LSAgICBjb25zdCBib29sIGNyZWF0ZVVuaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHNjb3BlLm5v
dGlmeUFsbG9jYXRlZChyZXN1bHQsIGNyZWF0ZVVuaW5pdGlhbGl6ZWQpOworICAgIHNjb3BlLm5v
dGlmeUFsbG9jYXRlZChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAy
NjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24g
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA4LDkgKzUwOCwxMCBAQCB2b2lkIEpTRnVu
Y3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOCiAgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMg
YmVlbiByZWlmaWVkLgotICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAg
ICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNsb3QpOwotICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFi
bGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKSB7CiAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKTsKQEAgLTU2
Myw5ICs1NjQsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsbwog
ICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90
b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0
dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4
LjEyLjkuCi0gICAgICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
ZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXRTbG90KTsKKyAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Cisg
ICAgICAgIH0KICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09i
amVjdC0+cmFyZURhdGEoKSkKICAgICAgICAgICAgIHJhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8g
cHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KSk7CkBAIC02NDIsOSArNjQ2LDEyIEBAIGJvb2wgSlNGdW5jdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBl
IGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgog
ICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45
LgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBm
YWxzZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRy
eSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICB9CiAgICAgICAg
IGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKCkp
CiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0
eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFz
ZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Niw5ICsxNTYsMTEgQEAgaW5saW5lIEpT
T2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFRoaXMgZ2V0UHJvcGVydHlTbG90IG9wZXJhdGlvbiBzaG91bGQgbm90IGJlIG9ic2Vy
dmVkIGJ5IHRoZSBQcm94eS4KICAgICAgICAgICAgIC8vIFNvIHdlIHVzZSBWTUlucXVpcnkuIEFu
ZCBwdXJnZSB0aGUgb3BhcXVlIG9iamVjdCBjYXNlcyAocHJveHkgYW5kIG5hbWVzcGFjZSBvYmpl
Y3QpIGJ5IGlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgZ3VhcmQuCi0gICAgICAgICAgICBQcm9w
ZXJ0eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1F
bnRyeSh2bSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOwogICAgICAgICAgICAgb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGxlbmd0aFNsb3QpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBzY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOworICAgICAgICAgICAgZGlzYWxsb3dWTUVudHJ5LnJlbGVhc2UoKTsKIAog
ICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmMgPSBvYmplY3QtPmdldChnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjY0NTc0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0R2xv
YmFsVGhpcyhWTSYgdgogc3RhdGljIEdldHRlclNldHRlciogZ2V0R2V0dGVyQnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCiB7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlKGJhc2UpOwotICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShnbG9i
YWxPYmplY3QtPnZtKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKICAgICByZXR1cm4ganNDYXN0PEdldHRlclNldHRlcio+KHNsb3QuZ2V0UHVyZVJlc3VsdCgp
KTsKIH0KQEAgLTEzODMsMTAgKzEzODQsMTMgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6cHV0KEpT
Q2VsbCogY2VsbCwgSgogYm9vbCBKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29s
IHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAv
LyBzaWxlbnRseSBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIGFjY2Vzc29ycyBhbGlhc2luZyB2YXJz
LgotICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgc3ltYm9sVGFi
bGVHZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh0aGlz
T2JqZWN0LT52bSgpKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRy
eSk7CisgICAgICAgIC8vIHNpbGVudGx5IGlnbm9yZSBhdHRlbXB0cyB0byBhZGQgYWNjZXNzb3Jz
IGFsaWFzaW5nIHZhcnMuCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlw
dG9yKCkgJiYgc3ltYm9sVGFibGVHZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIEJhc2U6OmRlZmlu
ZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKQEAgLTIwNTIsNyArMjA1Niw4IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICAgICAgbV9hcnJheVNwZWNpZXNX
YXRjaHBvaW50U2V0LmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIldhcyBub3QgYWJs
ZSB0byBzZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRjaHBvaW50LiIpKTsKICAgICB9OwogCi0gICAg
UHJvcGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChhcnJheVByb3RvdHlwZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChhcnJh
eVByb3RvdHlwZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgYXJyYXlQcm90b3R5cGUtPmdldE93blByb3BlcnR5U2xv
dChhcnJheVByb3RvdHlwZSwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNv
bnN0cnVjdG9yU2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAo
Y29uc3RydWN0b3JTbG90LnNsb3RCYXNlKCkgIT0gYXJyYXlQcm90b3R5cGUKQEAgLTIwNjYsNyAr
MjA3MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICBp
ZiAoY29uc3RydWN0b3JTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBjb25zdHJ1
Y3RvclN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0
cnVjdHVyZSh2bSwgYXJyYXlDb25zdHJ1Y3Rvcik7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc3BlY2ll
c1Nsb3QoYXJyYXlDb25zdHJ1Y3RvciwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNwZWNpZXNTbG90KGFycmF5Q29uc3RydWN0
b3IsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOwogICAgIGFycmF5Q29uc3RydWN0b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJh
eUNvbnN0cnVjdG9yLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVj
aWVzU2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoc3BlY2ll
c1Nsb3Quc2xvdEJhc2UoKSAhPSBhcnJheUNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwg
KGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTM0LDkgKzUzNCwxMSBAQCBTdHJp
bmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAKICAgICAvLyBDaGVjayBmb3Ig
YSBkaXNwbGF5IG5hbWUgb2Ygb2JqLmNvbnN0cnVjdG9yLgogICAgIC8vIFRoaXMgaXMgdXNlZnVs
IHRvIGdldCBgRm9vYCBmb3IgdGhlIGAoY2xhc3MgRm9vKS5wcm90b3R5cGVgIG9iamVjdC4KLSAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwotICAgIGlmIChvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmpl
Y3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3QpKSB7
Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBEaXNh
bGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNh
bGxvd1ZNRW50cnkpOworICAgIGJvb2wgZm91bmQgPSBvYmplY3QtPmdldE93blByb3BlcnR5U2xv
dChvYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNs
b3QpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgaWYgKGZvdW5kKSB7CiAg
ICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBj
dG9yT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBzbG90LmdldFZhbHVlKGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpKSkgewogICAgICAgICAg
ICAgICAgIGlmIChKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvckZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIGN0b3JPYmplY3QpKQpAQCAtNTU4LDkgKzU2MCwxMCBAQCBTdHJp
bmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAgICAgICAgICAgICBKU1ZhbHVl
IHByb3RvVmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgICAg
ICBpZiAocHJvdG9WYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IHByb3RvT2JqZWN0ID0gYXNPYmplY3QocHJvdG9WYWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QocHJvdG9WYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb3RvT2JqZWN0LT5nZXRQcm9w
ZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xv
dCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkpOworICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHByb3RvVmFsdWUsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOworICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b09iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3Qp
OworICAgICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzbG90LmlzVmFsdWUo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBjdG9yT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvckZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIGN0b3JPYmplY3QpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI2NDU3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01ODQsNiArNTg0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0Ojpn
ZXRQcml2YXRlRgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0g
b2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VS
VCh2YWx1ZSk7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIEpTQ2VsbCogY2Vs
bCA9IHZhbHVlLmFzQ2VsbCgpOwpAQCAtNTk0LDYgKzU5NSw3IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6Z2V0UHJpdmF0ZUYKICAgICAgICAgLy8gYXMgaW4gSlNPYmplY3Q6OmdldE93
bk5vbkluZGV4UHJvcGVydHlTbG90KCkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNQogICAgIH0KKyNlbmRpZgogCiAgICAgc2xvdC5zZXRW
YWx1ZShvYmplY3QsIGF0dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtNjA0LDYgKzYwNiw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRmll
bGQoSlMKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoIUpTT2JqZWN0OjpnZXRQcml2YXRl
RmllbGRTbG90KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAg
ICAgICBBU1NFUlQoIXNsb3QuaXNWTUlucXVpcnkoKSk7CiAgICAgICAgIHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2Jh
bE9iamVjdCkpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZhbHNlKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkocmV2
aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTIsOCArMTUyLDExIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBhYnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxv
d1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOwogICAgICAgICBib29sIGhhc093blByb3BlcnR5ID0gZ2xvYmFsT2JqZWN0LT5nZXRPd25Q
cm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKKyAg
ICAgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICBkaXNhbGxvd1ZN
RW50cnkucmVsZWFzZSgpOwogICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KSB7CiAgICAgICAg
ICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShVbnJlc29sdmVkUHJvcGVydHksIG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCShyZXZpc2lv
biAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFs
aXphdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCwxMCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAorCiBP
YmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2
bSkKICAgICA6IG1fdm0odm0pCi0gICAgLCBtX2Rpc2FsbG93R0MoZmFsc2UpCi0gICAgLCBtX2Rp
c2FsbG93Vk1SZWVudHJ5KGZhbHNlKQogewogfQogCkBAIC01MCwyMSArNDksMjAgQEAgT2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYQogICAgIHZlcmlmeVByb3BlcnRpZXNB
cmVJbml0aWFsaXplZChtX29iamVjdCk7CiB9CiAKLXZvaWQgT2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZTo6bm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiBvYmplY3QsIGJvb2wgd2FzQ3JlYXRlZFVu
aW5pdGlhbGl6ZWQpCit2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9j
YXRlZChKU09iamVjdCogb2JqZWN0KQogewotICAgIGlmICh3YXNDcmVhdGVkVW5pbml0aWFsaXpl
ZCkgewotICAgICAgICBtX2Rpc2FsbG93R0MuZW5hYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dW
TVJlZW50cnkuZW5hYmxlKCk7Ci0gICAgICAgIG1fb2JqZWN0ID0gb2JqZWN0OwotICAgIH0gZWxz
ZQotICAgICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKKyAgICBB
U1NFUlQoIW1fZGlzYWxsb3dHQyk7CisgICAgQVNTRVJUKCFtX2Rpc2FsbG93Vk1FbnRyeSk7Cisg
ICAgbV9kaXNhbGxvd0dDLmVtcGxhY2UoKTsKKyAgICBtX2Rpc2FsbG93Vk1FbnRyeS5lbXBsYWNl
KG1fdm0pOworICAgIG1fb2JqZWN0ID0gb2JqZWN0OwogfQogCiB2b2lkIE9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
aWYgKG1fb2JqZWN0KSB7Ci0gICAgICAgIG1fZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAgICAg
IG1fZGlzYWxsb3dWTVJlZW50cnkuZGlzYWJsZSgpOworICAgICAgICBtX2Rpc2FsbG93R0MucmVz
ZXQoKTsKKyAgICAgICAgbV9kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgbV9vYmpl
Y3QgPSBudWxscHRyOwogICAgIH0KICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQo
b2JqZWN0KTsKQEAgLTExNCw2ICsxMTIsNyBAQCB2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGU6OnZlcmlmeVByCiAgICAgICAgIH0KICAgICB9CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUu
aAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNTQgKzI2LDU1
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRlZmVyR0MuaCIKLSNpbmNsdWRlICJEaXNh
bGxvd1ZNUmVlbnRyeS5oIgorI2luY2x1ZGUgIkRpc2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUg
IlZNLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBWTTsKIGNsYXNzIEpTT2JqZWN0OwogCi0jaWZkZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKIAogY2xhc3MgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSB7CiBwdWJsaWM6Ci0gICAg
QUxXQVlTX0lOTElORSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKLSAgICAgICAg
OiBtX3ZtKHZtKQotICAgIHsgfQotICAgIEFMV0FZU19JTkxJTkUgfk9iamVjdEluaXRpYWxpemF0
aW9uU2NvcGUoKQotICAgIHsKLSAgICAgICAgbV92bS5oZWFwLm11dGF0b3JGZW5jZSgpOwotICAg
IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKIAot
ICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqLCBib29sKSB7IH0KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KKyAg
ICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CisgICAgdm9pZCBub3RpZnlBbGxvY2F0
ZWQoSlNPYmplY3QqKTsKKyAgICB2b2lkIG5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0Kik7CiAK
IHByaXZhdGU6CisgICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQoSlNPYmpl
Y3QqKTsKKwogICAgIFZNJiBtX3ZtOworICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlzYWxs
b3dHQzsKKyAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IG1fZGlzYWxsb3dWTUVudHJ5Owor
ICAgIEpTT2JqZWN0KiBtX29iamVjdCB7IG51bGxwdHIgfTsKIH07CiAKLSNlbHNlIC8vIG5vdCBO
REVCVUcKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogCiBjbGFzcyBPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0
aWFsaXphdGlvblNjb3BlKFZNJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUoKTsKKyAgICBBTFdBWVNfSU5MSU5FIE9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisgICAgeyB9CisgICAgQUxXQVlTX0lO
TElORSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSgpCisgICAgeworICAgICAgICBtX3ZtLmhl
YXAubXV0YXRvckZlbmNlKCk7CisgICAgfQogCi0gICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4g
bV92bTsgfQotICAgIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiwgYm9vbCB3YXNDcmVh
dGVkVW5pbml0aWFsaXplZCk7Ci0gICAgdm9pZCBub3RpZnlJbml0aWFsaXplZChKU09iamVjdCop
OworICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KIAogcHJp
dmF0ZToKLSAgICB2b2lkIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChKU09iamVjdCop
OwotCiAgICAgVk0mIG1fdm07Ci0gICAgRGlzYWxsb3dHQyBtX2Rpc2FsbG93R0M7Ci0gICAgRGlz
YWxsb3dWTVJlZW50cnkgbV9kaXNhbGxvd1ZNUmVlbnRyeTsKLSAgICBKU09iamVjdCogbV9vYmpl
Y3QgeyBudWxscHRyIH07CiB9OwogCi0jZW5kaWYgLy8gTkRFQlVHCisjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNiAr
MjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01Bbm5vdGF0aW9uLmgiCisjaW5j
bHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiR2V0Vk0uaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCkBAIC0xMTIsMTAgKzExMywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIE1vZHVsZU5hbWVzcGFjZSwgLy8gTW9kdWxlTmFtZXNwYWNl
T2JqZWN0J3MgZW52aXJvbm1lbnQgYWNjZXNzLgogICAgIH07CiAKLSAgICBleHBsaWNpdCBQcm9w
ZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUsIEludGVybmFsTWV0aG9kVHlwZSBpbnRl
cm5hbE1ldGhvZFR5cGUpCisgICAgZXhwbGljaXQgUHJvcGVydHlTbG90KGNvbnN0IEpTVmFsdWUg
dGhpc1ZhbHVlLCBJbnRlcm5hbE1ldGhvZFR5cGUgaW50ZXJuYWxNZXRob2RUeXBlLCBEaXNhbGxv
d1ZNRW50cnkqIGRpc2FsbG93Vk1FbnRyeSA9IG51bGxwdHIpCiAgICAgICAgIDogbV90aGlzVmFs
dWUodGhpc1ZhbHVlKQogICAgICAgICAsIG1faW50ZXJuYWxNZXRob2RUeXBlKGludGVybmFsTWV0
aG9kVHlwZSkKICAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZGlzYWxsb3dWTUVudHJ5LCAo
aW50ZXJuYWxNZXRob2RUeXBlID09IEludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSA9PSAh
IWRpc2FsbG93Vk1FbnRyeSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNs
b3RCYXNlIC8gcmVjZWl2ZXIgYmVoYXZpb3IgZGlmZmVyZW5jZSBpbiBjdXN0b20gdmFsdWVzIGFu
ZCBjdXN0b20gYWNjZXNzb3JzLgpAQCAtMTM5LDYgKzE0MSw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1RhaW50ZWRCeU9w
YXF1ZU9iamVjdDsgfQogCiAgICAgSW50ZXJuYWxNZXRob2RUeXBlIGludGVybmFsTWV0aG9kVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxNZXRob2RUeXBlOyB9CisgICAgYm9vbCBpc1ZN
SW5xdWlyeSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxNZXRob2RUeXBlID09IEludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5OyB9CiAKICAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0
LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYQogCiAgICAgSlNB
cnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgZGVmZXJyYWxD
b250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAKLSAgICBjb25zdCBib29sIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQsIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQpOworICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzI3LDggKzcyNyw5IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVyOjpTdGFj
a0ZyYW1lOjpuYW0KIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qo
dm0pOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIGF1dG8g
Z2V0UHJvcGVydHlJZlB1cmVPcGVyYXRpb24gPSBbJl0gKGNvbnN0IElkZW50aWZpZXImIGlkZW50
KSAtPiBTdHJpbmcgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsZWUsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChjYWxsZWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KGlkZW50KTsKICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGNhbGxlZS0+Z2V0UHJvcGVydHlT
bG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2
aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29y
a2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw4IEBAIHB1YmxpYzoKICN1bmRlZiBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUgogCiAgICAgVk1UeXBlIHZtVHlwZTsKKyAgICB1bnNp
Z25lZCBkaXNhbGxvd1ZNRW50cnlDb3VudCB7IDAgfTsKKwogICAgIENsaWVudERhdGEqIGNsaWVu
dERhdGE7CiAgICAgRW50cnlGcmFtZSogdG9wRW50cnlGcmFtZSB7IG51bGxwdHIgfTsKICAgICAv
LyBOT1RFOiBXaGVuIHRocm93aW5nIGFuIGV4Y2VwdGlvbiB3aGlsZSByb2xsaW5nIGJhY2sgdGhl
IGNhbGwgZnJhbWUsIHRoaXMgbWF5IGJlIGVxdWFsIHRvCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Vk1FbnRyeVNjb3BlLmgiCiAKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgogI2luY2x1
ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKQEAgLTM5LDcgKzM4LDYgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZt
LCBKU0dsbwogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dCkKIHsKLSAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZmZWN0T25DdXJyZW50
VGhyZWFkKCkpOwogICAgIGlmICghdm0uZW50cnlTY29wZSkgewogICAgICAgICB2bS5lbnRyeVNj
b3BlID0gdGhpczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODk1LDkgKzI4OTUsMTAgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gYXNTdHJpbmcocHJvcGVydHkpLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUHJvcGVydHlTbG90IHNs
b3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwor
ICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3BlcnR5U2xv
dCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAogICAgIEpTVmFsdWUgcmVz
dWx0OwogICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjQ1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1NSBAQAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5k
IERpc2FsbG93Vk1SZWVudHJ5IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjU3OTU3Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oOgorICAgICAgICAo
V2ViQ29yZTo6aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjphY2Nl
c3NWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0
ZVB1dEJ5SW5kZXgpOgorICAgICAgICAoR2VuZXJhdGVEZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b246OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVmaW5lT3du
UHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb246OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXRCeUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6
OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHV0QnlJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpkZWZp
bmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6cHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllczo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpkZWZpbmVP
d25Qcm9wZXJ0eSk6CisKIDIwMjAtMDctMTkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSBDb2xvckJ1aWxkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw3ICs1OSw4IEBAIHN0YXRpYyBib29sIGlzVmlzaWJs
ZU5hbWVkUHJvcGVydHkoSlNDOjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8v
IDIuIElmIE8gaGFzIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4K
LSAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OworICAgIEpTQzo6RGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgIEpT
Qzo6UHJvcGVydHlTbG90IHNsb3QoJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgaWYgKEpT
Qzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKQEAgLTk5LDcgKzEwMCw4IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5KEoKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIC8vIDIuIElmIE8gaGFz
IGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4KLSAgICBKU0M6OlBy
b3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OworICAgIEpTQzo6RGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgIEpTQzo6UHJvcGVydHlT
bG90IHNsb3QoJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgaWYgKEpTQzo6SlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtOTY1LDkgKzk2NSwxNCBAQCBz
dWIgR2VuZXJhdGVQdXQKICAgICAgICAgCiAgICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0g
JGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92
ZXJyaWRlQnVpbHRpbnMiKTsKICAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgewotICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBi
b29sIGZvdW5kO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTtc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+
Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBmb3VuZCA9IHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIH1cbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWZvdW5kKSB7XG4iKTsKICAgICAgICAgICAg
ICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQogCkBAIC0xMDQxLDkgKzEw
NDYsMTQgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICAgICAgICAgIAogICAgICAg
ICBteSAkYWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0
aW5zKSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJvcGVydHlTbG90
IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7XG4iKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIShwcm90b3R5cGUuaXNP
YmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHtcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgZm91bmQ7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qo
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGZv
dW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJv
cGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWZvdW5kKSB7XG4iKTsKICAgICAgICAgICAg
ICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEx
NzYsOCArMTE4NiwxMyBAQCBzdWIgR2VuZXJhdGVEZWZpbmVPd25Qcm9wZXJ0eQogICAgICAgICAg
ICAgIyBGSVhNRTogSXMgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCB0aGUgcmlnaHQgZnVu
Y3Rpb24gdG8gY2FsbD8gSXMgdGhlcmUgYSBmdW5jdGlvbiB0aGF0IHdpbGwKICAgICAgICAgICAg
ICMgICAgICAgIG9ubHkgbG9vayBhdCB0aGUgYWN0dWFsIHByb3BlcnRpZXMsIGFuZCBub3QgY2Fs
bCBpbnRvIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKICAgICAgICAgICAgICMgICAgICAgIFtb
R2V0T3duUHJvcGVydHldXSBob29rPwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAk
YWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAg
IGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIGJvb2wgZm91bmQ7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIg
ICAgICAgIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25h
bEluZGVudC4gIiAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxl
eGljYWxHbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZkaXNhbGxvd1ZNRW50cnkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlv
bmFsSW5kZW50LiAiICAgICAgICB9XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIGlmICghZm91bmQpIHtcbiIpOwogICAgICAg
ICAgICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAgICAgICAgIGlm
ICghJG5hbWVkU2V0dGVyT3BlcmF0aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzNCw5ICsyMzQsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aQogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsK
KyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9Cisg
ICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAg
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHRydWUpOwpAQCAtMjYzLDkgKzI2OCwxNCBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpCiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwot
ICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdl
dFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkg
eworICAgIGJvb2wgZm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRy
eSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yOTIsOCArMzAyLDEzIEBAIGJvb2wgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5
TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAg
ICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kOwor
ICAgICAgICB7CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3VuZCA9IEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAg
ICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDkgKzIzNCwxNCBAQCBib29s
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAgICAgfQogCiAgICAgaWYgKCFw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsK
LSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29s
IGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dW
TUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlw
ZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYg
YXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewog
ICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNjMs
OSArMjY4LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAg
ICB9CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4
KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsKKyAg
ICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAgICBm
b3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFBy
b3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
IH0KKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVl
KTsKQEAgLTI5Miw4ICszMDIsMTMgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZwogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAg
ICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZt
KCkpOworICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwor
ICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9
CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlw
dG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDMsOSArMjQzLDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW4KICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAgICAg
IERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0o
KSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAg
ICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91bmQg
PSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
ICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3Miw5ICsyNzcsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9Owot
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUp
LT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYg
YXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMzAxLDggKzMxMSwxMyBAQCBib29sIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAgICAgfQogCiAgICAgaWYgKCFwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAg
ICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3Vu
ZDsKKyAgICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50
cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAg
ICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5
ICsyMDcsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KAogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlm
ICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAg
Ym9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2Fs
bG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgp
ICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQp
IHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAt
MjI4LDkgKzIzMywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXRC
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgp
ICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgeworICAg
ICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQgPSBw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAg
aWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0y
NDcsOCArMjU3LDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmkK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAg
ICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAg
ICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3VuZCA9
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5k
KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9y
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDkgKzIwNywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewot
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0
KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAg
ICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7
CisgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZv
dW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJv
cGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
ICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yMjgsOSArMjMzLDE0IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAg
aWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJv
cGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7Cisg
ICAgYm9vbCBmb3VuZDsKKyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsK
KyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pOworICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0
KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI0Nyw4ICsyNTcsMTMgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkp
IHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAg
ICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCkpOworICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50
cnkpOworICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
ICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlE
ZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsOSArMjEzLDE0IEBAIGJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
ZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OworICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTIzNCw5ICsyMzksMTQg
QEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdQogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZk
aXNhbGxvd1ZNRW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjUzLDggKzI2MywxMyBA
QCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlCiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0
eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAg
ICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsK
KyAgICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnko
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNSw5ICsyMzUsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyOgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+
Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAg
ICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkp
IHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlw
ZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAg
IGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHRydWUpOwpAQCAtMjU2LDkgKzI2MSwxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXI6CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
bmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlw
ZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7
CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAg
ICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
dHJ1ZSk7CkBAIC0yNzgsOCArMjg4LDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAg
aWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAg
ICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qo
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAg
aWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw5ICsyNDMsMTQgQEAgYm9vbCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQogICAgIH0KIAogICAgIGlmICghcHJvcGVy
dHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShwcm90b3R5cGUu
aXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3Vu
ZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRy
eShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAg
ICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjcyLDkgKzI3
NywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgfQog
CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0g
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgewor
ICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQg
PSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9Cisg
ICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBA
IC0zMDEsOCArMzExLDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckEKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAg
IFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICAgRGlz
YWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsK
KyAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAg
ICAgICAgICBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5p
c0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjY0
NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMxLDkgKzIzMSwxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlm
ICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3Bl
cnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAg
ICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkg
ZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFm
b3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7
CkBAIC0yNTIsOSArMjU3LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3AKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsK
LSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsKKyAgICB7
CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAgICBmb3Vu
ZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3Bl
cnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIH0K
KyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsK
QEAgLTI3Nyw4ICsyODcsMTMgQEAgc3RhdGljIGJvb2wgaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFt
ZShQcgogfQogCiAgICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUpKSB7Ci0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgICAg
IGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgICAgICBib29sIGZvdW5k
OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICAgICAgZm91
bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3Iu
aXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404779</attachid>
            <date>2020-07-20 16:46:44 -0700</date>
            <delta_ts>2020-07-21 14:48:48 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539.patch</filename>
            <type>text/plain</type>
            <size>116769</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NjM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MyBA
QAorMjAyMC0wNy0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5kIERpc2FsbG93Vk1SZWVudHJ5
IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU3OTU3Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
RGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFibGluZyBhbmQgZGlzYWJsaW5nLiAg
VGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5hYmxlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93LCB3ZQorICAgICAgICBjYW4gbWFr
ZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50cnkgaW5zaWRlIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0aCBXVEY6Ok9wdGlvbmFsLiAgV2l0
aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMgYW5kIG1ha2UKKyAgICAgICAgdGhl
bSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAgICBIb3dldmVyLCB0aGVyZSBpcyBz
dGlsbCBvbmUgZXhjZXB0aW9uOiBEaXNhbGxvd1ZNUmVlbnRyeSBuZWVkcyBhIHJlbGVhc2UoKSBt
ZXRob2QKKyAgICAgICAgdG8gYWxsb3cgaXQgdG8gZGlzYWJsZSB0aGUgUkFJSSBzY29wZSBhaGVh
ZCBvZiBkZXN0cnVjdGlvbi4gIFRoZSByZWFzb24gZm9yIHRoaXMKKyAgICAgICAgaXMgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgZW5mb3JjZSB0aGF0IFByb3BlcnR5U2xvdHMgd2l0aCBWTUlu
cXVpcnkgaW50ZXJuYWwKKyAgICAgICAgbWV0aG9kIHR5cGUgd2lsbCBhbHdheXMgYmUgYWNjb21w
YW5pZWQgYnkgYSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0byBkaXNhYmxlCisgICAgICAgIGNh
bGxpbmcgYmFjayBpbnRvIEpTLiAgSG93ZXZlciwgdGhpcyBvbmx5IG5lZWQgdG8gYmUgZW5mb3Jj
ZWQgd2hpbGUgY2FsbGluZyBpbnRvCisgICAgICAgIGdldFByb3BlcnR5U2xvdCgpLiAgVGhlcmVh
ZnRlciwgdGhlIGNsaWVudCBtYXkgdXNlIHRoZSByZXN1bHRzIHJldHVybmVkIGluIHRoZQorICAg
ICAgICBQcm9wZXJ0eVNsb3QgdG8gbWFrZSBkZWNpc2lvbnMgb24gdGFraW5nIGFjdGlvbiB0aGF0
IG1heSBlbnRhaWwgY2FsbGluZyBpbnRvIEpTLgorICAgICAgICBUaGlzIG1ha2VzIG1hbmFnaW5n
IHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeSBzY29wZSB0cmlja3kuICBU
bworICAgICAgICB3b3JrYXJvdW5kIHRoaXMsIHdlIGxldCBEaXNhbGxvd1ZNUmVlbnRyeSBoYXZl
IGEgcmVsZWFzZSgpIG1ldGhvZCB0aGF0IGJhc2ljYWxseQorICAgICAgICBkb2VzIGFuIGVhcmx5
IHJlbGVhc2Ugb2YgcGVybWlzc2lvbiB0byBjYWxsIGludG8gSlMuICBUaGUgcmVsZWFzZSgpIG1l
dGhvZCBzaG91bGQKKyAgICAgICAgb25seSBiZSB1c2VkIGluIHBsYWNlcyB3aGVyZSB3ZSBjYW4n
dCByZWx5IG9uIGRlc3RydWN0aW9uIG9mIHRoZSBEaXNhbGxvd1ZNUmVlbnRyeQorICAgICAgICBz
Y29wZSB0byB0YWtlIGNhcmUgb2YgdGhlIHJlbGVhc2UgYXV0b21hdGljYWxseS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUs
IGFuZCBhbHNvCisgICAgICAgICAgIGxheXMgdGhlIGdyb3VuZCB3b3JrIGluIGNhc2Ugd2Ugd2Fu
dCB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIG1vZGVzIG9mIGRpc2FibGluZworICAgICAgICAgICBW
TSBlbnRyeSBpbnN0ZWFkIG9mIGNyYXNoaW5nIGUuZy4gc2lsZW50IHJlamVjdGlvbnMgKGp1c3Qg
c2ltcGx5IGNob29zaW5nIG5vdAorICAgICAgICAgICB0byBjYWxsIGludG8gSlMsIGFuZCBhbHdh
eXMgcmV0dXJuaW5nIHVuZGVmaW5lZCkgaWYgd2UgbmVlZCBpdCBpbiB0aGUgZnV0dXJlLgorICAg
ICAgICAgICBGb3Igbm93LCB0aGUgb25seSBtb2RlIG9mIGRpc2FsbG93aW5nIGVudHJ5IGlzIHRv
IGNyYXNoLgorCisgICAgICAgIDMuIENoYW5nZSBEaXNhbGxvd1Njb3BlIGFuZCBEaXNhbGxvd0dD
IHRvIGJlIGJhc2VkIG9uIEFTU0VSVF9FTkFCTEVEIGluc3RlYWQgb2YgTkVCVUcuCisKKyAgICAg
ICAgNC4gTWFrZSBEaXNhbGxvd1ZNRW50cnkgYWx3YXlzIGVuZm9yY2VhYmxlLCBub3QganVzdCB3
aGVuIEFTU0VSVF9FTkFCTEVELgorCisgICAgICAgIDUuIEFkZCBEaXNhbGxvd1ZNRW50cnkgc2Nv
cGVzIHdoZW5ldmVyIHdlIGNyZWF0ZSBhIFByb3BlcnR5U2xvdCBmb3IgVk1JbnF1aXJ5LgorICAg
ICAgICAgICBUaGUgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yIHdpbGwgbm93IHRha2UgYW4gb3B0
aW9uYWwgRGlzYWxsb3dWTUVudHJ5IHBvaW50ZXIuCisgICAgICAgICAgIElmIHRoZSBzbG90J3Mg
c3BlY2lmaWVkIGludGVybmFsIG1ldGhvZCB0eXBlIGlzIFZNSW5xdWlyeSwgdGhlbiB3ZSdsbAor
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCB0aGF0IHRoZSBEaXNhbGxvd1ZNRW50cnkgcG9pbnRl
ciBpcyBub24tbnVsbC4KKworICAgICAgICA2LiBGaXhlZCBhIGJ1ZyBpbiBsbGludF9zbG93X3Bh
dGhfZ2V0X3ByaXZhdGVfbmFtZSgpLiAgSXQgc2hvdWxkIGJlIHBhc3NpbmcKKyAgICAgICAgICAg
R2V0T3duUHJvcGVydHkgdG8gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZCgpIGluc3RlYWQgb2Yg
Vk1JbnF1aXJ5LgorICAgICAgICAgICBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKCkgY2FuIHRo
cm93IGFuIGV4Y2VwdGlvbiwgd2hpY2ggbWFrZXMgaXQgbm90CisgICAgICAgICAgIGFwcHJvcHJp
YXRlIGZvciBhIFZNSW5xdWlyeS4gIFRoZXJlIGlzIGFsc28gbm8gY3VycmVudCBjbGllbnQgdGhh
dCBuZWVkcyBpdAorICAgICAgICAgICB0byBoYW5kbGUgYSBWTUlucXVpcnkuICBBZGRlZCBhbiBh
c3NlcnRpb24gaW4gSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZCgpIHRvCisgICAgICAgICAgIHZl
cmlmeSB0aGF0IHRoZSBjbGllbnQgd2lsbCBub3QgYmUgcmVxdWVzdGluZyBhIFZNSW5xdWlyeS4K
KworICAgICAgICA3LiBBZGRlZCBQcm9wZXJ0eVNsb3Q6OmlzVk1JbnF1aXJ5KCkgY29udmVuaWVu
Y2UgcXVlcnkgbWV0aG9kLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIGhlYXAvRGVmZXJHQy5jcHA6CisgICAgICAgICogaGVhcC9EZWZlckdDLmg6CisgICAgICAg
IChKU0M6OkRpc2FsbG93R0M6OkRpc2FsbG93R0MpOgorICAgICAgICAoSlNDOjpEaXNhbGxvd0dD
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgor
ICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9n
cmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlTW9k
dWxlUHJvZ3JhbSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X2NoZWNrX3ZtX2VudHJ5
X3Blcm1pc3Npb24pOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dTY29w
ZS5oOgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpEaXNhbGxvd1Njb3BlKToKKyAgICAg
ICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6fkRpc2FsbG93U2NvcGUpOgorICAgICAgICAoSlNDOjpE
aXNhbGxvd1Njb3BlOjppc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6
RGlzYWxsb3dTY29wZTo6ZW5hYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dT
Y29wZTo6ZGlzYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmVu
dGVyU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpleGl0U2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dWTUVudHJ5Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5Lmgu
CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6OkRpc2FsbG93Vk1FbnRyeUltcGwp
OgorICAgICAgICAoSlNDOjpEaXNhbGxvd1ZNRW50cnlJbXBsOjp+RGlzYWxsb3dWTUVudHJ5SW1w
bCk6CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6OmlzRW5nYWdlZCBjb25zdCk6
CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6OnJlbGVhc2UpOgorICAgICAgICAo
SlNDOjpEaXNhbGxvd1ZNUmVlbnRyeTo6RGlzYWxsb3dWTVJlZW50cnkpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpEaXNhbGxvd1ZNUmVlbnRyeTo6aW5pdGlhbGl6ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5OjpzY29wZVJlZW50cnlDb3VudCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5OjpzZXRTY29wZVJlZW50cnlDb3VudCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9ySW5z
dGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkUmVzdHJpY3RlZCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldEdldHRlckJ5SWQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FsY3VsYXRl
ZENsYXNzTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3Bw
OgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6
YXRpb25TY29wZTo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6
Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKToKKyAgICAgICAg
KiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaDoKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6dm0gY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKToKKyAgICAgICAg
KEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3RpZnlBbGxv
Y2F0ZWQpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3RpZnlJ
bml0aWFsaXplZCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVNsb3Q6OmlzVk1JbnF1aXJ5IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oOgorICAgICAgICAoSlNDOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0
Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAg
ICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpuYW1lRnJvbUNhbGxlZSk6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3Bl
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAg
ICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldEdldHRl
clNldHRlcik6CisKIDIwMjAtMDctMjAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY0MjQyKTogWyBtYWNPUyBdIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS5h
bnkuaHRtbCBpcyBhIGZsYWt5IGNyYXNoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgzNSw3ICs4MzUsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHNP
ZmZzZXQuaAogICAgIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUv
RGlzYWxsb3dTY29wZS5oCi0gICAgcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oCisgICAgcnVu
dGltZS9EaXNhbGxvd1ZNRW50cnkuaAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuaAogICAgIHJ1
bnRpbWUvRUNNQU1vZGUuaAogICAgIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NjYsNyArNzY2
LDYgQEAgcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAogcnVudGltZS9EaXJlY3RBcmd1bWVudHMu
Y3BwCiBydW50aW1lL0RpcmVjdEFyZ3VtZW50c09mZnNldC5jcHAKIHJ1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwCi1ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAogcnVudGltZS9E
b3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCiBydW50aW1lL0R1bXBDb250ZXh0LmNwcAog
cnVudGltZS9FQ01BTW9kZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNjQ1NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjk4LDggKzI5OCwxMyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6cHV0KEpTQ2VsCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xhc3MtPnN0
YXRpY0Z1bmN0aW9ucyhnbG9iYWxPYmplY3QpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRp
Y0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQobmFtZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IGdldFNsb3QodGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCkpCisgICAgICAgICAgICAgICAgICAgIGJvb2wgZm91
bmQ7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc2Fs
bG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICAgICAgICAgICAgICAgICAg
UHJvcGVydHlTbG90IGdldFNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3VuZCA9IFBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRTbG90KTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUGFyZW50OjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1
dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTY2OCw5ICs2NzMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBh
c0NhbGxiYWNrT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhY2hl
ZCBvciBvdmVycmlkZSBwcm9wZXJ0eS4KLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdDIodGhpc09iaiwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgaWYgKFBh
cmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90MikpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdDIuZ2V0VmFs
dWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93
Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDIo
dGhpc09iaiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRp
c2FsbG93Vk1FbnRyeSk7CisgICAgICAgIGJvb2wgZm91bmQgPSBQYXJlbnQ6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdDIpOworICAg
ICAgICBkaXNhbGxvd1ZNRW50cnkucmVsZWFzZSgpOworICAgICAgICBpZiAoZm91bmQpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKSk7CisgICAgfQogCiAgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xh
c3MpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjQ1NzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkxNiw3ICsxOTE2LDcgQEAKIAkJRkU1MzND
QTUxRjIxN0RCMzAwMTZBMUZFIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZE
RjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQlGRTUzM0NBNjFGMjE3REIzMDAx
NkExRkUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJRkU1MzNDQUQxRjIxN0VBNTAwMTZBMUZF
IC8qIHRlc3RtYXNtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFNTMzQ0EwMUYyMTdDMzEwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAgKi87IH07Ci0J
CUZFNTRERUZCMUU4QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NERFRkExRThDNkQ3MjAw
QTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU1NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2Fs
bG93Vk1FbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRyeS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNTRERUZGMUU4RDc2
RkEwMEE4OTJDNSAvKiBEaXNhbGxvd1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU0REVGRTFFOEQ3NDI4MDBBODkyQzUgLyogRGlzYWxsb3dT
Y29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFNTYyOENFMUU5OTUxMzIwMEM0OUU0NSAvKiBBaXJQcmludFNwZWNpYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTYyOENDMUU5OTUxMjQwMEM0
OUU0NSAvKiBBaXJQcmludFNwZWNpYWwuaCAqLzsgfTsKIAkJRkU1OTMyQTgxODNDNUEyNjAwQTFF
Q0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MjAxLDgg
KzUyMDEsNyBAQAogCQlGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VE
dW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVycmVkU291
cmNlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTMzQ0EwMUYyMTdD
MzEwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0ZXN0bWFzbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTMzQ0FDMUYyMTdEQjQwMDE2QTFG
RSAvKiB0ZXN0bWFzbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gdGVzdG1hc207IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCUZF
NTRERUZBMUU4QzZENzIwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhbGxvd1ZNUmVlbnRyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlGRTU0REVGQzFFOEM2REZGMDBBODkyQzUgLyogRGlzYWxsb3dWTVJl
ZW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzYWxsb3dW
TVJlZW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTU0REVGQTFFOEM2
RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERpc2FsbG93Vk1FbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTU0REVGRTFFOEQ3NDI4MDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhbGxvd1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNTYyOENCMUU5OTUxMjQwMEM0OUU0NSAvKiBBaXJQcmludFNwZWNpYWwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyUHJpbnRTcGVjaWFs
LmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJQcmludFNwZWNpYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTU2MjhDQzFFOTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclByaW50U3BlY2lhbC5oOyBw
YXRoID0gYjMvYWlyL0FpclByaW50U3BlY2lhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzE0Myw4ICs3MTQyLDcgQEAKIAkJCQkxNDM4NkE3MjFERDY5ODk1MDA4NjUyQzQgLyog
RGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0Mzg2QTczMURENjk4OTUwMDg2NTJD
NCAvKiBEaXJlY3RFdmFsRXhlY3V0YWJsZS5oICovLAogCQkJCUZFNTRERUZFMUU4RDc0MjgwMEE4
OTJDNSAvKiBEaXNhbGxvd1Njb3BlLmggKi8sCi0JCQkJRkU1NERFRkMxRThDNkRGRjAwQTg5MkM1
IC8qIERpc2FsbG93Vk1SZWVudHJ5LmNwcCAqLywKLQkJCQlGRTU0REVGQTFFOEM2RDcyMDBBODky
QzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLywKKwkJCQlGRTU0REVGQTFFOEM2RDcyMDBBODky
QzUgLyogRGlzYWxsb3dWTUVudHJ5LmggKi8sCiAJCQkJRTMxNjE4MTAxRUM1RkUwODAwMDZBMjE4
IC8qIERPTUFubm90YXRpb24uaCAqLywKIAkJCQlFMzE2MTgxMTFFQzVGRTA4MDAwNkEyMTggLyog
RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlFMzE2MTgxMjFFQzVGRTA4MDAw
NkEyMTggLyogRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmggKi8sCkBAIC05NDgyLDcgKzk0ODAs
NyBAQAogCQkJCTE0Mzg2QTc1MURENjk4OTUwMDg2NTJDNCAvKiBEaXJlY3RFdmFsRXhlY3V0YWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNzMwOEYxQzBDRDY4NTAwMDUyQkZBIC8qIERpc2Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1NERF
RkYxRThENzZGQTAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUZFNTRERUZCMUU4QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkU1NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3MzExNThFQkQ1NDAwNENCOUZGIC8qIERpc2Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERP
TUFubm90YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMTYxODE1MUVDNUZFMjcwMDA2QTIx
OCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBB
U1NFUlRfRU5BQkxFRAogTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVk
LCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBEaXNhbGxvd0dDOjpzX3Njb3BlUmVlbnRyeUNv
dW50OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgJKHJl
dmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAko
d29ya2luZyBjb3B5KQpAQCAtNzcsMTYgKzc3LDggQEAgY2xhc3MgRGlzYWxsb3dHQyA6IHB1Ymxp
YyBEaXNhbGxvd1Njb3BlPAogICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOwogICAgIHR5
cGVkZWYgRGlzYWxsb3dTY29wZTxEaXNhbGxvd0dDPiBCYXNlOwogcHVibGljOgotI2lmZGVmIE5E
RUJVRwotCi0gICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd0dDKGJvb2wgPSBmYWxzZSkgeyB9Ci0g
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9Ci0KLSNlbHNlIC8v
IG5vdCBOREVCVUcKLQotICAgIERpc2FsbG93R0MoYm9vbCBlbmFibGVkID0gdHJ1ZSkKLSAgICAg
ICAgOiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBEaXNh
bGxvd0dDKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAg
ewpAQCAtMTA1LDcgKzk3LDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RG
OjpDYW5CZUdDVGhyZWFkOjpUcnVlPj4gc19zY29wZVJlZW50cnlDb3VudDsKIAotI2VuZGlmIC8v
IE5ERUJVRworI2Vsc2UKKyAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93R0MoKSB7IH0gLy8gV2Ug
bmVlZCB0aGlzIHRvIHBsYWNhdGUgQ2xhbmcgZHVlIHRvIHVudXNlZCB3YXJuaW5ncy4KKyAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7IH0KKyNlbmRpZiAvLyBBU1NF
UlRfRU5BQkxFRAogICAgIAogICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93
R0M+OwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA5
LDcgKzQwOSw4IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0aW8KICAg
ICAgICAgICAgIC8vICJPYmplY3QiIGluIHNuYXBzaG90cyBhbmQgbm90IGdldCB0aGUgbmFtZSBv
ZiB0aGUgcHJvdG90eXBlJ3MgcGFyZW50LgogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFzT2JqZWN0KG5vZGUuY2VsbCk7CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKSkgewotICAgICAgICAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93
Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVu
dHJ5KTsKICAgICAgICAgICAgICAgICBpZiAoIW9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG9i
amVjdCwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCkp
CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xh
c3NOYW1lKG9iamVjdCk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2
aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVj
dGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NDYsMTQgKzY0NiwxOSBAQCBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhCiAKICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IG9iamVjdDsKIAotICAgIFByb3BlcnR5U2xvdCBwcm90b3R5cGVTbG90KG9iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgaWYg
KG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBwcm90b3R5cGVTbG90KSkgewotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgICAgICBpZiAocHJvdG90eXBlU2xvdC5pc1ZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGVTbG90LmdldFZhbHVl
KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICAgICAgICAg
IGlmIChwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgcHJvdG90
eXBlID0gcHJvdG90eXBlVmFsdWU7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gYXNPYmplY3Qo
cHJvdG90eXBlKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50
cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3QgcHJvdG90eXBlU2xvdChvYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OworICAgICAgICBib29sIGZvdW5kID0gb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZVNsb3QpOworICAgICAg
ICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICBkaXNhbGxvd1ZNRW50cnkucmVs
ZWFzZSgpOworICAgICAgICBpZiAoZm91bmQpIHsKKyAgICAgICAgICAgIGlmIChwcm90b3R5cGVT
bG90LmlzVmFsdWUoKSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUg
PSBwcm90b3R5cGVTbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNPYmplY3Qo
KSkgeworICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBwcm90b3R5cGVWYWx1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlz
aW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTgyNSwxNSArODI1LDE1IEBAIGZhaWxlZEpTT05QOgogICAg
ICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1l
dGVyIGZvciAndGhpcycuCiAgICAgfQogCi0gICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBF
bnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFi
bGUuCi0KLSAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSA9IHByb2dyYW0tPmdlbmVyYXRlZEpJ
VENvZGUoKTsKLQorICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIFByb3RvQ2FsbEZy
YW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBn
bG9iYWxPYmplY3QsIGdsb2JhbENhbGxlZSwgdGhpc09iaiwgMSk7CisgICAgeworICAgICAgICBE
aXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVw
bGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaml0Q29kZSA9IHByb2dyYW0t
PmdlbmVyYXRlZEpJVENvZGUoKTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbGVlLCB0aGlzT2JqLCAxKTsKKyAgICB9CiAKICAg
ICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwogICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChqaXRDb2RlID09IHByb2dyYW0tPmdlbmVy
YXRlZEpJVENvZGUoKS5wdHIoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqaXRDb2RlLT5leGVj
dXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKQEAgLTg5MCwyNyArODkwLDI0IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmEKICAgICAgICAgbmV3Q29kZUJsb2NrLT5t
X3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgIH0KIAotICAgIERpc2FsbG93R0Mg
ZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVC
bG9jayBpbiBFeGVjdXRhYmxlLgotCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7Ci0gICAg
aWYgKGlzSlNDYWxsKQotICAgICAgICBqaXRDb2RlID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOwotCiAgICAgUHJvdG9DYWxsRnJhbWUg
cHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgZnVuY3Rpb24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7
CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBo
YXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAg
aWYgKGlzSlNDYWxsKQorICAgICAgICAgICAgaml0Q29kZSA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9u
RXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKKyAgICAgICAgcHJvdG9DYWxs
RnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIHRoaXNWYWx1
ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgfQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7
Ci0gICAgewotICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgICAgICBkaXNhbGxvd0dD
LmRpc2FibGUoKTsKLSAgICAgICAgaWYgKGlzSlNDYWxsKSB7Ci0gICAgICAgICAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNhbGxEYXRhLmpz
LmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5wdHIoKSk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1l
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29k
ZSh2bUVudHJ5VG9OYXRpdmUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwg
JnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgSlNWYWx1ZSgpKTsKLSAgICAgICAgfQorICAgIC8vIEV4ZWN1dGUgdGhlIGNv
ZGU6CisgICAgaWYgKGlzSlNDYWxsKSB7CisgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwor
ICAgICAgICBBU1NFUlQoaml0Q29kZSA9PSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkucHRyKCkpOworICAgICAgICByZXN1bHQgPSBqaXRD
b2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgSlNWYWx1ZSgpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwpAQCAtOTcyLDI4ICs5NjksMjUgQEAgSlNP
YmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgICAgICBuZXdDb2RlQmxv
Y2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgRGlzYWxs
b3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2Ug
Q29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0KICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsK
LSAgICBpZiAoaXNKU0NvbnN0cnVjdCkKLSAgICAgICAgaml0Q29kZSA9IGNvbnN0cnVjdERhdGEu
anMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7Ci0K
ICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5p
bml0KG5ld0NvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBh
cmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxs
b3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBp
biBFeGVjdXRhYmxlLgorICAgICAgICBpZiAoaXNKU0NvbnN0cnVjdCkKKyAgICAgICAgICAgIGpp
dENvZGUgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZUZvckNvbnN0cnVjdCgpOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFy
Z3MuZGF0YSgpKTsKKyAgICB9CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICB7Ci0gICAgICAg
IC8vIEV4ZWN1dGUgdGhlIGNvZGUuCi0gICAgICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwotICAg
ICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewotICAgICAgICAgICAgQVNTRVJUKGppdENvZGUgPT0g
Y29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JD
b25zdHJ1Y3QoKS5wdHIoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRl
KCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUoY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24ucmF3UG9pbnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOworICAgIC8v
IEV4ZWN1dGUgdGhlIGNvZGUuCisgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKKyAgICAgICAgQVNT
RVJUKGppdENvZGUgPT0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKS5wdHIoKSk7CisgICAgICAgIHJlc3VsdCA9IGppdENv
ZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUoY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24ucmF3UG9pbnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOwogCi0g
ICAgICAgICAgICBpZiAoTElLRUxZKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKExJS0VMWSghdGhyb3dTY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuaXNPYmplY3QoKSk7CiAgICAgfQogCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKQEAgLTExMDAsMTkgKzEwOTQsMjQgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogCiAgICAgLy8gV2UgY2Fu
J3QgZGVjbGFyZSBhICJ2YXIiLyJmdW5jdGlvbiIgdGhhdCBvdmVyd3JpdGVzIGEgZ2xvYmFsICJs
ZXQiLyJjb25zdCIvImNsYXNzIiBpbiBhIHNsb3BweS1tb2RlIGV2YWwuCiAgICAgaWYgKHZhcmlh
YmxlT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpICYmICFldmFsLT5pc0luU3RyaWN0Q29udGV4dCgp
ICYmIChudW1WYXJpYWJsZXMgfHwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKSkgeworICAgICAg
ICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICAgICAgSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KHZhcmlhYmxlT2JqZWN0KS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYXJpYWJsZXM7ICsraSkgewog
ICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSB1bmxpbmtlZENvZGVCbG9jay0+
dmFyaWFibGUoaSk7Ci0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkp
OwotICAgICAgICAgICAgaWYgKEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBnbG9iYWxPYmplY3QsIGlkZW50LCBz
bG90KSkgeworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlz
YWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwg
Z2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgICAgICAgICB0aHJvd1Njb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBpZiAoZm91bmQpIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxl
IGluIGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvcExl
dmVsRnVuY3Rpb25EZWNsczsgKytpKSB7CiAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7Ci0gICAgICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICAgICAgaWYgKEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLT5uYW1lKCksIHNsb3QpKSB7CisgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAg
ICAgICAgICAgYm9vbCBmb3VuZCAgPSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgZ2xvYmFsT2JqZWN0LCBmdW5j
dGlvbi0+bmFtZSgpLCBzbG90KTsKKyAgICAgICAgICAgIHRocm93U2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKKyAgICAgICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
bWFrZVN0cmluZygiQ2FuJ3QgY3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZh
bDogJyIsIFN0cmluZyhmdW5jdGlvbi0+bmFtZSgpLmltcGwoKSksICInIikpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMTE5MywxNSArMTE5MiwxNSBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KICAgICB9CiAKLSAg
ICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4g
cmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KLQotICAgIFJlZlB0cjxKSVRDb2RlPiBq
aXRDb2RlID0gZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpOwotCisgICAgUmVmUHRyPEpJVENvZGU+
IGppdENvZGU7CiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9D
YWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCB0aGlzVmFsdWUs
IDEpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8g
R0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAg
ICAgIGppdENvZGUgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisgICAgICAgIHByb3RvQ2Fs
bEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwgdGhpc1ZhbHVlLCAx
KTsKKyAgICB9CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIGRpc2FsbG93R0MuZGlz
YWJsZSgpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChqaXRDb2RlID09
IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKS5wdHIoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
aXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKQEAgLTEyNTEsMTggKzEyNTAs
MTggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYQogICAgICAgICBB
U1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZv
ciAndGhpcycuCiAgICAgfQogCi0gICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUg
bm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0K
LSAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENv
ZGUoKTsKLQotICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVm
aW5lZGAuCi0gICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCi0gICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgUmVmUHRyPEpJVENv
ZGU+IGppdENvZGU7CiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJv
dG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCBqc1VuZGVm
aW5lZCgpLCAxKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5z
dXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxl
LgorICAgICAgICBqaXRDb2RlID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpOworICAg
ICAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgor
ICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKKyAgICAgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgICAgIHByb3RvQ2Fs
bEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwganNVbmRlZmluZWQo
KSwgMSk7CisgICAgfQogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBkaXNhbGxvd0dD
LmRpc2FibGUoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0Q29k
ZSA9PSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCkucHRyKCkpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2
NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2NywxNCArMTY3LDE2IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Db25zdHJ1Y3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5R2V0QnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJ
ZGVudGlmaWVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBEaXNh
bGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCiAgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMo
cmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogICAgIHN0dWJJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
YmFzZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
VmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNh
bGxvd1ZNRW50cnkpOwogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0
LCBpZGVudCwgc2xvdCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVy
ZVJlc3VsdCgpKTsKQEAgLTE4NCwxMyArMTg2LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVHIKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5R2V0QnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkodm0pOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVy
KTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRp
Zmllci51aWQoKSk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShi
YXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2Fs
bG93Vk1FbnRyeSk7CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3Qs
IGlkZW50LCBzbG90KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRQdXJl
UmVzdWx0KCkpOwpAQCAtMTk5LDE0ICsyMDMsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UcgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2Fj
aGVhYmxlSWRlbnRpZmllcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNo
ZWFibGVJZGVudGlmaWVyKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5
U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlT
bG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MzEsMTIgKzYzMSwxNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFu
Y2VvCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdHJ5X2dldF9ieV9pZCkKIHsKICAg
ICBMTElOVF9CRUdJTigpOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0p
OwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BUcnlHZXRCeUlkPigpOwogICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5
dGVjb2RlLm1fYmFzZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0
eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKIAogICAg
IGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7Cisg
ICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
c2xvdC5nZXRQdXJlUmVzdWx0KCk7CiAKICAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQocmVzdWx0
KTsKQEAgLTEwOTMsNyArMTA5NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfcHJpdmEKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBBU1NFUlQocHJvcGVy
dHkuaXNQcml2YXRlTmFtZSgpKTsKIAotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
R2V0T3duUHJvcGVydHkpOwogICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKIApAQCAtMjMxNiw2ICsyMzE4LDEyIEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0
ZV9iYXJyaWVyX3Nsb3cKICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lv
bihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghdm0tPmRp
c2FsbG93Vk1FbnRyeUNvdW50KTsgLy8gQ3VycmVudGx5LCB0aGlzIHNob3VsZCBhbHdheXMgY3Jh
c2guCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpOwogZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjY0
NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNDcsNiArMTQ3LDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgc2xvd19wYXRoXwogI2lmIEVOQUJMRShDX0xPT1ApCiBleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikg
V1RGX0lOVEVSTkFMOwogI2VuZGlmCitleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0gg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24oVk0qLCBQ
cm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKIGV4dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9U
T19DUkFTSCB2b2lkIGxsaW50X2NyYXNoKCkgV1RGX0lOVEVSTkFMOwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6TExJbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNjQ1NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE3MCw2ICsxNzAsOSBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAg
ICAgIyBTaW5jZSB3ZSBoYXZlIHRoZSBndWFyYW50ZWUgdGhhdCB0WCAhPSBhWSB3aGVuIFggIT0g
WSwgd2UgYXJlIHNhZmUgZnJvbQogICAgICMgYWxpYXNpbmcgcHJvYmxlbXMgd2l0aCBvdXIgYXJn
dW1lbnRzLgogCisgICAgbG9hZGkgVk06OmRpc2FsbG93Vk1FbnRyeUNvdW50W3ZtXSwgdDQKKyAg
ICBidGlueiB0NCwgLmNoZWNrVk1FbnRyeVBlcm1pc3Npb24KKwogICAgIGlmIEFSTXY3CiAgICAg
ICAgIHZtRW50cnlSZWNvcmQoY2ZyLCB0MykKICAgICAgICAgbW92ZSB0Mywgc3AKQEAgLTMxOSw2
ICszMjIsMTMgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgIHBvcENhbGxlZVNhdmVz
KCkKICAgICBmdW5jdGlvbkVwaWxvZ3VlKCkKICAgICByZXQKKworLmNoZWNrVk1FbnRyeVBlcm1p
c3Npb246CisgICAgIyBXZSBnZXQgaGVyZSBiZWNhdXNlIHZtLT5kaXNhbGxvd1ZNRW50cnlDb3Vu
dCBpcyBub24temVyby4gQ3VycmVudGx5LCB0aGlzCisgICAgIyBhbHdheXMgbWVhbnMgd2Ugd2ls
bCBjcmFzaC4KKyAgICBtb3ZlIHZtLCBhMAorICAgIG1vdmUgcHJvdG9DYWxsRnJhbWUsIGExCisg
ICAgY0NhbGwyKF9sbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKQogZW5kCiAKICMgYTAs
IGEyLCB0MywgdDQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBj
b3B5KQpAQCAtMTY2LDYgKzE2Niw5IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKIAogICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQ0LCAweGJhZDBkYzAxKQogCisgICAgbG9hZGkg
Vk06OmRpc2FsbG93Vk1FbnRyeUNvdW50W3ZtXSwgdDQKKyAgICBidGlueiB0NCwgLmNoZWNrVk1F
bnRyeVBlcm1pc3Npb24KKwogICAgIHN0b3JlcCB2bSwgVk1FbnRyeVJlY29yZDo6bV92bVtzcF0K
ICAgICBsb2FkcCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXSwgdDQKICAgICBzdG9yZXAgdDQsIFZNRW50
cnlSZWNvcmQ6Om1fcHJldlRvcENhbGxGcmFtZVtzcF0KQEAgLTI4NCw2ICsyODcsMTMgQEAgbWFj
cm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgIHBvcENhbGxlZVNhdmVzKCkKICAgICBmdW5jdGlv
bkVwaWxvZ3VlKCkKICAgICByZXQKKworLmNoZWNrVk1FbnRyeVBlcm1pc3Npb246CisgICAgIyBX
ZSBnZXQgaGVyZSBiZWNhdXNlIHZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCBpcyBub24temVyby4g
Q3VycmVudGx5LCB0aGlzCisgICAgIyBhbHdheXMgbWVhbnMgd2Ugd2lsbCBjcmFzaC4KKyAgICBt
b3ZlIHZtLCBhMAorICAgIG1vdmUgcHJvdG9DYWxsRnJhbWUsIGExCisgICAgY0NhbGwyKF9sbGlu
dF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKQogZW5kCiAKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2NvcGUuaAkocmV2aXNpb24gMjY0NTc0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dTY29wZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzUsMjcgKzM1LDE4IEBAIGNsYXNzIERpc2FsbG93U2NvcGUgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93U2NvcGUpOwogICAgIFdURl9GT1JCSURfSEVBUF9B
TExPQ0FUSU9OOwogcHVibGljOgotI2lmZGVmIE5ERUJVRwotCi0gICAgQUxXQVlTX0lOTElORSBE
aXNhbGxvd1Njb3BlKGJvb2wgPSBmYWxzZSkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSB+RGlzYWxs
b3dTY29wZSgpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJbkVmZmVjdE9u
Q3VycmVudFRocmVhZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lk
IGVuYWJsZSgpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkaXNhYmxlKCkgeyB9Ci0KLSNl
bHNlIC8vIG5vdCBOREVCVUcKLQotICAgIERpc2FsbG93U2NvcGUoYm9vbCBlbmFibGVkID0gdHJ1
ZSkKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIERpc2FsbG93U2NvcGUoKQogICAgIHsKLSAgICAg
ICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkOwotICAgICAgICBpZiAobV9pc0VuYWJsZWQpCi0gICAg
ICAgICAgICBlbnRlclNjb3BlKCk7CisgICAgICAgIGF1dG8gY291bnQgPSBUOjpzY29wZVJlZW50
cnlDb3VudCgpOworICAgICAgICBUOjpzZXRTY29wZVJlZW50cnlDb3VudCgrK2NvdW50KTsKICAg
ICB9CiAKICAgICB+RGlzYWxsb3dTY29wZSgpCiAgICAgewotICAgICAgICBpZiAobV9pc0VuYWJs
ZWQpCi0gICAgICAgICAgICBleGl0U2NvcGUoKTsKKyAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNj
b3BlUmVlbnRyeUNvdW50KCk7CisgICAgICAgIEFTU0VSVChjb3VudCk7CisgICAgICAgIFQ6OnNl
dFNjb3BlUmVlbnRyeUNvdW50KC0tY291bnQpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlz
SW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKQpAQCAtNjMsMzQgKzU0LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICEhVDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKICAgICB9CiAKLSAgICB2b2lk
IGVuYWJsZSgpCi0gICAgewotICAgICAgICBtX2lzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIGVu
dGVyU2NvcGUoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpc2FibGUoKQotICAgIHsKLSAgICAgICAg
bV9pc0VuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgZXhpdFNjb3BlKCk7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIHZvaWQgZW50ZXJTY29wZSgpCi0gICAgewotICAgICAgICBhdXRvIGNvdW50ID0g
VDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKLSAgICAgICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQo
Kytjb3VudCk7Ci0gICAgfQotCi0gICAgdm9pZCBleGl0U2NvcGUoKQotICAgIHsKLSAgICAgICAg
YXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRyeUNvdW50KCk7Ci0gICAgICAgIEFTU0VSVChjb3Vu
dCk7Ci0gICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50KC0tY291bnQpOwotICAgIH0KLQot
ICAgIGJvb2wgbV9pc0VuYWJsZWQ7Ci0jZW5kaWYgLy8gTkRFQlVHCisjZWxzZSAvLyBub3QgQVNT
RVJUX0VOQUJMRUQKKyAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93U2NvcGUoKSB7IH0gLy8gV2Ug
bmVlZCB0aGlzIHRvIHBsYWNhdGUgQ2xhbmcgZHVlIHRvIHVudXNlZCB3YXJuaW5ncy4KKyAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSB7IHJl
dHVybiBmYWxzZTsgfQorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1F
bnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2Fs
bG93Vk1FbnRyeS5oCShyZXZpc2lvbiAyNjQ1NzQpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5Lmg6MjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGlzYWxsb3dTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRGlzYWxsb3dWTVJlZW50cnkgOiBwdWJsaWMgRGlzYWxsb3dT
Y29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2Fs
bG93Vk1SZWVudHJ5KTsKKyAgICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50
cnk+IEJhc2U7CitwdWJsaWM6CisjaWZkZWYgTkRFQlVHCisKKyAgICBBTFdBWVNfSU5MSU5FIERp
c2FsbG93Vk1SZWVudHJ5KGJvb2wgPSBmYWxzZSkgeyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9CisKKyNlbHNlIC8vIG5vdCBOREVCVUcKKworICAgIERp
c2FsbG93Vk1SZWVudHJ5KGJvb2wgZW5hYmxlZCA9IHRydWUpCisgICAgICAgIDogQmFzZShlbmFi
bGVkKQorICAgIHsgfQorCisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpCisgICAgeworICAg
ICAgICBzX3Njb3BlUmVlbnRyeUNvdW50LmNvbnN0cnVjdCgpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBzdGF0aWMgdW5zaWduZWQgc2NvcGVSZWVudHJ5Q291bnQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgpOworICAgIH0KKyAgICBzdGF0aWMgdm9p
ZCBzZXRTY29wZVJlZW50cnlDb3VudCh1bnNpZ25lZCB2YWx1ZSkKKyAgICB7CisgICAgICAgICpz
X3Njb3BlUmVlbnRyeUNvdW50LmdldCgpID0gdmFsdWU7CisgICAgfQorCisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25l
ZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpUcnVlPj4gc19zY29wZVJlZW50cnlDb3VudDsKKworI2Vu
ZGlmIC8vIE5ERUJVRworCisgICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlzYWxsb3dW
TVJlZW50cnk+OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAkocmV2aXNpb24gMjY0NTc0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjUsNDcgKzI1LDQ0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
RGlzYWxsb3dTY29wZS5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRGlz
YWxsb3dWTVJlZW50cnkgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4g
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93Vk1SZWVudHJ5KTsKLSAgICB0eXBl
ZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IEJhc2U7Ci1wdWJsaWM6Ci0jaWZk
ZWYgTkRFQlVHCi0KLSAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgPSBm
YWxzZSkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9
Ci0KLSNlbHNlIC8vIG5vdCBOREVCVUcKK2NsYXNzIFZNOwogCi0gICAgRGlzYWxsb3dWTVJlZW50
cnkoYm9vbCBlbmFibGVkID0gdHJ1ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9
Ci0KLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkKKy8vIFRoZSBvbmx5IHJlYXNvbiB3ZSBp
bXBsZW1lbnQgRGlzYWxsb3dWTUVudHJ5IGFzIHNwZWNpYWxpemF0aW9uIG9mIGEgdGVtcGxhdGUK
Ky8vIGlzIHNvIHRoYXQgd2UgY2FuIHdvcmsgYXJvdW5kIGhhdmluZyB0byAjaW5jbHVkZSBWTS5o
LCB3aGljaCBjYW4gaHVydCBidWlsZAorLy8gdGltZS4gVGhpcyBkZWZlcnMgdGhlIGNvc3Qgb2Yg
I2luY2x1ZGUnaW5nIFZNLmggdG8gb25seSB0aGUgY2xpZW50cyB0aGF0CisvLyBuZWVkIGl0Lgor
Cit0ZW1wbGF0ZTxjbGFzcyBWTVR5cGUgPSBWTT4KK2NsYXNzIERpc2FsbG93Vk1FbnRyeUltcGwg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93Vk1FbnRyeUltcGwpOworcHVibGlj
OgorICAgIERpc2FsbG93Vk1FbnRyeUltcGwoVk1UeXBlJiB2bSkKKyAgICAgICAgOiBtX3ZtKCZ2
bSkKICAgICB7Ci0gICAgICAgIHNfc2NvcGVSZWVudHJ5Q291bnQuY29uc3RydWN0KCk7CisgICAg
ICAgIG1fdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50Kys7CiAgICAgfQogCi1wcml2YXRlOgotICAg
IHN0YXRpYyB1bnNpZ25lZCBzY29wZVJlZW50cnlDb3VudCgpCisgICAgfkRpc2FsbG93Vk1FbnRy
eUltcGwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgp
OwotICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTY29wZVJlZW50cnlDb3VudCh1bnNpZ25lZCB2
YWx1ZSkKLSAgICB7Ci0gICAgICAgICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgpID0gdmFsdWU7
CisgICAgICAgIGlmIChtX3ZtKQorICAgICAgICAgICAgcmVsZWFzZSgpOwogICAgIH0KIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lm
aWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291
bnQ7CisgICAgYm9vbCBpc0VuZ2FnZWQoKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CiAKLSNlbmRp
ZiAvLyBOREVCVUcKKyAgICB2b2lkIHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQpOworICAgICAgICBtX3ZtLT5kaXNhbGxv
d1ZNRW50cnlDb3VudC0tOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBm
cmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT47Citwcml2YXRlOgor
ICAgIFZNVHlwZSogbV92bTsKIH07CiAKK3VzaW5nIERpc2FsbG93Vk1FbnRyeSA9IERpc2FsbG93
Vk1FbnRyeUltcGw8Vk0+OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAJKHJldmlz
aW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1S
ZWVudHJ5LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwotTGF6eU5ldmVyRGVzdHJveWVkPFRo
cmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBEaXNhbGxv
d1ZNUmVlbnRyeTo6c19zY29wZVJlZW50cnlDb3VudDsKLSNlbmRpZgotICAgIAotfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZN
UmVlbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
c2FsbG93Vk1SZWVudHJ5LmgJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEaXNhbGxvd1Njb3BlLmgiCi0jaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi1jbGFzcyBEaXNhbGxvd1ZNUmVlbnRyeSA6IHB1YmxpYyBEaXNhbGxvd1Nj
b3BlPERpc2FsbG93Vk1SZWVudHJ5PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzYWxs
b3dWTVJlZW50cnkpOwotICAgIHR5cGVkZWYgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRy
eT4gQmFzZTsKLXB1YmxpYzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlz
YWxsb3dWTVJlZW50cnkoYm9vbCA9IGZhbHNlKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyB2b2lkIGluaXRpYWxpemUoKSB7IH0KLQotI2Vsc2UgLy8gbm90IE5ERUJVRwotCi0gICAgRGlz
YWxsb3dWTVJlZW50cnkoYm9vbCBlbmFibGVkID0gdHJ1ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJs
ZWQpCi0gICAgeyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAg
ICAgIHNfc2NvcGVSZWVudHJ5Q291bnQuY29uc3RydWN0KCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIHN0YXRpYyB1bnNpZ25lZCBzY29wZVJlZW50cnlDb3VudCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gKnNfc2NvcGVSZWVudHJ5Q291bnQuZ2V0KCk7Ci0gICAgfQotICAgIHN0YXRpYyB2b2lk
IHNldFNjb3BlUmVlbnRyeUNvdW50KHVuc2lnbmVkIHZhbHVlKQotICAgIHsKLSAgICAgICAgKnNf
c2NvcGVSZWVudHJ5Q291bnQuZ2V0KCkgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVk
LCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50OwotCi0jZW5k
aWYgLy8gTkRFQlVHCi0KLSAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZN
UmVlbnRyeT47Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNjQ1NzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw4IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5p
dGl6ZWRUb1N0cmluZygKIAogICAgIEpTVmFsdWUgbmFtZVZhbHVlOwogICAgIGF1dG8gbmFtZVBy
b3BlcnROYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZTsKLSAgICBQcm9wZXJ0eVNsb3QgbmFt
ZVNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7
CisgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlT
bG90IG5hbWVTbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogCiAgICAgSlNWYWx1ZSBjdXJyZW50T2JqID0gdGhp
czsKICAgICB1bnNpZ25lZCBwcm90b3R5cGVEZXB0aCA9IDA7CkBAIC0xNjcsNyArMTY4LDcgQEAg
U3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKAogCiAgICAgSlNWYWx1ZSBt
ZXNzYWdlVmFsdWU7CiAgICAgYXV0byBtZXNzYWdlUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5h
bWVzLT5tZXNzYWdlOwotICAgIFByb3BlcnR5U2xvdCBtZXNzYWdlU2xvdCh0aGlzLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qg
bWVzc2FnZVNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUHJvcGVydE5hbWUsIG1lc3NhZ2VTbG90
KSAmJiBtZXNzYWdlU2xvdC5pc1ZhbHVlKCkpCiAgICAgICAgIG1lc3NhZ2VWYWx1ZSA9IG1lc3Nh
Z2VTbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgbWVzc2FnZVByb3BlcnROYW1lKTsKICAgICBz
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDI2NDU3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dW
TVJlZW50cnkuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
SlNDQ29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCkBAIC03OCwxMCArNzcsOCBAQCB2
b2lkIGluaXRpYWxpemUoKQogICAgICAgICAgICAgZW5hYmxlU2lnaWxsQ3Jhc2hBbmFseXplcigp
OwogCiAgICAgICAgIExMSW50Ojppbml0aWFsaXplKCk7Ci0jaWZuZGVmIE5ERUJVRwogICAgICAg
ICBEaXNhbGxvd0dDOjppbml0aWFsaXplKCk7Ci0gICAgICAgIERpc2FsbG93Vk1SZWVudHJ5Ojpp
bml0aWFsaXplKCk7Ci0jZW5kaWYKKwogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7
CiAgICAgICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIHRo
cmVhZC5zZXRTYXZlZExhc3RTdGFja1RvcCh0aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjY0
NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAw
IEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYg
QWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTk2LDggKzk2LDcgQEAg
SlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogCiAgICAgSlNBcnJheSog
cmVzdWx0ID0gY3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgZGVmZXJyYWxDb250ZXh0LCBzdHJ1Y3R1
cmUsIGJ1dHRlcmZseSk7CiAKLSAgICBjb25zdCBib29sIGNyZWF0ZVVuaW5pdGlhbGl6ZWQgPSB0
cnVlOwotICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQsIGNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOworICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJs
b28uY2EpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqICBDb3B5cmln
aHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA4LDkgKzUw
OCwxMCBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOCiAgICAgaWYg
KG1vZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CiAgICAgICAgIGlmICghdGhpc09i
amVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgotICAgICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSk7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsK
KyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAg
ICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNsb3Qp
OwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAg
ICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKICAgICAgICAgICAgIGlmICh0aGlz
T2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygp
KSB7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+
YXJndW1lbnRzKTsKQEAgLTU2Myw5ICs1NjQsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBKU0dsbwogICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CiAgICAgICAg
IC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNh
biBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0
IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCi0gICAgICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwot
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0U2xvdCk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgeworICAgICAgICAg
ICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICBQcm9w
ZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRTbG90KTsKKyAgICAgICAgICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEq
IHJhcmVEYXRhID0gdGhpc09iamVjdC0+cmFyZURhdGEoKSkKICAgICAgICAgICAgIHJhcmVEYXRh
LT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CkBAIC02NDIsOSArNjQ2LDEy
IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICBpZiAocHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkgewogICAgICAgICAvLyBN
YWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25s
eSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQg
aW4gRUNNQS0yNjIgOC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAg
dGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93
Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgICAgICB9CiAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNP
YmplY3QtPnJhcmVEYXRhKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRv
IHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Niw5ICsx
NTYsMTEgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgZ2V0UHJvcGVydHlTbG90IG9wZXJhdGlvbiBz
aG91bGQgbm90IGJlIG9ic2VydmVkIGJ5IHRoZSBQcm94eS4KICAgICAgICAgICAgIC8vIFNvIHdl
IHVzZSBWTUlucXVpcnkuIEFuZCBwdXJnZSB0aGUgb3BhcXVlIG9iamVjdCBjYXNlcyAocHJveHkg
YW5kIG5hbWVzcGFjZSBvYmplY3QpIGJ5IGlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgZ3VhcmQu
Ci0gICAgICAgICAgICBQcm9wZXJ0eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgRGlzYWxsb3dW
TUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgbGVu
Z3RoU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICAgICAgb2JqZWN0LT5nZXRQcm9wZXJ0eVNs
b3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGxlbmd0aFNsb3QpOwot
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAg
ICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICAgICAgZGlzYWxsb3dWTUVu
dHJ5LnJlbGVhc2UoKTsKIAogICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRvckZ1bmMgPSBvYmpl
Y3QtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAko
cmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDggQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6c2V0R2xvYmFsVGhpcyhWTSYgdgogc3RhdGljIEdldHRlclNldHRlciogZ2V0
R2V0dGVyQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlKGJhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChnbG9iYWxP
YmplY3QsIGlkZW50LCBzbG90KTsKICAgICByZXR1cm4ganNDYXN0PEdldHRlclNldHRlcio+KHNs
b3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KQEAgLTEzODMsMTAgKzEzODQsMTMgQEAgYm9vbCBKU0ds
b2JhbE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSgogYm9vbCBKU0dsb2JhbE9iamVjdDo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKLSAgICAvLyBzaWxlbnRseSBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIGFjY2Vz
c29ycyBhbGlhc2luZyB2YXJzLgotICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlw
dG9yKCkgJiYgc3ltYm9sVGFibGVHZXQodGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeSh0aGlzT2JqZWN0LT52bSgpKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIC8vIHNpbGVudGx5IGlnbm9yZSBhdHRlbXB0
cyB0byBhZGQgYWNjZXNzb3JzIGFsaWFzaW5nIHZhcnMuCisgICAgICAgIGlmIChkZXNjcmlwdG9y
LmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgc3ltYm9sVGFibGVHZXQodGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAg
cmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CiAKQEAgLTIwNTIsNyAr
MjA1Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICAg
ICAgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0LmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVE
ZXRhaWwoIldhcyBub3QgYWJsZSB0byBzZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRjaHBvaW50LiIp
KTsKICAgICB9OwogCi0gICAgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChhcnJheVByb3Rv
dHlwZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgUHJvcGVydHlTbG90IGNv
bnN0cnVjdG9yU2xvdChhcnJheVByb3RvdHlwZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgYXJyYXlQcm90b3R5cGUt
PmdldE93blByb3BlcnR5U2xvdChhcnJheVByb3RvdHlwZSwgdGhpcywgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIGNvbnN0cnVjdG9yU2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKICAgICBpZiAoY29uc3RydWN0b3JTbG90LnNsb3RCYXNlKCkgIT0gYXJyYXlQcm90
b3R5cGUKQEAgLTIwNjYsNyArMjA3MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3Rh
bGxBcnJheVNwZWMKICAgICBpZiAoY29uc3RydWN0b3JTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgp
KQogICAgICAgICBjb25zdHJ1Y3RvclN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yU3RydWN0dXJlLT5m
bGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXJyYXlDb25zdHJ1Y3Rvcik7CiAKLSAgICBQ
cm9wZXJ0eVNsb3Qgc3BlY2llc1Nsb3QoYXJyYXlDb25zdHJ1Y3RvciwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNwZWNpZXNT
bG90KGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgIGFycmF5Q29uc3RydWN0b3ItPmdldE93
blByb3BlcnR5U2xvdChhcnJheUNvbnN0cnVjdG9yLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
cGVjaWVzU3ltYm9sLCBzcGVjaWVzU2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24o
KTsKICAgICBpZiAoc3BlY2llc1Nsb3Quc2xvdEJhc2UoKSAhPSBhcnJheUNvbnN0cnVjdG9yCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lv
biAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTM0
LDkgKzUzNCwxMSBAQCBTdHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAK
ICAgICAvLyBDaGVjayBmb3IgYSBkaXNwbGF5IG5hbWUgb2Ygb2JqLmNvbnN0cnVjdG9yLgogICAg
IC8vIFRoaXMgaXMgdXNlZnVsIHRvIGdldCBgRm9vYCBmb3IgdGhlIGAoY2xhc3MgRm9vKS5wcm90
b3R5cGVgIG9iamVjdC4KLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIGlmIChvYmplY3QtPmdldE93
blByb3BlcnR5U2xvdChvYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIHNsb3QpKSB7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKKyAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgIGJvb2wgZm91bmQgPSBvYmplY3Qt
PmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIHNsb3QpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Cisg
ICAgaWYgKGZvdW5kKSB7CiAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgewogICAgICAgICAg
ICAgaWYgKEpTT2JqZWN0KiBjdG9yT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZt
LCBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IpKSkgewogICAgICAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvckZ1bmN0
aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGN0b3JPYmplY3QpKQpAQCAtNTU4
LDkgKzU2MCwxMCBAQCBTdHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAg
ICAgICAgICAgICBKU1ZhbHVlIHByb3RvVmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCh2bSk7CiAgICAgICAgICAgICBpZiAocHJvdG9WYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gYXNPYmplY3QocHJvdG9WYWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QocHJvdG9WYWx1ZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBy
b3RvT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3Rvciwgc2xvdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0FT
U0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90KHByb3RvVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgICAgIGJvb2wgZm91bmQgPSBwcm90
b09iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIHNsb3QpOworICAgICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChzbG90LmlzVmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0KiBjdG9yT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBzbG90LmdldFZh
bHVlKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvckZ1bmN0
aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGN0b3JPYmplY3QpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJl
dmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsNiArNTg0LDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KTsKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7CiAg
ICAgICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOwpAQCAtNTk0LDYgKzU5NSw3IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUYKICAgICAgICAgLy8gYXMg
aW4gSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KCkKICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNQogICAgIH0KKyNlbmRp
ZgogCiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QsIGF0dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQp
OwogICAgIHJldHVybiB0cnVlOwpAQCAtNjA0LDYgKzYwNiw3IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpnZXRQcml2YXRlRmllbGQoSlMKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3Qp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoIUpT
T2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkgeworICAgICAgICBBU1NFUlQoIXNsb3QuaXNWTUlucXVpcnkoKSk7CiAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2
YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGZhbHNlKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTIsOCArMTUyLDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIERpc2Fs
bG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChnbG9iYWxPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICBib29sIGhhc093blByb3BlcnR5ID0gZ2xv
YmFsT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGlkZW50LCBzbG90KTsKKyAgICAgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgICAgICBkaXNhbGxvd1ZNRW50cnkucmVsZWFzZSgpOwogICAgICAgICBpZiAoIWhhc093blBy
b3BlcnR5KSB7CiAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShVbnJlc29sdmVk
UHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgMCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0
LDExICszNCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBB
U1NFUlRfRU5BQkxFRAorCiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlKFZNJiB2bSkKICAgICA6IG1fdm0odm0pCi0gICAgLCBtX2Rpc2FsbG93R0Mo
ZmFsc2UpCi0gICAgLCBtX2Rpc2FsbG93Vk1SZWVudHJ5KGZhbHNlKQogewogfQogCkBAIC01MCwy
MSArNDksMjAgQEAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9iamVjdEluaXRpYQogICAg
IHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChtX29iamVjdCk7CiB9CiAKLXZvaWQgT2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiBvYmplY3Qs
IGJvb2wgd2FzQ3JlYXRlZFVuaW5pdGlhbGl6ZWQpCit2b2lkIE9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGU6Om5vdGlmeUFsbG9jYXRlZChKU09iamVjdCogb2JqZWN0KQogewotICAgIGlmICh3YXND
cmVhdGVkVW5pbml0aWFsaXplZCkgewotICAgICAgICBtX2Rpc2FsbG93R0MuZW5hYmxlKCk7Ci0g
ICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZW5hYmxlKCk7Ci0gICAgICAgIG1fb2JqZWN0ID0g
b2JqZWN0OwotICAgIH0gZWxzZQotICAgICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6
ZWQob2JqZWN0KTsKKyAgICBBU1NFUlQoIW1fZGlzYWxsb3dHQyk7CisgICAgQVNTRVJUKCFtX2Rp
c2FsbG93Vk1FbnRyeSk7CisgICAgbV9kaXNhbGxvd0dDLmVtcGxhY2UoKTsKKyAgICBtX2Rpc2Fs
bG93Vk1FbnRyeS5lbXBsYWNlKG1fdm0pOworICAgIG1fb2JqZWN0ID0gb2JqZWN0OwogfQogCiB2
b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAgICAgIG1fZGlzYWxsb3dHQy5k
aXNhYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZGlzYWJsZSgpOworICAgICAg
ICBtX2Rpc2FsbG93R0MucmVzZXQoKTsKKyAgICAgICAgbV9kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKICAgICAgICAgbV9vYmplY3QgPSBudWxscHRyOwogICAgIH0KICAgICB2ZXJpZnlQcm9wZXJ0
aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKQEAgLTExNCw2ICsxMTIsNyBAQCB2b2lkIE9iamVj
dEluaXRpYWxpemF0aW9uU2NvcGU6OnZlcmlmeVByCiAgICAgICAgIH0KICAgICB9CiB9Ci0jZW5k
aWYKKworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNTQgKzI2LDU1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRlZmVyR0Mu
aCIKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgorI2luY2x1ZGUgIkRpc2FsbG93Vk1F
bnRyeS5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBWTTsKIGNsYXNzIEpTT2JqZWN0OwogCi0jaWZkZWYgTkRF
QlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIAogY2xhc3MgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZSB7CiBwdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSBPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
KFZNJiB2bSkKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgIHsgfQotICAgIEFMV0FZU19JTkxJTkUg
fk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKQotICAgIHsKLSAgICAgICAgbV92bS5oZWFwLm11
dGF0b3JGZW5jZSgpOwotICAgIH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlKFZNJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUoKTsKIAotICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1
cm4gbV92bTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmpl
Y3QqLCBib29sKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQo
SlNPYmplY3QqKSB7IH0KKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CisgICAg
dm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKTsKKyAgICB2b2lkIG5vdGlmeUluaXRpYWxp
emVkKEpTT2JqZWN0Kik7CiAKIHByaXZhdGU6CisgICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVzQXJl
SW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKKwogICAgIFZNJiBtX3ZtOworICAgIE9wdGlvbmFsPERp
c2FsbG93R0M+IG1fZGlzYWxsb3dHQzsKKyAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IG1f
ZGlzYWxsb3dWTUVudHJ5OworICAgIEpTT2JqZWN0KiBtX29iamVjdCB7IG51bGxwdHIgfTsKIH07
CiAKLSNlbHNlIC8vIG5vdCBOREVCVUcKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogCiBj
bGFzcyBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKKyAgICBBTFdBWVNfSU5MSU5FIE9i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisgICAg
eyB9CisgICAgQUxXQVlTX0lOTElORSB+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSgpCisgICAg
eworICAgICAgICBtX3ZtLmhlYXAubXV0YXRvckZlbmNlKCk7CisgICAgfQogCi0gICAgVk0mIHZt
KCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpTT2Jq
ZWN0KiwgYm9vbCB3YXNDcmVhdGVkVW5pbml0aWFsaXplZCk7Ci0gICAgdm9pZCBub3RpZnlJbml0
aWFsaXplZChKU09iamVjdCopOworICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyBy
ZXR1cm4gbV92bTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNP
YmplY3QqKSB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNP
YmplY3QqKSB7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0
aWFsaXplZChKU09iamVjdCopOwotCiAgICAgVk0mIG1fdm07Ci0gICAgRGlzYWxsb3dHQyBtX2Rp
c2FsbG93R0M7Ci0gICAgRGlzYWxsb3dWTVJlZW50cnkgbV9kaXNhbGxvd1ZNUmVlbnRyeTsKLSAg
ICBKU09iamVjdCogbV9vYmplY3QgeyBudWxscHRyIH07CiB9OwogCi0jZW5kaWYgLy8gTkRFQlVH
CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAw
NS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjEsNiArMjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01B
bm5vdGF0aW9uLmgiCisjaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiR2V0
Vk0uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgi
CkBAIC0xMTIsMTAgKzExMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIE1vZHVsZU5hbWVzcGFjZSwg
Ly8gTW9kdWxlTmFtZXNwYWNlT2JqZWN0J3MgZW52aXJvbm1lbnQgYWNjZXNzLgogICAgIH07CiAK
LSAgICBleHBsaWNpdCBQcm9wZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUsIEludGVy
bmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUpCisgICAgZXhwbGljaXQgUHJvcGVydHlT
bG90KGNvbnN0IEpTVmFsdWUgdGhpc1ZhbHVlLCBJbnRlcm5hbE1ldGhvZFR5cGUgaW50ZXJuYWxN
ZXRob2RUeXBlLCBEaXNhbGxvd1ZNRW50cnkqIGRpc2FsbG93Vk1FbnRyeSA9IG51bGxwdHIpCiAg
ICAgICAgIDogbV90aGlzVmFsdWUodGhpc1ZhbHVlKQogICAgICAgICAsIG1faW50ZXJuYWxNZXRo
b2RUeXBlKGludGVybmFsTWV0aG9kVHlwZSkKICAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
ZGlzYWxsb3dWTUVudHJ5LCAoaW50ZXJuYWxNZXRob2RUeXBlID09IEludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5KSA9PSAhIWRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoZGlzYWxsb3dWTUVudHJ5LCAhZGlzYWxsb3dWTUVudHJ5IHx8IGRpc2FsbG93Vk1FbnRyeS0+
aXNFbmdhZ2VkKCkpOyAgICAgICAgCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IHNsb3RCYXNlIC8gcmVjZWl2ZXIgYmVoYXZpb3IgZGlmZmVyZW5jZSBpbiBjdXN0b20gdmFsdWVz
IGFuZCBjdXN0b20gYWNjZXNzb3JzLgpAQCAtMTM5LDYgKzE0Miw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1RhaW50ZWRC
eU9wYXF1ZU9iamVjdDsgfQogCiAgICAgSW50ZXJuYWxNZXRob2RUeXBlIGludGVybmFsTWV0aG9k
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxNZXRob2RUeXBlOyB9CisgICAgYm9vbCBp
c1ZNSW5xdWlyeSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxNZXRob2RUeXBlID09IEludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5OyB9CiAKICAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVz
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDgg
KzU0LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYQogCiAgICAg
SlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgZGVmZXJy
YWxDb250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiAKLSAgICBjb25zdCBib29sIGNyZWF0
ZVVuaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQs
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQpOworICAgIHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzI3LDggKzcyNyw5IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVyOjpT
dGFja0ZyYW1lOjpuYW0KIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbGVlLT5nbG9iYWxPYmpl
Y3Qodm0pOworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOwogICAgIGF1
dG8gZ2V0UHJvcGVydHlJZlB1cmVPcGVyYXRpb24gPSBbJl0gKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KSAtPiBTdHJpbmcgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsZWUsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChjYWxsZWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOwogICAgICAgICBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKGlkZW50KTsKICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGNhbGxlZS0+Z2V0UHJvcGVy
dHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
cmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
d29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw4IEBAIHB1YmxpYzoKICN1bmRlZiBEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUgogCiAgICAgVk1UeXBlIHZtVHlwZTsKKyAgICB1
bnNpZ25lZCBkaXNhbGxvd1ZNRW50cnlDb3VudCB7IDAgfTsKKwogICAgIENsaWVudERhdGEqIGNs
aWVudERhdGE7CiAgICAgRW50cnlGcmFtZSogdG9wRW50cnlGcmFtZSB7IG51bGxwdHIgfTsKICAg
ICAvLyBOT1RFOiBXaGVuIHRocm93aW5nIGFuIGV4Y2VwdGlvbiB3aGlsZSByb2xsaW5nIGJhY2sg
dGhlIGNhbGwgZnJhbWUsIHRoaXMgbWF5IGJlIGVxdWFsIHRvCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDI2NDU3NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiVk1FbnRyeVNjb3BlLmgiCiAKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgogI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiVk0uaCIKQEAgLTM5LDcgKzM4LDYgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0m
IHZtLCBKU0dsbwogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkKIHsKLSAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZmZWN0T25DdXJy
ZW50VGhyZWFkKCkpOwogICAgIGlmICghdm0uZW50cnlTY29wZSkgewogICAgICAgICB2bS5lbnRy
eVNjb3BlID0gdGhpczsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODk1LDkgKzI4OTUsMTAgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gYXNTdHJpbmcocHJvcGVydHkpLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgUHJvcGVydHlTbG90
IHNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkp
OworICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgIFByb3BlcnR5
U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKICAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAogICAgIEpTVmFsdWUg
cmVzdWx0OwogICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjQ1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw1NSBAQAorMjAyMC0wNy0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywg
YW5kIERpc2FsbG93Vk1SZWVudHJ5IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUzOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjU3OTU3Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjph
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5l
cmF0ZVB1dEJ5SW5kZXgpOgorICAgICAgICAoR2VuZXJhdGVEZWZpbmVPd25Qcm9wZXJ0eSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpkZWZpbmVP
d25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb246OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVmaW5l
T3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb246OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dCk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXRC
eUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwdXQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHV0QnlJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6cHV0
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpwdXRCeUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpkZWZp
bmVPd25Qcm9wZXJ0eSk6CisKIDIwMjAtMDctMTkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBDb2xvckJ1aWxkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw3ICs1OSw4IEBAIHN0YXRpYyBib29sIGlzVmlz
aWJsZU5hbWVkUHJvcGVydHkoSlNDOjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAg
IC8vIDIuIElmIE8gaGFzIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxz
ZS4KLSAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OworICAgIEpTQzo6RGlzYWxs
b3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAg
IEpTQzo6UHJvcGVydHlTbG90IHNsb3QoJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgaWYg
KEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKQEAgLTk5LDcgKzEwMCw4IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFBy
b3BlcnR5KEoKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIC8vIDIuIElmIE8g
aGFzIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4KLSAgICBKU0M6
OlByb3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OworICAgIEpTQzo6RGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgIEpTQzo6UHJvcGVy
dHlTbG90IHNsb3QoJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CiAgICAgaWYgKEpTQzo6SlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtOTY1LDkgKzk2NSwxNCBA
QCBzdWIgR2VuZXJhdGVQdXQKICAgICAgICAgCiAgICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5z
ID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwg
Ik92ZXJyaWRlQnVpbHRpbnMiKTsKICAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgewot
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkgfTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBib29sIGZvdW5kO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBmb3VuZCA9
IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIH1cbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWZvdW5kKSB7XG4iKTsKICAgICAgICAg
ICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQogCkBAIC0xMDQxLDkg
KzEwNDYsMTQgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICAgICAgICAgIAogICAg
ICAgICBteSAkYWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAgICBpZiAoISRvdmVycmlkZUJ1
aWx0aW5zKSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIShwcm90b3R5cGUu
aXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgZm91bmQ7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmRpc2FsbG93Vk1FbnRyeSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3Qodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWZvdW5kKSB7XG4iKTsKICAgICAgICAg
ICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTExNzYsOCArMTE4NiwxMyBAQCBzdWIgR2VuZXJhdGVEZWZpbmVPd25Qcm9wZXJ0eQogICAgICAg
ICAgICAgIyBGSVhNRTogSXMgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCB0aGUgcmlnaHQg
ZnVuY3Rpb24gdG8gY2FsbD8gSXMgdGhlcmUgYSBmdW5jdGlvbiB0aGF0IHdpbGwKICAgICAgICAg
ICAgICMgICAgICAgIG9ubHkgbG9vayBhdCB0aGUgYWN0dWFsIHByb3BlcnRpZXMsIGFuZCBub3Qg
Y2FsbCBpbnRvIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKICAgICAgICAgICAgICMgICAgICAg
IFtbR2V0T3duUHJvcGVydHldXSBob29rPwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAg
ICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIGJvb2wgZm91bmQ7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQu
ICIgICAgICAgIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRp
b25hbEluZGVudC4gIiAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5
KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZkaXNhbGxvd1ZNRW50cnkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRp
dGlvbmFsSW5kZW50LiAiICAgICAgICB9XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIGlmICghZm91bmQpIHtcbiIpOwogICAg
ICAgICAgICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAgICAgICAg
IGlmICghJG5hbWVkU2V0dGVyT3BlcmF0aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNp
b24gMjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzNCw5ICsyMzQsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aQogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhp
c09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
KTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAg
ICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9
IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9
CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAg
ICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHRydWUpOwpAQCAtMjYzLDkgKzI2OCwxNCBAQCBib29sIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0g
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
OwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSkt
PmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlz
YWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1F
bnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yOTIsOCArMzAyLDEzIEBAIGJvb2wgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICB9CiAKICAgICBpZiAoIXByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAg
ICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5k
OworICAgICAgICB7CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRy
eShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3VuZCA9IEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAg
ICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY0NTc0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDkgKzIzNCwxNCBAQCBi
b29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAgICAgfQogCiAgICAgaWYg
KCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBi
b29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxs
b3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0y
NjMsOSArMjY4LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcK
ICAgICB9CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGlu
ZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsK
KyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAg
ICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdl
dFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgIH0KKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0
cnVlKTsKQEAgLTI5Miw4ICszMDIsMTMgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZwogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsK
LSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAg
ICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCkpOworICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkp
OworICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAg
ICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNj
cmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZp
c2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDMsOSArMjQzLDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW4KICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0g
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsK
KyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgZm91
bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3Miw5ICsyNzcsMTQgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsg
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9
OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxv
d1ZNRW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQpIHsKICAgICAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMzAxLDggKzMxMSwxMyBAQCBib29s
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAgICAgfQogCiAgICAgaWYgKCFw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsK
LSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBm
b3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZN
RW50cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJl
dmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
Nyw5ICsyMDcsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAg
IGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAo
IShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAg
ICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRp
c2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91
bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpA
QCAtMjI4LDkgKzIzMywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpw
dXRCCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwog
CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0g
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAgewor
ICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91bmQg
PSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9Cisg
ICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBA
IC0yNDcsOCArMjU3LDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRl
ZmkKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAK
ICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xv
dCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAg
ICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5
IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICBmb3Vu
ZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZv
dW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlw
dG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI2NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDkgKzIwNywxNCBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkg
ewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAg
ICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRy
eSk7CisgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAg
IGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yMjgsOSArMjMzLDE0IEBAIGJvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0g
ICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7
CisgICAgYm9vbCBmb3VuZDsKKyAgICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxv
d1ZNRW50cnkodm0pOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5
KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3Qodm0pOworICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgIH0KKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI0Nyw4ICsyNTcsMTMgQEAgYm9vbCBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9s
KCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7CisgICAgICAgIHsKKyAg
ICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCkpOworICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZN
RW50cnkpOworICAgICAgICAgICAgIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVy
dHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY0NTc0KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsOSArMjEzLDE0IEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5
TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQ7
CisgICAgICAgIHsKKyAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnko
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhp
c09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOworICAgICAgICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTIzNCw5ICsyMzks
MTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdQogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xv
dCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kOworICAgIHsKKyAgICAgICAgRGlzYWxs
b3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeSh2bSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CisgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghZm91bmQp
IHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjUzLDggKzI2Mywx
MyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlCiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAg
ICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3Vu
ZDsKKyAgICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50
cnkobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAg
ICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Y3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzNSw5ICsyMzUsMTQgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyOgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwot
ICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUp
LT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxs
b3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAg
ICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAg
ICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRydWUpOwpAQCAtMjU2LDkgKzI2MSwxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXI6CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZt
LCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5
cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91
bmQ7CisgICAgeworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsK
KyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAg
ICAgICAgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUp
LT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgdHJ1ZSk7CkBAIC0yNzgsOCArMjg4LDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlcjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwcm9wZXJ0
eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAg
ICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZDsK
KyAgICAgICAgeworICAgICAgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnko
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICAgZm91bmQgPSBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw5ICsyNDMsMTQgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQogICAgIH0KIAogICAgIGlmICghcHJv
cGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0g
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAgYm9vbCBm
b3VuZDsKKyAgICAgICAgeworICAgICAgICAgICAgRGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1F
bnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnksICZkaXNhbGxvd1ZNRW50cnkpOworICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CisgICAgICAgICAgICBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB9CisgICAgICAgIGlmICghZm91bmQpIHsKICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjcyLDkg
KzI3NywxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAg
fQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7
Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQ7CisgICAg
eworICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlzYWxsb3dWTUVudHJ5KHZtKTsKKyAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgZm91
bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9
CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7
CkBAIC0zMDEsOCArMzExLDEzIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckEKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICAg
RGlzYWxsb3dWTUVudHJ5IGRpc2FsbG93Vk1FbnRyeShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
KTsKKyAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAg
ICAgICAgICAgICBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRv
ci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24g
MjY0NTc0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjMxLDkgKzIzMSwxNCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwog
CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQ
cm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAg
IGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFBy
b3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewor
ICAgICAgICBib29sIGZvdW5kOworICAgICAgICB7CisgICAgICAgICAgICBEaXNhbGxvd1ZNRW50
cnkgZGlzYWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSwgJmRpc2FsbG93Vk1FbnRyeSk7CisgICAgICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGZvdW5kID0gcHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1
ZSk7CkBAIC0yNTIsOSArMjU3LDE0IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3AKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4
KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZDsKKyAg
ICB7CisgICAgICAgIERpc2FsbG93Vk1FbnRyeSBkaXNhbGxvd1ZNRW50cnkodm0pOworICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOworICAgICAgICBm
b3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFBy
b3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
IH0KKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVl
KTsKQEAgLTI3Nyw4ICsyODcsMTMgQEAgc3RhdGljIGJvb2wgaXNVbmZvcmdlYWJsZVByb3BlcnR5
TmFtZShQcgogfQogCiAgICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5TmFtZShwcm9w
ZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAg
ICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgICAgICBib29sIGZv
dW5kOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBEaXNhbGxvd1ZNRW50cnkgZGlz
YWxsb3dWTUVudHJ5KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmZGlzYWxsb3dWTUVudHJ5KTsKKyAgICAgICAgICAgICAgICAg
Zm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404864</attachid>
            <date>2020-07-21 14:48:48 -0700</date>
            <delta_ts>2020-07-21 17:25:47 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539b.patch</filename>
            <type>text/plain</type>
            <size>45555</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NjgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBA
QAorMjAyMC0wNy0yMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgRGlzYWxsb3dTY29wZSwgRGlzYWxsb3dHQywgYW5kIERpc2FsbG93Vk1SZWVudHJ5
IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFByZXZpb3VzbHksIERpc2FsbG93U2NvcGUgbmVlZGVkIHRvIHN1cHBvcnQgZW5h
YmxpbmcgYW5kIGRpc2FibGluZy4gIFRoaXMgd2FzCisgICAgICAgIG9ubHkgbmVlZGVkIHRvIGVu
YWJsZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS4gIE5v
dywgd2UKKyAgICAgICAgY2FuIG1ha2UgdGhlIERpc2FsbG93R0MgYW5kIERpc2FsbG93Vk1SZWVu
dHJ5IGluc2lkZSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlCisgICAgICAgIG9wdGlvbmFsIHdp
dGggV1RGOjpPcHRpb25hbC4gIFdpdGggdGhhdCB3ZSBjYW4gc2ltcGxpZnkgdGhlc2Ugc2NvcGVz
IGFuZCBtYWtlCisgICAgICAgIHRoZW0gdHJ1ZSBSQUlJIHNjb3BlIG9iamVjdHMuCisKKyAgICAg
ICAgSG93ZXZlciwgdGhlcmUgaXMgc3RpbGwgb25lIGV4Y2VwdGlvbjogRGlzYWxsb3dWTVJlZW50
cnkgbmVlZHMgYSByZWxlYXNlKCkgbWV0aG9kCisgICAgICAgIHRvIGFsbG93IGl0IHRvIGRpc2Fi
bGUgdGhlIFJBSUkgc2NvcGUgYWhlYWQgb2YgZGVzdHJ1Y3Rpb24uICBUaGlzIHdpbGwgYmUgdXNl
ZAorICAgICAgICBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBk
b2VzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgMS4gUmVuYW1lZCBEaXNhbGxvd1ZNUmVlbnRy
eSB0byBEaXNhbGxvd1ZNRW50cnkuCisgICAgICAgICAgIFRoZSBzY29wZSBjYW4gYmUgdXNlZCB0
byBkaXNhYmxlIFZNIGVudHJ5IGNvbXBsZXRlbHkuICBUaGVyZSdzIG5vIG5lZWQgdG8KKyAgICAg
ICAgICAgcmVzdHJpY3QgaXQgdG8gb25seSByZS1lbnRyaWVzLgorCisgICAgICAgIDIuIEVuZm9y
Y2VtZW50IG9mIERpc2FsbG93Vk1SZWVudHJ5IGlzIG5vdyBkb25lIGluIHRoZSBMTEludCdzIGRv
Vk1FbnRyeSgpIGluc3RlYWQKKyAgICAgICAgICAgb2YgdGhlIFZNRW50cnlTY29wZSdzIGNvbnN0
cnVjdG9yLiAgVGhpcyBpcyBhIHN0cm9uZ2VyIGd1YXJhbnRlZS4KKworICAgICAgICAgICBJZiBP
cHRpb25zOjpjcmFzaE9uRGlzYWxsb3dlZFZNRW50cnkoKSBpcyB0cnVlLCB0aGUgVk0gd2lsbCBj
cmFzaCBpZiBpdCBzZWVzCisgICAgICAgICAgIGFuIGF0dGVtcHQgdG8gZW50ZXIgdGhlIFZNIHdo
aWxlIGRpc2FsbG93ZWQuCisKKyAgICAgICAgICAgSWYgT3B0aW9uczo6Y3Jhc2hPbkRpc2FsbG93
ZWRWTUVudHJ5KCkgaXMgZmFsc2UsIGFuIGF0dGVtcHQgdG8gY2FsbCBpbnRvIHRoZSBWTQorICAg
ICAgICAgICB3aGlsZSBkaXNhbGxvd2VkIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggYW4g
dW5kZWZpbmVkIHJlc3VsdCB3aXRob3V0CisgICAgICAgICAgIGludm9raW5nIGFueSBzY3JpcHQu
CisKKyAgICAgICAgICAgQnkgZGVmYXVsdCwgT3B0aW9uczo6Y3Jhc2hPbkRpc2FsbG93ZWRWTUVu
dHJ5KCkgaXMgdHJ1ZSBpZiBBU1NFUlRfRU5BQkxFRCBpcworICAgICAgICAgICB0cnVlLgorCisg
ICAgICAgIDMuIENoYW5nZSBEaXNhbGxvd1Njb3BlIGFuZCBEaXNhbGxvd0dDIHRvIGJlIGJhc2Vk
IG9uIEFTU0VSVF9FTkFCTEVEIGluc3RlYWQgb2YgTkVCVUcuCisKKyAgICAgICAgNC4gTWFrZSBE
aXNhbGxvd1ZNRW50cnkgYWx3YXlzIGVuZm9yY2VhYmxlLCBub3QganVzdCB3aGVuIEFTU0VSVF9F
TkFCTEVELgorICAgICAgICAgICBJdCdzIGVuZm9yY2VtZW50IGFjdGlvbiBkZXBlbmRzIG9uIE9w
dGlvbnM6OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGFzCisgICAgICAgICAgIGRlc2NyaWJl
ZCBhYm92ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogaGVhcC9EZWZlckdDLmNwcDoKKyAgICAgICAgKiBoZWFwL0RlZmVyR0MuaDoK
KyAgICAgICAgKEpTQzo6RGlzYWxsb3dHQzo6RGlzYWxsb3dHQyk6CisgICAgICAgIChKU0M6OkRp
c2FsbG93R0M6OmluaXRpYWxpemUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhl
Y3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6
CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dDo6bGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbik6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAg
ICogcnVudGltZS9EaXNhbGxvd1Njb3BlLmg6CisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6
OkRpc2FsbG93U2NvcGUpOgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjp+RGlzYWxsb3dT
Y29wZSk6CisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmlzSW5FZmZlY3RPbkN1cnJlbnRU
aHJlYWQpOgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjplbmFibGUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpkaXNhYmxlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RGlzYWxsb3dTY29wZTo6ZW50ZXJTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRpc2FsbG93U2NvcGU6OmV4aXRTY29wZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9E
aXNhbGxvd1ZNRW50cnkuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlzYWxsb3dWTVJlZW50cnkuaC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5SW1w
bDo6RGlzYWxsb3dWTUVudHJ5SW1wbCk6CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1FbnRyeUlt
cGw6On5EaXNhbGxvd1ZNRW50cnlJbXBsKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5
SW1wbDo6aXNFbmdhZ2VkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5SW1w
bDo6cmVsZWFzZSk6CisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5OjpEaXNhbGxvd1ZN
UmVlbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93Vk1SZWVudHJ5Ojppbml0
aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTVJlZW50cnk6OnNjb3Bl
UmVlbnRyeUNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTVJlZW50cnk6
OnNldFNjb3BlUmVlbnRyeUNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Rpc2Fs
bG93Vk1SZWVudHJ5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93Vk1S
ZWVudHJ5Lmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJl
c3RyaWN0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5j
cHA6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Ok9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
Ojpub3RpZnlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNj
b3BlOjpub3RpZnlJbml0aWFsaXplZCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RJbml0aWFs
aXphdGlvblNjb3BlLmg6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6
OnZtIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0
aW9uU2NvcGU6On5PYmplY3RJbml0aWFsaXphdGlvblNjb3BlKToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6
T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5SW5pdGlhbGl6ZWQpOgorICAgICAgICAq
IHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oOgorICAgICAgICAoSlNDOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hl
c0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogcnVudGltZS9WTUVu
dHJ5U2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZSk6
CisKIDIwMjAtMDctMjEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IGxsaW50X3Nsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKCkgc2hvdWxkIG5vdCBiZSB1c2luZyBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04MzgsNyArODM4
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIHJ1bnRp
bWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmgKICAgICBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmgKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAotICAgIHJ1bnRpbWUvRGlzYWxsb3dW
TVJlZW50cnkuaAorICAgIHJ1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgKICAgICBydW50aW1lL0R1
bXBDb250ZXh0LmgKICAgICBydW50aW1lL0VDTUFNb2RlLmgKICAgICBydW50aW1lL0Vuc3VyZVN0
aWxsQWxpdmVIZXJlLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHJldmlzaW9u
IDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNzY2LDcgKzc2Niw2IEBAIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKIHJ1bnRp
bWUvRGlyZWN0QXJndW1lbnRzLmNwcAogcnVudGltZS9EaXJlY3RBcmd1bWVudHNPZmZzZXQuY3Bw
CiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAotcnVudGltZS9EaXNhbGxvd1ZNUmVl
bnRyeS5jcHAKIHJ1bnRpbWUvRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmNwcAogcnVudGlt
ZS9EdW1wQ29udGV4dC5jcHAKIHJ1bnRpbWUvRUNNQU1vZGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MjUsNyArMTkyNSw3IEBACiAJCUZFNTMzQ0E1MUYyMTdEQjMwMDE2QTFGRSAvKiBG
b3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLzsgfTsKIAkJRkU1MzNDQTYxRjIxN0RCMzAwMTZBMUZFIC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
Ki87IH07CiAJCUZFNTMzQ0FEMUYyMTdFQTUwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTUzM0NBMDFGMjE3QzMx
MDAxNkExRkUgLyogdGVzdG1hc20uY3BwICovOyB9OwotCQlGRTU0REVGQjFFOEM2RDg4MDBBODky
QzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVl
bnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFNTRERUZCMUU4QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZBMUU4QzZENzIwMEE4
OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTU0REVGRjFFOEQ3NkZBMDBBODkyQzUgLyogRGlzYWxsb3dT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1
NERFRkUxRThENzQyODAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTU2MjhDRTFFOTk1MTMyMDBDNDlF
NDUgLyogQWlyUHJpbnRTcGVjaWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTU2MjhDQzFFOTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFs
LmggKi87IH07CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgz
QzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTIyNSw4ICs1MjI1LDcgQEAKIAkJRkU1MDY4NjYx
QUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTUzM0NBMDFGMjE3QzMxMDAxNkExRkUgLyogdGVzdG1hc20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdG1hc20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTUzM0NBQzFGMjE3REI0MDAxNkExRkUgLyogdGVzdG1hc20gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3RtYXNtOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlGRTU0REVGQTFFOEM2RDcyMDBBODkyQzUg
LyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlzYWxsb3dWTVJlZW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkU1NERF
RkMxRThDNkRGRjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc2FsbG93Vk1SZWVudHJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93
Vk1FbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhbGxvd1ZNRW50
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1NERFRkUxRThENzQyODAwQTg5
MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlzYWxsb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU2MjhDQjFF
OTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEFpclByaW50U3BlY2lhbC5jcHA7IHBhdGggPSBiMy9haXIvQWly
UHJpbnRTcGVjaWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1NjI4Q0Mx
RTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJQcmludFNwZWNpYWwuaDsgcGF0aCA9IGIzL2Fpci9BaXJQcmludFNw
ZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNzIsOCArNzE3MSw3IEBA
CiAJCQkJMTQzODZBNzIxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cCAqLywKIAkJCQkxNDM4NkE3MzFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuaCAqLywKIAkJCQlGRTU0REVGRTFFOEQ3NDI4MDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5o
ICovLAotCQkJCUZFNTRERUZDMUU4QzZERkYwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRyeS5j
cHAgKi8sCi0JCQkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5
LmggKi8sCisJCQkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRyeS5o
ICovLAogCQkJCUUzMTYxODEwMUVDNUZFMDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi8s
CiAJCQkJRTMxNjE4MTExRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRl
ci5jcHAgKi8sCiAJCQkJRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdl
dHRlclNldHRlci5oICovLApAQCAtOTUyOCw3ICs5NTI2LDcgQEAKIAkJCQkxNDM4NkE3NTFERDY5
ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMzczMDhGMUMwQ0Q2ODUwMDA1MkJGQSAvKiBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTRERUZGMUU4RDc2RkEwMEE4OTJDNSAvKiBE
aXNhbGxvd1Njb3BlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTU0REVGQjFFOEM2RDg4MDBBODky
QzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNTRERUZCMUU4
QzZEODgwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjQyNzMxMTU4RUJENTQwMDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzMTYxODEzMUVDNUZFMTcwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzE2MTgxNTFFQzVGRTI3MDAwNkEyMTggLyogRE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0RlZmVyR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Rl
ZmVyR0MuY3BwCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9EZWZlckdDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIExhenlOZXZl
ckRlc3Ryb3llZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpU
cnVlPj4gRGlzYWxsb3dHQzo6c19zY29wZVJlZW50cnlDb3VudDsKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDE2
ICs3Nyw4IEBAIGNsYXNzIERpc2FsbG93R0MgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTwKICAgICBX
VEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKICAgICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlz
YWxsb3dHQz4gQmFzZTsKIHB1YmxpYzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJ
TkUgRGlzYWxsb3dHQyhib29sID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQotCi0jZWxzZSAvLyBub3QgTkRFQlVHCi0KLSAgICBEaXNh
bGxvd0dDKGJvb2wgZW5hYmxlZCA9IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVkKQotICAg
IHsgfQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgRGlzYWxsb3dHQygpID0gZGVmYXVsdDsKIAog
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQogICAgIHsKQEAgLTEwNSw3ICs5NywxMCBAQCBw
cml2YXRlOgogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+
IHNfc2NvcGVSZWVudHJ5Q291bnQ7CiAKLSNlbmRpZiAvLyBOREVCVUcKKyNlbHNlCisgICAgQUxX
QVlTX0lOTElORSBEaXNhbGxvd0dDKCkgeyB9IC8vIFdlIG5lZWQgdGhpcyB0byBwbGFjYXRlIENs
YW5nIGR1ZSB0byB1bnVzZWQgd2FybmluZ3MuCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplKCkgeyB9CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKICAgICAKICAgICBm
cmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxvd0dDPjsKIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlz
aW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTgyNSwxNSArODI1LDE1IEBAIGZhaWxlZEpTT05QOgogICAg
ICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1l
dGVyIGZvciAndGhpcycuCiAgICAgfQogCi0gICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBF
bnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFi
bGUuCi0KLSAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSA9IHByb2dyYW0tPmdlbmVyYXRlZEpJ
VENvZGUoKTsKLQorICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIFByb3RvQ2FsbEZy
YW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBn
bG9iYWxPYmplY3QsIGdsb2JhbENhbGxlZSwgdGhpc09iaiwgMSk7CisgICAgeworICAgICAgICBE
aXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVw
bGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaml0Q29kZSA9IHByb2dyYW0t
PmdlbmVyYXRlZEpJVENvZGUoKTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxv
Y2ssIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbGVlLCB0aGlzT2JqLCAxKTsKKyAgICB9CiAKICAg
ICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwogICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChqaXRDb2RlID09IHByb2dyYW0tPmdlbmVy
YXRlZEpJVENvZGUoKS5wdHIoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqaXRDb2RlLT5leGVj
dXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKQEAgLTg5MCwyNyArODkwLDI0IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmEKICAgICAgICAgbmV3Q29kZUJsb2NrLT5t
X3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgIH0KIAotICAgIERpc2FsbG93R0Mg
ZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVC
bG9jayBpbiBFeGVjdXRhYmxlLgotCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7Ci0gICAg
aWYgKGlzSlNDYWxsKQotICAgICAgICBqaXRDb2RlID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOwotCiAgICAgUHJvdG9DYWxsRnJhbWUg
cHJvdG9DYWxsRnJhbWU7Ci0gICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGds
b2JhbE9iamVjdCwgZnVuY3Rpb24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7
CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBo
YXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAg
aWYgKGlzSlNDYWxsKQorICAgICAgICAgICAgaml0Q29kZSA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9u
RXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKKyAgICAgICAgcHJvdG9DYWxs
RnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIHRoaXNWYWx1
ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgfQogCiAgICAgSlNWYWx1ZSByZXN1bHQ7
Ci0gICAgewotICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAgICAgICBkaXNhbGxvd0dD
LmRpc2FibGUoKTsKLSAgICAgICAgaWYgKGlzSlNDYWxsKSB7Ci0gICAgICAgICAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNhbGxEYXRhLmpz
LmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5wdHIoKSk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1l
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29k
ZSh2bUVudHJ5VG9OYXRpdmUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwg
JnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgSlNWYWx1ZSgpKTsKLSAgICAgICAgfQorICAgIC8vIEV4ZWN1dGUgdGhlIGNv
ZGU6CisgICAgaWYgKGlzSlNDYWxsKSB7CisgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwor
ICAgICAgICBBU1NFUlQoaml0Q29kZSA9PSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkucHRyKCkpOworICAgICAgICByZXN1bHQgPSBqaXRD
b2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgSlNWYWx1ZSgpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwpAQCAtOTcyLDI4ICs5NjksMjUgQEAgSlNP
YmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgICAgICBuZXdDb2RlQmxv
Y2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgRGlzYWxs
b3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2Ug
Q29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0KICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsK
LSAgICBpZiAoaXNKU0NvbnN0cnVjdCkKLSAgICAgICAgaml0Q29kZSA9IGNvbnN0cnVjdERhdGEu
anMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7Ci0K
ICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5p
bml0KG5ld0NvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBh
cmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxs
b3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBp
biBFeGVjdXRhYmxlLgorICAgICAgICBpZiAoaXNKU0NvbnN0cnVjdCkKKyAgICAgICAgICAgIGpp
dENvZGUgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZUZvckNvbnN0cnVjdCgpOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFy
Z3MuZGF0YSgpKTsKKyAgICB9CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICB7Ci0gICAgICAg
IC8vIEV4ZWN1dGUgdGhlIGNvZGUuCi0gICAgICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwotICAg
ICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewotICAgICAgICAgICAgQVNTRVJUKGppdENvZGUgPT0g
Y29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JD
b25zdHJ1Y3QoKS5wdHIoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRl
KCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUoY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24ucmF3UG9pbnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOworICAgIC8v
IEV4ZWN1dGUgdGhlIGNvZGUuCisgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKKyAgICAgICAgQVNT
RVJUKGppdENvZGUgPT0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKS5wdHIoKSk7CisgICAgICAgIHJlc3VsdCA9IGppdENv
ZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUoY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24ucmF3UG9pbnRlcigpLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOwogCi0g
ICAgICAgICAgICBpZiAoTElLRUxZKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKExJS0VMWSghdGhyb3dTY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuaXNPYmplY3QoKSk7CiAgICAgfQogCiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKQEAgLTExOTMsMTUgKzExODcsMTUgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhp
cycuCiAgICAgfQogCi0gICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0Mg
aGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCi0KLSAgICBS
ZWZQdHI8SklUQ29kZT4gaml0Q29kZSA9IGV2YWwtPmdlbmVyYXRlZEpJVENvZGUoKTsKLQorICAg
IFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZy
YW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNh
bGxlZSwgdGhpc1ZhbHVlLCAxKTsKKyAgICB7CisgICAgICAgIERpc2FsbG93R0MgZGlzYWxsb3dH
QzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBF
eGVjdXRhYmxlLgorICAgICAgICBqaXRDb2RlID0gZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpOwor
ICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxs
ZWUsIHRoaXNWYWx1ZSwgMSk7CisgICAgfQogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAg
ICBkaXNhbGxvd0dDLmRpc2FibGUoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBB
U1NFUlQoaml0Q29kZSA9PSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCkucHRyKCkpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CkBA
IC0xMjUxLDE4ICsxMjQ1LDE4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQ
cm9ncmEKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAv
LyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxs
b3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBp
biBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUgPSBleGVjdXRhYmxl
LT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KLSAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUg
aXMgYWx3YXlzIGB1bmRlZmluZWRgLgotICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0
aGlzYmluZGluZwotICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZwor
ICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2Fs
bEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGNhbGxlZSwganNVbmRlZmluZWQoKSwgMSk7CisgICAgeworICAgICAgICBEaXNhbGxvd0dDIGRp
c2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxv
Y2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaml0Q29kZSA9IGV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEpJVENvZGUoKTsKKyAgICAgICAgLy8gVGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5
cyBgdW5kZWZpbmVkYC4KKyAgICAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNi
aW5kaW5nCisgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZwor
ICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxs
ZWUsIGpzVW5kZWZpbmVkKCksIDEpOworICAgIH0KIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6
Ci0gICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAg
ICAgQVNTRVJUKGppdENvZGUgPT0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigp
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxs
RnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzE2LDYgKzIzMTYsMTYg
QEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdwogICAgIHZtLmhlYXAu
d3JpdGVCYXJyaWVyKGNlbGwpOwogfQogCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqKQor
eworICAgIEFTU0VSVF9VTlVTRUQodm0sIHZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCk7CisgICAg
aWYgKE9wdGlvbnM6OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpKQorICAgICAgICBDUkFTSCgp
OworCisgICAgLy8gRWxzZSByZXR1cm4sIGFuZCBsZXQgZG9WTUVudHJ5IHJldHVybiB1bmRlZmlu
ZWQuCisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKK30KKwogZXh0
ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpOwogZXh0
ZXJuICJDIiB2b2lkIGxsaW50X2R1bXBfdmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2
aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDcsNiArMTQ3LDcgQEAgZXh0ZXJuICJDIiBTbG93
UGF0aFJldHVyblR5cGUgc2xvd19wYXRoXwogI2lmIEVOQUJMRShDX0xPT1ApCiBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJl
Z2lzdGVyKikgV1RGX0lOVEVSTkFMOwogI2VuZGlmCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJu
VHlwZSBsbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKFZNKiwgUHJvdG9DYWxsRnJhbWUq
KSBXVEZfSU5URVJOQUw7CiBleHRlcm4gIkMiIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBs
bGludF9jcmFzaCgpIFdURl9JTlRFUk5BTDsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NzAsNiArMTcwLDkgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgICMgU2luY2Ugd2Ug
aGF2ZSB0aGUgZ3VhcmFudGVlIHRoYXQgdFggIT0gYVkgd2hlbiBYICE9IFksIHdlIGFyZSBzYWZl
IGZyb20KICAgICAjIGFsaWFzaW5nIHByb2JsZW1zIHdpdGggb3VyIGFyZ3VtZW50cy4KIAorICAg
IGxvYWRpIFZNOjpkaXNhbGxvd1ZNRW50cnlDb3VudFt2bV0sIHQ0CisgICAgYnRpbnogdDQsIC5j
aGVja1ZNRW50cnlQZXJtaXNzaW9uCisKICAgICBpZiBBUk12NwogICAgICAgICB2bUVudHJ5UmVj
b3JkKGNmciwgdDMpCiAgICAgICAgIG1vdmUgdDMsIHNwCkBAIC0zMTksNiArMzIyLDE4IEBAIG1h
Y3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICBwb3BDYWxsZWVTYXZlcygpCiAgICAgZnVuY3Rp
b25FcGlsb2d1ZSgpCiAgICAgcmV0CisKKy5jaGVja1ZNRW50cnlQZXJtaXNzaW9uOgorICAgIG1v
dmUgdm0sIGEwCisgICAgbW92ZSBwcm90b0NhbGxGcmFtZSwgYTEKKyAgICBjQ2FsbDIoX2xsaW50
X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24pCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHIwCisg
ICAgbW92ZSAwLCByMQorCisgICAgc3VicCBjZnIsIENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUsIHNw
CisgICAgcG9wQ2FsbGVlU2F2ZXMoKQorICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQorICAgIHJldAog
ZW5kCiAKICMgYTAsIGEyLCB0MywgdDQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNjQ2NDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niw5IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtl
Q2FsbCkKIAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHQ0LCAweGJhZDBkYzAxKQog
CisgICAgbG9hZGkgVk06OmRpc2FsbG93Vk1FbnRyeUNvdW50W3ZtXSwgdDQKKyAgICBidGlueiB0
NCwgLmNoZWNrVk1FbnRyeVBlcm1pc3Npb24KKwogICAgIHN0b3JlcCB2bSwgVk1FbnRyeVJlY29y
ZDo6bV92bVtzcF0KICAgICBsb2FkcCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXSwgdDQKICAgICBzdG9y
ZXAgdDQsIFZNRW50cnlSZWNvcmQ6Om1fcHJldlRvcENhbGxGcmFtZVtzcF0KQEAgLTI4NCw2ICsy
ODcsMTcgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgIHBvcENhbGxlZVNhdmVzKCkK
ICAgICBmdW5jdGlvbkVwaWxvZ3VlKCkKICAgICByZXQKKworLmNoZWNrVk1FbnRyeVBlcm1pc3Np
b246CisgICAgbW92ZSB2bSwgYTAKKyAgICBtb3ZlIHByb3RvQ2FsbEZyYW1lLCBhMQorICAgIGND
YWxsMihfbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbikKKyAgICBtb3ZlIFZhbHVlVW5k
ZWZpbmVkLCByMAorCisgICAgc3VicCBjZnIsIENhbGxlZVJlZ2lzdGVyU2F2ZVNpemUsIHNwCisg
ICAgcG9wQ2FsbGVlU2F2ZXMoKQorICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQorICAgIHJldAogZW5k
CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dTY29wZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2Nv
cGUuaAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlzYWxsb3dTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMjcgKzM1LDE4IEBAIGNsYXNz
IERpc2FsbG93U2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93U2NvcGUp
OwogICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOwogcHVibGljOgotI2lmZGVmIE5ERUJV
RwotCi0gICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1Njb3BlKGJvb2wgPSBmYWxzZSkgeyB9Ci0g
ICAgQUxXQVlTX0lOTElORSB+RGlzYWxsb3dTY29wZSgpIHsgfQotICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgaXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCgpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGVuYWJsZSgpIHsgfQotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBkaXNhYmxlKCkgeyB9Ci0KLSNlbHNlIC8vIG5vdCBOREVCVUcKLQotICAgIERpc2FsbG93
U2NvcGUoYm9vbCBlbmFibGVkID0gdHJ1ZSkKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIERpc2Fs
bG93U2NvcGUoKQogICAgIHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkOwotICAgICAg
ICBpZiAobV9pc0VuYWJsZWQpCi0gICAgICAgICAgICBlbnRlclNjb3BlKCk7CisgICAgICAgIGF1
dG8gY291bnQgPSBUOjpzY29wZVJlZW50cnlDb3VudCgpOworICAgICAgICBUOjpzZXRTY29wZVJl
ZW50cnlDb3VudCgrK2NvdW50KTsKICAgICB9CiAKICAgICB+RGlzYWxsb3dTY29wZSgpCiAgICAg
ewotICAgICAgICBpZiAobV9pc0VuYWJsZWQpCi0gICAgICAgICAgICBleGl0U2NvcGUoKTsKKyAg
ICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRyeUNvdW50KCk7CisgICAgICAgIEFTU0VS
VChjb3VudCk7CisgICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50KC0tY291bnQpOwogICAg
IH0KIAogICAgIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKQpAQCAtNjMs
MzQgKzU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEhVDo6c2NvcGVSZWVudHJ5Q291
bnQoKTsKICAgICB9CiAKLSAgICB2b2lkIGVuYWJsZSgpCi0gICAgewotICAgICAgICBtX2lzRW5h
YmxlZCA9IHRydWU7Ci0gICAgICAgIGVudGVyU2NvcGUoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRp
c2FibGUoKQotICAgIHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgZXhp
dFNjb3BlKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgZW50ZXJTY29wZSgpCi0gICAg
ewotICAgICAgICBhdXRvIGNvdW50ID0gVDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKLSAgICAgICAg
VDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoKytjb3VudCk7Ci0gICAgfQotCi0gICAgdm9pZCBleGl0
U2NvcGUoKQotICAgIHsKLSAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRyeUNvdW50
KCk7Ci0gICAgICAgIEFTU0VSVChjb3VudCk7Ci0gICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNv
dW50KC0tY291bnQpOwotICAgIH0KLQotICAgIGJvb2wgbV9pc0VuYWJsZWQ7Ci0jZW5kaWYgLy8g
TkRFQlVHCisjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKKyAgICBBTFdBWVNfSU5MSU5FIERp
c2FsbG93U2NvcGUoKSB7IH0gLy8gV2UgbmVlZCB0aGlzIHRvIHBsYWNhdGUgQ2xhbmcgZHVlIHRv
IHVudXNlZCB3YXJuaW5ncy4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5FZmZl
Y3RPbkN1cnJlbnRUaHJlYWQoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmIC8vIEFTU0VSVF9F
TkFCTEVECiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCShyZXZpc2lvbiAyNjQ2NDMpCShm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5Lmg6MjY0
NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGlzYWxsb3dT
Y29wZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTcGVjaWZpYy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRGlzYWxsb3dWTVJl
ZW50cnkgOiBwdWJsaWMgRGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4geworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERpc2FsbG93Vk1SZWVudHJ5KTsKKyAgICB0eXBlZGVmIERpc2Fs
bG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IEJhc2U7CitwdWJsaWM6CisjaWZkZWYgTkRFQlVH
CisKKyAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgPSBmYWxzZSkgeyB9
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9CisKKyNlbHNl
IC8vIG5vdCBOREVCVUcKKworICAgIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgZW5hYmxlZCA9IHRy
dWUpCisgICAgICAgIDogQmFzZShlbmFibGVkKQorICAgIHsgfQorCisgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZSgpCisgICAgeworICAgICAgICBzX3Njb3BlUmVlbnRyeUNvdW50LmNvbnN0cnVj
dCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdW5zaWduZWQgc2NvcGVSZWVudHJ5
Q291bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgp
OworICAgIH0KKyAgICBzdGF0aWMgdm9pZCBzZXRTY29wZVJlZW50cnlDb3VudCh1bnNpZ25lZCB2
YWx1ZSkKKyAgICB7CisgICAgICAgICpzX3Njb3BlUmVlbnRyeUNvdW50LmdldCgpID0gdmFsdWU7
CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxUaHJlYWRTcGVjaWZpYzx1bnNpZ25lZCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpUcnVlPj4gc19z
Y29wZVJlZW50cnlDb3VudDsKKworI2VuZGlmIC8vIE5ERUJVRworCisgICAgZnJpZW5kIGNsYXNz
IERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZN
RW50cnkuaAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlzYWxsb3dWTUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNDcgKzI1LDQ0IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRGlzYWxsb3dTY29wZS5oIgotI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgRGlzYWxsb3dWTVJlZW50cnkgOiBwdWJsaWMgRGlzYWxsb3dT
Y29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2Fs
bG93Vk1SZWVudHJ5KTsKLSAgICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50
cnk+IEJhc2U7Ci1wdWJsaWM6Ci0jaWZkZWYgTkRFQlVHCi0KLSAgICBBTFdBWVNfSU5MSU5FIERp
c2FsbG93Vk1SZWVudHJ5KGJvb2wgPSBmYWxzZSkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCkgeyB9Ci0KLSNlbHNlIC8vIG5vdCBOREVCVUcKK2NsYXNzIFZN
OwogCi0gICAgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCBlbmFibGVkID0gdHJ1ZSkKLSAgICAgICAg
OiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkK
Ky8vIFRoZSBvbmx5IHJlYXNvbiB3ZSBpbXBsZW1lbnQgRGlzYWxsb3dWTUVudHJ5IGFzIHNwZWNp
YWxpemF0aW9uIG9mIGEgdGVtcGxhdGUKKy8vIGlzIHNvIHRoYXQgd2UgY2FuIHdvcmsgYXJvdW5k
IGhhdmluZyB0byAjaW5jbHVkZSBWTS5oLCB3aGljaCBjYW4gaHVydCBidWlsZAorLy8gdGltZS4g
VGhpcyBkZWZlcnMgdGhlIGNvc3Qgb2YgI2luY2x1ZGUnaW5nIFZNLmggdG8gb25seSB0aGUgY2xp
ZW50cyB0aGF0CisvLyBuZWVkIGl0LgorCit0ZW1wbGF0ZTxjbGFzcyBWTVR5cGUgPSBWTT4KK2Ns
YXNzIERpc2FsbG93Vk1FbnRyeUltcGwgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2Fs
bG93Vk1FbnRyeUltcGwpOworcHVibGljOgorICAgIERpc2FsbG93Vk1FbnRyeUltcGwoVk1UeXBl
JiB2bSkKKyAgICAgICAgOiBtX3ZtKCZ2bSkKICAgICB7Ci0gICAgICAgIHNfc2NvcGVSZWVudHJ5
Q291bnQuY29uc3RydWN0KCk7CisgICAgICAgIG1fdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50Kys7
CiAgICAgfQogCi1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25lZCBzY29wZVJlZW50cnlDb3Vu
dCgpCisgICAgfkRpc2FsbG93Vk1FbnRyeUltcGwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICpz
X3Njb3BlUmVlbnRyeUNvdW50LmdldCgpOwotICAgIH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTY29w
ZVJlZW50cnlDb3VudCh1bnNpZ25lZCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgICpzX3Njb3BlUmVl
bnRyeUNvdW50LmdldCgpID0gdmFsdWU7CisgICAgICAgIGlmIChtX3ZtKQorICAgICAgICAgICAg
cmVsZWFzZSgpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6
VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7CisgICAgYm9vbCBpc0VuZ2FnZWQoKSBjb25zdCB7
IHJldHVybiBtX3ZtOyB9CiAKLSNlbmRpZiAvLyBOREVCVUcKKyAgICB2b2lkIHJlbGVhc2UoKQor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQp
OworICAgICAgICBtX3ZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudC0tOworICAgICAgICBtX3ZtID0g
bnVsbHB0cjsKKyAgICB9CiAKLSAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dTY29wZTxEaXNhbGxv
d1ZNUmVlbnRyeT47Citwcml2YXRlOgorICAgIFZNVHlwZSogbV92bTsKIH07CiAKK3VzaW5nIERp
c2FsbG93Vk1FbnRyeSA9IERpc2FsbG93Vk1FbnRyeUltcGw8Vk0+OworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVu
dHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNh
bGxvd1ZNUmVlbnRyeS5jcHAJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlz
YWxsb3dWTVJlZW50cnkuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0gICAgCi0jaWZuZGVmIE5ERUJV
RwotTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJl
R0NUaHJlYWQ6OlRydWU+PiBEaXNhbGxvd1ZNUmVlbnRyeTo6c19zY29wZVJlZW50cnlDb3VudDsK
LSNlbmRpZgotICAgIAotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgJKHJldmlzaW9uIDI2NDY0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEaXNhbGxvd1Nj
b3BlLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Ro
cmVhZFNwZWNpZmljLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBEaXNhbGxvd1ZNUmVl
bnRyeSA6IHB1YmxpYyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PiB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGlzYWxsb3dWTVJlZW50cnkpOwotICAgIHR5cGVkZWYgRGlzYWxs
b3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT4gQmFzZTsKLXB1YmxpYzoKLSNpZmRlZiBOREVCVUcK
LQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCA9IGZhbHNlKSB7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7IH0KLQotI2Vsc2Ug
Ly8gbm90IE5ERUJVRwotCi0gICAgRGlzYWxsb3dWTVJlZW50cnkoYm9vbCBlbmFibGVkID0gdHJ1
ZSkKLSAgICAgICAgOiBCYXNlKGVuYWJsZWQpCi0gICAgeyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplKCkKLSAgICB7Ci0gICAgICAgIHNfc2NvcGVSZWVudHJ5Q291bnQuY29uc3RydWN0
KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25lZCBzY29wZVJlZW50cnlD
b3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gKnNfc2NvcGVSZWVudHJ5Q291bnQuZ2V0KCk7
Ci0gICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFNjb3BlUmVlbnRyeUNvdW50KHVuc2lnbmVkIHZh
bHVlKQotICAgIHsKLSAgICAgICAgKnNfc2NvcGVSZWVudHJ5Q291bnQuZ2V0KCkgPSB2YWx1ZTsK
LSAgICB9Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PFRocmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Nj
b3BlUmVlbnRyeUNvdW50OwotCi0jZW5kaWYgLy8gTkRFQlVHCi0KLSAgICBmcmllbmQgY2xhc3Mg
RGlzYWxsb3dTY29wZTxEaXNhbGxvd1ZNUmVlbnRyeT47Ci19OwotCi19IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVU
aHJlYWRpbmcuaCIKIAotI2luY2x1ZGUgIkRpc2FsbG93Vk1SZWVudHJ5LmgiCiAjaW5jbHVkZSAi
RXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUg
IkpTQ1B0clRhZy5oIgpAQCAtNzgsMTAgKzc3LDggQEAgdm9pZCBpbml0aWFsaXplKCkKICAgICAg
ICAgICAgIGVuYWJsZVNpZ2lsbENyYXNoQW5hbHl6ZXIoKTsKIAogICAgICAgICBMTEludDo6aW5p
dGlhbGl6ZSgpOwotI2lmbmRlZiBOREVCVUcKICAgICAgICAgRGlzYWxsb3dHQzo6aW5pdGlhbGl6
ZSgpOwotICAgICAgICBEaXNhbGxvd1ZNUmVlbnRyeTo6aW5pdGlhbGl6ZSgpOwotI2VuZGlmCisK
ICAgICAgICAgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwogICAgICAgICBUaHJlYWQmIHRocmVh
ZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICB0aHJlYWQuc2V0U2F2ZWRMYXN0U3RhY2tU
b3AodGhyZWFkLnN0YWNrKCkub3JpZ2luKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFw
QG55cG9wLmNvbSkKICAqCkBAIC05Niw4ICs5Niw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNyZWF0ZVdpdGhCdXR0
ZXJmbHkodm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogCi0gICAg
Y29uc3QgYm9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBzY29wZS5ub3RpZnlB
bGxvY2F0ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVkKTsKKyAgICBzY29wZS5ub3RpZnlB
bGxvY2F0ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXph
dGlvblNjb3BlLmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNCwxMSArMzQsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZm5kZWYgTkRFQlVHCisj
aWYgQVNTRVJUX0VOQUJMRUQKKwogT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6T2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZShWTSYgdm0pCiAgICAgOiBtX3ZtKHZtKQotICAgICwgbV9kaXNhbGxv
d0dDKGZhbHNlKQotICAgICwgbV9kaXNhbGxvd1ZNUmVlbnRyeShmYWxzZSkKIHsKIH0KIApAQCAt
NTAsMjEgKzQ5LDIwIEBAIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6On5PYmplY3RJbml0aWEK
ICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQobV9vYmplY3QpOwogfQogCi12b2lk
IE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRlZChKU09iamVjdCogb2Jq
ZWN0LCBib29sIHdhc0NyZWF0ZWRVbmluaXRpYWxpemVkKQordm9pZCBPYmplY3RJbml0aWFsaXph
dGlvblNjb3BlOjpub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqIG9iamVjdCkKIHsKLSAgICBpZiAo
d2FzQ3JlYXRlZFVuaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgbV9kaXNhbGxvd0dDLmVuYWJsZSgp
OwotICAgICAgICBtX2Rpc2FsbG93Vk1SZWVudHJ5LmVuYWJsZSgpOwotICAgICAgICBtX29iamVj
dCA9IG9iamVjdDsKLSAgICB9IGVsc2UKLSAgICAgICAgdmVyaWZ5UHJvcGVydGllc0FyZUluaXRp
YWxpemVkKG9iamVjdCk7CisgICAgQVNTRVJUKCFtX2Rpc2FsbG93R0MpOworICAgIEFTU0VSVCgh
bV9kaXNhbGxvd1ZNRW50cnkpOworICAgIG1fZGlzYWxsb3dHQy5lbXBsYWNlKCk7CisgICAgbV9k
aXNhbGxvd1ZNRW50cnkuZW1wbGFjZShtX3ZtKTsKKyAgICBtX29iamVjdCA9IG9iamVjdDsKIH0K
IAogdm9pZCBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3RpZnlJbml0aWFsaXplZChKU09i
amVjdCogb2JqZWN0KQogewogICAgIGlmIChtX29iamVjdCkgewotICAgICAgICBtX2Rpc2FsbG93
R0MuZGlzYWJsZSgpOwotICAgICAgICBtX2Rpc2FsbG93Vk1SZWVudHJ5LmRpc2FibGUoKTsKKyAg
ICAgICAgbV9kaXNhbGxvd0dDLnJlc2V0KCk7CisgICAgICAgIG1fZGlzYWxsb3dWTUVudHJ5LnJl
c2V0KCk7CiAgICAgICAgIG1fb2JqZWN0ID0gbnVsbHB0cjsKICAgICB9CiAgICAgdmVyaWZ5UHJv
cGVydGllc0FyZUluaXRpYWxpemVkKG9iamVjdCk7CkBAIC0xMTQsNiArMTEyLDcgQEAgdm9pZCBP
YmplY3RJbml0aWFsaXphdGlvblNjb3BlOjp2ZXJpZnlQcgogICAgICAgICB9CiAgICAgfQogfQot
I2VuZGlmCisKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlLmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDU0ICsyNiw1NSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEZWZl
ckdDLmgiCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKKyNpbmNsdWRlICJEaXNhbGxv
d1ZNRW50cnkuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgVk07CiBjbGFzcyBKU09iamVjdDsKIAotI2lmZGVm
IE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAKIGNsYXNzIE9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUgewogcHVibGljOgotICAgIEFMV0FZU19JTkxJTkUgT2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZShWTSYgdm0pCi0gICAgICAgIDogbV92bSh2bSkKLSAgICB7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIH5PYmplY3RJbml0aWFsaXphdGlvblNjb3BlKCkKLSAgICB7Ci0gICAgICAgIG1fdm0uaGVh
cC5tdXRhdG9yRmVuY2UoKTsKLSAgICB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZShWTSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5PYmplY3RJbml0
aWFsaXphdGlvblNjb3BlKCk7CiAKLSAgICBBTFdBWVNfSU5MSU5FIFZNJiB2bSgpIGNvbnN0IHsg
cmV0dXJuIG1fdm07IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpT
T2JqZWN0KiwgYm9vbCkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeUluaXRpYWxp
emVkKEpTT2JqZWN0KikgeyB9CisgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQor
ICAgIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0Kik7CisgICAgdm9pZCBub3RpZnlJbml0
aWFsaXplZChKU09iamVjdCopOwogCiBwcml2YXRlOgorICAgIHZvaWQgdmVyaWZ5UHJvcGVydGll
c0FyZUluaXRpYWxpemVkKEpTT2JqZWN0Kik7CisKICAgICBWTSYgbV92bTsKKyAgICBPcHRpb25h
bDxEaXNhbGxvd0dDPiBtX2Rpc2FsbG93R0M7CisgICAgT3B0aW9uYWw8RGlzYWxsb3dWTUVudHJ5
PiBtX2Rpc2FsbG93Vk1FbnRyeTsKKyAgICBKU09iamVjdCogbV9vYmplY3QgeyBudWxscHRyIH07
CiB9OwogCi0jZWxzZSAvLyBub3QgTkRFQlVHCisjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQK
IAogY2xhc3MgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSB7CiBwdWJsaWM6Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZShWTSYpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIH5PYmplY3RJbml0aWFsaXphdGlvblNjb3BlKCk7CisgICAgQUxXQVlTX0lOTElO
RSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKKyAgICAgICAgOiBtX3ZtKHZtKQor
ICAgIHsgfQorICAgIEFMV0FZU19JTkxJTkUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKQor
ICAgIHsKKyAgICAgICAgbV92bS5oZWFwLm11dGF0b3JGZW5jZSgpOworICAgIH0KIAotICAgIFZN
JiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KLSAgICB2b2lkIG5vdGlmeUFsbG9jYXRlZChK
U09iamVjdCosIGJvb2wgd2FzQ3JlYXRlZFVuaW5pdGlhbGl6ZWQpOwotICAgIHZvaWQgbm90aWZ5
SW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKKyAgICBBTFdBWVNfSU5MSU5FIFZNJiB2bSgpIGNvbnN0
IHsgcmV0dXJuIG1fdm07IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5QWxsb2NhdGVk
KEpTT2JqZWN0KikgeyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeUluaXRpYWxpemVk
KEpTT2JqZWN0KikgeyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB2ZXJpZnlQcm9wZXJ0aWVzQXJl
SW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKLQogICAgIFZNJiBtX3ZtOwotICAgIERpc2FsbG93R0Mg
bV9kaXNhbGxvd0dDOwotICAgIERpc2FsbG93Vk1SZWVudHJ5IG1fZGlzYWxsb3dWTVJlZW50cnk7
Ci0gICAgSlNPYmplY3QqIG1fb2JqZWN0IHsgbnVsbHB0ciB9OwogfTsKIAotI2VuZGlmIC8vIE5E
RUJVRworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCShyZXZpc2lv
biAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdl
YkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KFVuc2lnbmVkLCBzb2Z0UmVzZXJ2ZWRab25lU2l6ZSwg
MTI4ICogS0IsIE5vcm1hbCwgIkEgYnVmZmVyIGdyZWF0ZXIgdGhhbiByZXNlcnZlZFpvbmVTaXpl
IHRoYXQgcmVzZXJ2ZXMgc3BhY2UgZm9yIHN0cmluZ2lmeWluZyBleGNlcHRpb25zLiIpIFwKICAg
ICB2KFVuc2lnbmVkLCByZXNlcnZlZFpvbmVTaXplLCA2NCAqIEtCLCBOb3JtYWwsICJUaGUgYW1v
dW50IG9mIHN0YWNrIHNwYWNlIHdlIGd1YXJhbnRlZSB0byBvdXIgY2xpZW50cyAoYW5kIHRvIGlu
dGVyYWwgVk0gY29kZSB0aGF0IGRvZXMgbm90IGNhbGwgb3V0IHRvIGNsaWVudHMpLiIpIFwKICAg
ICBcCisgICAgdihCb29sLCBjcmFzaE9uRGlzYWxsb3dlZFZNRW50cnksIEFTU0VSVF9FTkFCTEVE
LCBOb3JtYWwsICJGb3JjZXMgYSBjcmFzaCBpZiB3ZSBhdHRlbXB0IHRvIGVudGVyIHRoZSBWTSB3
aGVuIGRpc2FsbG93ZWQiKSBcCiAgICAgdihCb29sLCBjcmFzaElmQ2FudEFsbG9jYXRlSklUTWVt
b3J5LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwgaml0TWVtb3J5
UmVzZXJ2YXRpb25TaXplLCAwLCBOb3JtYWwsICJTZXQgdGhpcyBudW1iZXIgdG8gY2hhbmdlIHRo
ZSBleGVjdXRhYmxlIGFsbG9jYXRpb24gc2l6ZSBpbiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRW
TVBvb2wuIChJbiBieXRlcy4pIikgXAogICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiAyNjQ2NDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNyBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIHRy
eUNyZWF0ZVVuaW5pdGlhCiAKICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5OjpjcmVhdGVX
aXRoQnV0dGVyZmx5KHZtLCBkZWZlcnJhbENvbnRleHQsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsK
IAotICAgIGNvbnN0IGJvb2wgY3JlYXRlVW5pbml0aWFsaXplZCA9IHRydWU7Ci0gICAgc2NvcGUu
bm90aWZ5QWxsb2NhdGVkKHJlc3VsdCwgY3JlYXRlVW5pbml0aWFsaXplZCk7CisgICAgc2NvcGUu
bm90aWZ5QWxsb2NhdGVkKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgogI2luY2x1ZGUgIkRhdGVJbnN0
YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgorI2luY2x1ZGUg
IkRpc2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uaCIK
ICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlLmgiCkBAIC05NTIsNiArOTUzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
Q2hlY2twb2ludE9TUlNpZGVTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2twb2ludFNpZGVT
dGF0ZS5zaXplKCk7IH0KICAgICB2b2lkIHNjYW5TaWRlU3RhdGUoQ29uc2VydmF0aXZlUm9vdHMm
KSBjb25zdDsKIAorICAgIHVuc2lnbmVkIGRpc2FsbG93Vk1FbnRyeUNvdW50IHsgMCB9OwogICAg
IFZNRW50cnlTY29wZSogZW50cnlTY29wZTsKIAogICAgIEpTT2JqZWN0KiBzdHJpbmdSZWN1cnNp
b25DaGVja0ZpcnN0T2JqZWN0IHsgbnVsbHB0ciB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZN
RW50cnlTY29wZS5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlZN
LmgiCkBAIC0zOSw3ICszOCw2IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwg
SlNHbG8KICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgQVNTRVJUKCFEaXNhbGxvd1ZNUmVlbnRyeTo6aXNJbkVmZmVjdE9uQ3VycmVudFRo
cmVhZCgpKTsKICAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKICAgICAgICAgdm0uZW50cnlTY29w
ZSA9IHRoaXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404886</attachid>
            <date>2020-07-21 17:25:47 -0700</date>
            <delta_ts>2020-07-21 17:28:26 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539c.patch</filename>
            <type>text/plain</type>
            <size>45224</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NjgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBT
aW1wbGlmeSBEaXNhbGxvd1Njb3BlLCBEaXNhbGxvd0dDLCBhbmQgRGlzYWxsb3dWTVJlZW50cnkg
aW1wbGVtZW50YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0NTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUHJldmlvdXNseSwgRGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFi
bGluZyBhbmQgZGlzYWJsaW5nLiAgVGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5h
YmxlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93
LCB3ZQorICAgICAgICBjYW4gbWFrZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50
cnkgaW5zaWRlIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0
aCBXVEY6Ok9wdGlvbmFsLiAgV2l0aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMg
YW5kIG1ha2UKKyAgICAgICAgdGhlbSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUu
CisKKyAgICAgICAgICAgSWYgT3B0aW9uczo6Y3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5KCkgaXMg
dHJ1ZSwgdGhlIFZNIHdpbGwgY3Jhc2ggaWYgaXQgc2VlcworICAgICAgICAgICBhbiBhdHRlbXB0
IHRvIGVudGVyIHRoZSBWTSB3aGlsZSBkaXNhbGxvd2VkLgorCisgICAgICAgICAgIElmIE9wdGlv
bnM6OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGlzIGZhbHNlLCBhbiBhdHRlbXB0IHRvIGNh
bGwgaW50byB0aGUgVk0KKyAgICAgICAgICAgd2hpbGUgZGlzYWxsb3dlZCB3aWxsIHJldHVybiBp
bW1lZGlhdGVseSB3aXRoIGFuIHVuZGVmaW5lZCByZXN1bHQgd2l0aG91dAorICAgICAgICAgICBp
bnZva2luZyBhbnkgc2NyaXB0LgorCisgICAgICAgICAgIEJ5IGRlZmF1bHQsIE9wdGlvbnM6OmNy
YXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGlzIHRydWUgaWYgQVNTRVJUX0VOQUJMRUQgaXMKKyAg
ICAgICAgICAgdHJ1ZS4KKworICAgICAgICAzLiBDaGFuZ2UgRGlzYWxsb3dTY29wZSBhbmQgRGlz
YWxsb3dHQyB0byBiZSBiYXNlZCBvbiBBU1NFUlRfRU5BQkxFRCBpbnN0ZWFkIG9mIE5FQlVHLgor
CisgICAgICAgIDQuIE1ha2UgRGlzYWxsb3dWTUVudHJ5IGFsd2F5cyBlbmZvcmNlYWJsZSwgbm90
IGp1c3Qgd2hlbiBBU1NFUlRfRU5BQkxFRC4KKyAgICAgICAgICAgSXQncyBlbmZvcmNlbWVudCBh
Y3Rpb24gZGVwZW5kcyBvbiBPcHRpb25zOjpjcmFzaE9uRGlzYWxsb3dlZFZNRW50cnkoKSBhcwor
ICAgICAgICAgICBkZXNjcmliZWQgYWJvdmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGhlYXAvRGVmZXJHQy5jcHA6CisgICAgICAg
ICogaGVhcC9EZWZlckdDLmg6CisgICAgICAgIChKU0M6OkRpc2FsbG93R0M6OkRpc2FsbG93R0Mp
OgorICAgICAgICAoSlNDOjpEaXNhbGxvd0dDOjppbml0aWFsaXplKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVj
dXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhl
Y3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24pOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5oOgorICAgICAgICAo
SlNDOjpEaXNhbGxvd1Njb3BlOjpEaXNhbGxvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6RGlzYWxs
b3dTY29wZTo6fkRpc2FsbG93U2NvcGUpOgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpp
c0luRWZmZWN0T25DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6
ZW5hYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6ZGlzYWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmVudGVyU2NvcGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpleGl0U2NvcGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dWTUVudHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmguCisgICAgICAgIChKU0M6
OkRpc2FsbG93Vk1FbnRyeUltcGw6OkRpc2FsbG93Vk1FbnRyeUltcGwpOgorICAgICAgICAoSlND
OjpEaXNhbGxvd1ZNRW50cnlJbXBsOjp+RGlzYWxsb3dWTUVudHJ5SW1wbCk6CisgICAgICAgIChK
U0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6OmlzRW5nYWdlZCBjb25zdCk6CisgICAgICAgIChKU0M6
OkRpc2FsbG93Vk1FbnRyeUltcGw6OnJlbGVhc2UpOgorICAgICAgICAoSlNDOjpEaXNhbGxvd1ZN
UmVlbnRyeTo6RGlzYWxsb3dWTVJlZW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNh
bGxvd1ZNUmVlbnRyeTo6aW5pdGlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2Fs
bG93Vk1SZWVudHJ5OjpzY29wZVJlZW50cnlDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRpc2FsbG93Vk1SZWVudHJ5OjpzZXRTY29wZVJlZW50cnlDb3VudCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlv
blNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5SW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlOjp2bSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGU6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUpOgorICAgICAgICAoSlND
OjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjp+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6
CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRl
ZCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRp
YWxpemVkKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNj
b3BlOjpWTUVudHJ5U2NvcGUpOgorCiAyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBsbGludF9zbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSgpIHNo
b3VsZCBub3QgYmUgdXNpbmcgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2
NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtODM4LDcgKzgzOCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUEKICAgICBydW50aW1lL0RpcmVjdEFyZ3VtZW50c09mZnNldC5oCiAgICAgcnVudGlt
ZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9EaXNhbGxvd1Njb3BlLmgKLSAg
ICBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgKKyAgICBydW50aW1lL0Rpc2FsbG93Vk1FbnRy
eS5oCiAgICAgcnVudGltZS9EdW1wQ29udGV4dC5oCiAgICAgcnVudGltZS9FQ01BTW9kZS5oCiAg
ICAgcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2Niw3ICs3NjYsNiBAQCBydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCiBydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAKIHJ1bnRpbWUvRGlyZWN0
QXJndW1lbnRzT2Zmc2V0LmNwcAogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKLXJ1
bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCiBydW50aW1lL0RvdWJsZVByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvRHVtcENvbnRleHQuY3BwCiBydW50aW1lL0VDTUFNb2RlLmNw
cApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDY0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI1LDcgKzE5MjUsNyBAQAogCQlGRTUzM0NBNTFG
MjE3REIzMDAxNkExRkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIg
LyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUZFNTMzQ0E2MUYyMTdEQjMwMDE2QTFG
RSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQlGRTUzM0NBRDFGMjE3RUE1MDAxNkExRkUgLyog
dGVzdG1hc20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLzsgfTsKLQkJRkU1
NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU0REVGQTFFOEM2RDcyMDBBODky
QzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxsb3dW
TUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTUVudHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU1NERFRkYxRThENzZGQTAw
QTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNhbGxvd1Njb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU1
NjI4Q0UxRTk5NTEzMjAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NjI4Q0MxRTk5NTEyNDAwQzQ5RTQ1
IC8qIEFpclByaW50U3BlY2lhbC5oICovOyB9OwogCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0Mg
LyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUyMjUsOCArNTIy
NSw3IEBACiAJCUZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJyZWRTb3VyY2VE
dW1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1MzNDQTAxRjIxN0MzMTAw
MTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RtYXNtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1MzNDQUMxRjIxN0RCNDAwMTZBMUZFIC8q
IHRlc3RtYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSB0ZXN0bWFzbTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJRkU1NERF
RkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93Vk1SZWVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUZFNTRERUZDMUU4QzZERkYwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRy
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNhbGxvd1ZNUmVl
bnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNTRERUZBMUU4QzZENzIw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzYWxsb3dWTUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
NTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNhbGxvd1Njb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU1NjI4Q0IxRTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJQcmludFNwZWNpYWwuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclByaW50U3BlY2lhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFNTYyOENDMUU5OTUxMjQwMEM0OUU0NSAvKiBBaXJQcmludFNwZWNpYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyUHJpbnRTcGVjaWFsLmg7IHBhdGgg
PSBiMy9haXIvQWlyUHJpbnRTcGVjaWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03MTcyLDggKzcxNzEsNyBAQAogCQkJCTE0Mzg2QTcyMURENjk4OTUwMDg2NTJDNCAvKiBEaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQzODZBNzMxREQ2OTg5NTAwODY1MkM0IC8q
IERpcmVjdEV2YWxFeGVjdXRhYmxlLmggKi8sCiAJCQkJRkU1NERFRkUxRThENzQyODAwQTg5MkM1
IC8qIERpc2FsbG93U2NvcGUuaCAqLywKLQkJCQlGRTU0REVGQzFFOEM2REZGMDBBODkyQzUgLyog
RGlzYWxsb3dWTVJlZW50cnkuY3BwICovLAotCQkJCUZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAv
KiBEaXNhbGxvd1ZNUmVlbnRyeS5oICovLAorCQkJCUZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAv
KiBEaXNhbGxvd1ZNRW50cnkuaCAqLywKIAkJCQlFMzE2MTgxMDFFQzVGRTA4MDAwNkEyMTggLyog
RE9NQW5ub3RhdGlvbi5oICovLAogCQkJCUUzMTYxODExMUVDNUZFMDgwMDA2QTIxOCAvKiBET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUUzMTYxODEyMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCAqLywKQEAgLTk1MjgsNyArOTUyNiw3IEBA
CiAJCQkJMTQzODZBNzUxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA4RjFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU0REVGRjFF
OEQ3NkZBMDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkU1
NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxsb3dWTUVudHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkY0MjczMTE1OEVCRDU0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzE2MTgxMzFFQzVGRTE3MDAwNkEyMTggLyogRE9NQW5u
b3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMxNjE4MTUxRUM1RkUyNzAwMDZBMjE4IC8q
IERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3
ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VS
VF9FTkFCTEVECiBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdU
Rjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IERpc2FsbG93R0M6OnNfc2NvcGVSZWVudHJ5Q291bnQ7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkocmV2aXNp
b24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NywxNiArNzcsOCBAQCBjbGFzcyBEaXNhbGxvd0dDIDogcHVibGljIERp
c2FsbG93U2NvcGU8CiAgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CiAgICAgdHlwZWRl
ZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93R0M+IEJhc2U7CiBwdWJsaWM6Ci0jaWZkZWYgTkRFQlVH
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93R0MoYm9vbCA9IGZhbHNlKSB7IH0KLSAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7IH0KLQotI2Vsc2UgLy8gbm90
IE5ERUJVRwotCi0gICAgRGlzYWxsb3dHQyhib29sIGVuYWJsZWQgPSB0cnVlKQotICAgICAgICA6
IEJhc2UoZW5hYmxlZCkKLSAgICB7IH0KKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIERpc2FsbG93
R0MoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkKICAgICB7CkBA
IC0xMDUsNyArOTcsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNh
bkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50OwogCi0jZW5kaWYgLy8gTkRF
QlVHCisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dHQygpIHsgfSAvLyBXZSBuZWVk
IHRoaXMgdG8gcGxhY2F0ZSBDbGFuZyBkdWUgdG8gdW51c2VkIHdhcm5pbmdzLgorICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQorI2VuZGlmIC8vIEFTU0VSVF9F
TkFCTEVECiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlzYWxsb3dHQz47
CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endh
cmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC04MjUsMTUgKzgyNSwxNSBA
QCBmYWlsZWRKU09OUDoKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0KIAotICAgIERpc2FsbG93
R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENv
ZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUgPSBw
cm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KKyAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29k
ZTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFt
ZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxDYWxsZWUsIHRoaXNPYmosIDEp
OworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0Mg
aGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAg
IGppdENvZGUgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisgICAgICAgIHByb3RvQ2Fs
bEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGdsb2JhbENhbGxlZSwgdGhpc09i
aiwgMSk7CisgICAgfQogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBkaXNhbGxvd0dD
LmRpc2FibGUoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0Q29k
ZSA9PSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkucHRyKCkpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CkBAIC04OTAsMjcg
Kzg5MCwyNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAgICAg
ICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICB9
CiAKLSAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBH
QyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KLQogICAgIFJlZlB0cjxKSVRD
b2RlPiBqaXRDb2RlOwotICAgIGlmIChpc0pTQ2FsbCkKLSAgICAgICAgaml0Q29kZSA9IGNhbGxE
YXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKLQog
ICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmlu
aXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3ND
b3VudCwgYXJncy5kYXRhKCkpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dD
OyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4
ZWN1dGFibGUuCisgICAgICAgIGlmIChpc0pTQ2FsbCkKKyAgICAgICAgICAgIGppdENvZGUgPSBj
YWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7
CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIH0KIAog
ICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsKLSAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToK
LSAgICAgICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAgICAgIGlmIChpc0pTQ2FsbCkgewot
ICAgICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBBU1NFUlQoaml0
Q29kZSA9PSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVG
b3JDYWxsKCkucHRyKCkpOwotICAgICAgICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgm
dm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFsdWUoKSk7Ci0gICAgICAgIH0KKyAg
ICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIGlmIChpc0pTQ2FsbCkgeworICAgICAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgQVNTRVJUKGppdENvZGUgPT0gY2FsbERhdGEuanMu
ZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLnB0cigpKTsKKyAg
ICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb05h
dGl2ZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9pbnRlcigpLCAmdm0sICZwcm90b0Nh
bGxGcmFtZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFs
dWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKQEAgLTk3
MiwyOCArOTY5LDI1IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgK
ICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwog
ICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBl
bnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCiAgICAgUmVmUHRy
PEpJVENvZGU+IGppdENvZGU7Ci0gICAgaWYgKGlzSlNDb25zdHJ1Y3QpCi0gICAgICAgIGppdENv
ZGUgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNvbnN0cnVjdCgpOwotCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0g
ICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY29uc3Ry
dWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgeworICAgICAg
ICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4g
cmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaWYgKGlzSlNDb25zdHJ1
Y3QpCisgICAgICAgICAgICBqaXRDb2RlID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1
dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKTsKKyAgICAgICAgcHJvdG9DYWxs
RnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIG5ld1Rh
cmdldCwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgfQogCiAgICAgSlNWYWx1ZSByZXN1
bHQ7Ci0gICAgewotICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlLgotICAgICAgICBkaXNhbGxv
d0dDLmRpc2FibGUoKTsKLSAgICAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAg
IEFTU0VSVChqaXRDb2RlID09IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkucHRyKCkpOwotICAgICAgICAgICAgcmVzdWx0
ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZl
KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9D
YWxsRnJhbWUpKTsKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlLgorICAgIGlmIChpc0pTQ29uc3Ry
dWN0KSB7CisgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rp
b25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkucHRyKCkpOworICAg
ICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0
aXZlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJv
dG9DYWxsRnJhbWUpKTsKIAotICAgICAgICAgICAgaWYgKExJS0VMWSghdGhyb3dTY29wZS5leGNl
cHRpb24oKSkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzT2JqZWN0
KCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChMSUtFTFkoIXRocm93U2NvcGUuZXhjZXB0aW9u
KCkpKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzT2JqZWN0KCkpOwogICAg
IH0KIAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CkBAIC0x
MTkzLDE1ICsxMTg3LDE1IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAx
IHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dH
QzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBF
eGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUgPSBldmFsLT5nZW5lcmF0
ZWRKSVRDb2RlKCk7Ci0KKyAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90b0Nh
bGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIHRoaXNWYWx1ZSwgMSk7CisgICAgeworICAgICAgICBE
aXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVw
bGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaml0Q29kZSA9IGV2YWwtPmdl
bmVyYXRlZEpJVENvZGUoKTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgY2FsbGVlLCB0aGlzVmFsdWUsIDEpOworICAgIH0KIAogICAgIC8vIEV4
ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7CiAgICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENvZGUgPT0gZXZhbC0+Z2VuZXJhdGVkSklUQ29k
ZSgpLnB0cigpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAm
cHJvdG9DYWxsRnJhbWUpOwpAQCAtMTI1MSwxOCArMTI0NSwxOCBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KICAgICB9CiAKLSAg
ICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4g
cmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KLQotICAgIFJlZlB0cjxKSVRDb2RlPiBq
aXRDb2RlID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpOwotCi0gICAgLy8gVGhlIHx0
aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KLSAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmly
b25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKLSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29y
ZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90
b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpzVW5kZWZpbmVkKCksIDEpOworICAgIHsKKyAg
ICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0Mg
Y2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAgIGppdENvZGUgPSBl
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisgICAgICAgIC8vIFRoZSB8dGhpc3wgb2Yg
dGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCisgICAgICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1l
bnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29y
ZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgY2FsbGVlLCBqc1VuZGVmaW5lZCgpLCAxKTsKKyAgICB9CiAKICAgICAv
LyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwogICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChqaXRDb2RlID09IGV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGUoKS5wdHIoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqaXRDb2RlLT5leGVj
dXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjMxNiw2ICsyMzE2LDE2IEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVy
X3Nsb3cKICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbihWTSogdm0s
IFByb3RvQ2FsbEZyYW1lKikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHZtLCB2bS0+ZGlzYWxsb3dW
TUVudHJ5Q291bnQpOworICAgIGlmIChPcHRpb25zOjpjcmFzaE9uRGlzYWxsb3dlZFZNRW50cnko
KSkKKyAgICAgICAgQ1JBU0goKTsKKworICAgIC8vIEVsc2UgcmV0dXJuLCBhbmQgbGV0IGRvVk1F
bnRyeSByZXR1cm4gdW5kZWZpbmVkLgorICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwg
bnVsbHB0cik7Cit9CisKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRK
U1ZhbHVlIHZhbHVlKTsKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRK
U1ZhbHVlIHZhbHVlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ3LDYgKzE0Nyw3
IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF8KICNpZiBFTkFCTEUo
Q19MT09QKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tf
YXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKICNlbmRpZgorZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbihW
TSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogZXh0ZXJuICJDIiBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHZvaWQgbGxpbnRfY3Jhc2goKSBXVEZfSU5URVJOQUw7CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI2NDY0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTcwLDYgKzE3MCw5IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2Fs
bCkKICAgICAjIFNpbmNlIHdlIGhhdmUgdGhlIGd1YXJhbnRlZSB0aGF0IHRYICE9IGFZIHdoZW4g
WCAhPSBZLCB3ZSBhcmUgc2FmZSBmcm9tCiAgICAgIyBhbGlhc2luZyBwcm9ibGVtcyB3aXRoIG91
ciBhcmd1bWVudHMuCiAKKyAgICBsb2FkaSBWTTo6ZGlzYWxsb3dWTUVudHJ5Q291bnRbdm1dLCB0
NAorICAgIGJ0aW56IHQ0LCAuY2hlY2tWTUVudHJ5UGVybWlzc2lvbgorCiAgICAgaWYgQVJNdjcK
ICAgICAgICAgdm1FbnRyeVJlY29yZChjZnIsIHQzKQogICAgICAgICBtb3ZlIHQzLCBzcApAQCAt
MzE5LDYgKzMyMiwxOCBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcG9wQ2FsbGVl
U2F2ZXMoKQogICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAorCisuY2hlY2tWTUVudHJ5
UGVybWlzc2lvbjoKKyAgICBtb3ZlIHZtLCBhMAorICAgIG1vdmUgcHJvdG9DYWxsRnJhbWUsIGEx
CisgICAgY0NhbGwyKF9sbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKQorICAgIG1vdmUg
VW5kZWZpbmVkVGFnLCByMAorICAgIG1vdmUgMCwgcjEKKworICAgIHN1YnAgY2ZyLCBDYWxsZWVS
ZWdpc3RlclNhdmVTaXplLCBzcAorICAgIHBvcENhbGxlZVNhdmVzKCkKKyAgICBmdW5jdGlvbkVw
aWxvZ3VlKCkKKyAgICByZXQKIGVuZAogCiAjIGEwLCBhMiwgdDMsIHQ0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsOSBAQCBt
YWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVu
dCh0NCwgMHhiYWQwZGMwMSkKIAorICAgIGxvYWRpIFZNOjpkaXNhbGxvd1ZNRW50cnlDb3VudFt2
bV0sIHQ0CisgICAgYnRpbnogdDQsIC5jaGVja1ZNRW50cnlQZXJtaXNzaW9uCisKICAgICBzdG9y
ZXAgdm0sIFZNRW50cnlSZWNvcmQ6Om1fdm1bc3BdCiAgICAgbG9hZHAgVk06OnRvcENhbGxGcmFt
ZVt2bV0sIHQ0CiAgICAgc3RvcmVwIHQ0LCBWTUVudHJ5UmVjb3JkOjptX3ByZXZUb3BDYWxsRnJh
bWVbc3BdCkBAIC0yODQsNiArMjg3LDE3IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAg
ICBwb3BDYWxsZWVTYXZlcygpCiAgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgcmV0CisKKy5j
aGVja1ZNRW50cnlQZXJtaXNzaW9uOgorICAgIG1vdmUgdm0sIGEwCisgICAgbW92ZSBwcm90b0Nh
bGxGcmFtZSwgYTEKKyAgICBjQ2FsbDIoX2xsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24p
CisgICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgcjAKKworICAgIHN1YnAgY2ZyLCBDYWxsZWVSZWdp
c3RlclNhdmVTaXplLCBzcAorICAgIHBvcENhbGxlZVNhdmVzKCkKKyAgICBmdW5jdGlvbkVwaWxv
Z3VlKCkKKyAgICByZXQKIGVuZAogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Rpc2FsbG93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXNhbGxvd1Njb3BlLmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1
LDI3ICszNSwxOCBAQCBjbGFzcyBEaXNhbGxvd1Njb3BlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShEaXNhbGxvd1Njb3BlKTsKICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKIHB1
YmxpYzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dTY29wZShi
b29sID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgfkRpc2FsbG93U2NvcGUoKSB7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQo
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlbmFibGUoKSB7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlzYWJsZSgpIHsgfQotCi0jZWxzZSAvLyBub3QgTkRF
QlVHCi0KLSAgICBEaXNhbGxvd1Njb3BlKGJvb2wgZW5hYmxlZCA9IHRydWUpCisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICBEaXNhbGxvd1Njb3BlKCkKICAgICB7Ci0gICAgICAgIG1faXNFbmFibGVk
ID0gZW5hYmxlZDsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkKQotICAgICAgICAgICAgZW50ZXJT
Y29wZSgpOworICAgICAgICBhdXRvIGNvdW50ID0gVDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKKyAg
ICAgICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoKytjb3VudCk7CiAgICAgfQogCiAgICAgfkRp
c2FsbG93U2NvcGUoKQogICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkKQotICAgICAgICAg
ICAgZXhpdFNjb3BlKCk7CisgICAgICAgIGF1dG8gY291bnQgPSBUOjpzY29wZVJlZW50cnlDb3Vu
dCgpOworICAgICAgICBBU1NFUlQoY291bnQpOworICAgICAgICBUOjpzZXRTY29wZVJlZW50cnlD
b3VudCgtLWNvdW50KTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0luRWZmZWN0T25DdXJy
ZW50VGhyZWFkKCkKQEAgLTYzLDM0ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAh
IVQ6OnNjb3BlUmVlbnRyeUNvdW50KCk7CiAgICAgfQogCi0gICAgdm9pZCBlbmFibGUoKQotICAg
IHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICBlbnRlclNjb3BlKCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBkaXNhYmxlKCkKLSAgICB7Ci0gICAgICAgIG1faXNFbmFibGVkID0g
ZmFsc2U7Ci0gICAgICAgIGV4aXRTY29wZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lk
IGVudGVyU2NvcGUoKQotICAgIHsKLSAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRy
eUNvdW50KCk7Ci0gICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50KCsrY291bnQpOwotICAg
IH0KLQotICAgIHZvaWQgZXhpdFNjb3BlKCkKLSAgICB7Ci0gICAgICAgIGF1dG8gY291bnQgPSBU
OjpzY29wZVJlZW50cnlDb3VudCgpOwotICAgICAgICBBU1NFUlQoY291bnQpOwotICAgICAgICBU
OjpzZXRTY29wZVJlZW50cnlDb3VudCgtLWNvdW50KTsKLSAgICB9Ci0KLSAgICBib29sIG1faXNF
bmFibGVkOwotI2VuZGlmIC8vIE5ERUJVRworI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVECisg
ICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1Njb3BlKCkgeyB9IC8vIFdlIG5lZWQgdGhpcyB0byBw
bGFjYXRlIENsYW5nIGR1ZSB0byB1bnVzZWQgd2FybmluZ3MuCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAko
cmV2aXNpb24gMjY0NjQzKQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNh
bGxvd1ZNUmVlbnRyeS5oOjI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Rpc2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkRpc2FsbG93U2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIERpc2FsbG93Vk1SZWVudHJ5IDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dW
TVJlZW50cnk+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7
CisgICAgdHlwZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOworcHVi
bGljOgorI2lmZGVmIE5ERUJVRworCisgICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRy
eShib29sID0gZmFsc2UpIHsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZSgpIHsgfQorCisjZWxzZSAvLyBub3QgTkRFQlVHCisKKyAgICBEaXNhbGxvd1ZNUmVlbnRy
eShib29sIGVuYWJsZWQgPSB0cnVlKQorICAgICAgICA6IEJhc2UoZW5hYmxlZCkKKyAgICB7IH0K
KworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQorICAgIHsKKyAgICAgICAgc19zY29wZVJl
ZW50cnlDb3VudC5jb25zdHJ1Y3QoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHVu
c2lnbmVkIHNjb3BlUmVlbnRyeUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiAqc19zY29w
ZVJlZW50cnlDb3VudC5nZXQoKTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQgc2V0U2NvcGVSZWVu
dHJ5Q291bnQodW5zaWduZWQgdmFsdWUpCisgICAgeworICAgICAgICAqc19zY29wZVJlZW50cnlD
b3VudC5nZXQoKSA9IHZhbHVlOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVH
Q1RocmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7CisKKyNlbmRpZiAvLyBOREVCVUcK
KworICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlzYWxsb3dWTUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDQ3ICsyNSwzNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRpc2FsbG93U2NvcGUu
aCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KLQogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIERpc2FsbG93Vk1SZWVudHJ5
IDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7Ci0gICAgdHlwZWRlZiBEaXNhbGxvd1Nj
b3BlPERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOwotcHVibGljOgotI2lmZGVmIE5ERUJVRwotCi0g
ICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRyeShib29sID0gZmFsc2UpIHsgfQotICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQotCi0jZWxzZSAvLyBu
b3QgTkRFQlVHCitjbGFzcyBWTTsKIAotICAgIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgZW5hYmxl
ZCA9IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVkKQotICAgIHsgfQotCi0gICAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZSgpCisvLyBUaGUgb25seSByZWFzb24gd2UgaW1wbGVtZW50IERpc2Fs
bG93Vk1FbnRyeSBhcyBzcGVjaWFsaXphdGlvbiBvZiBhIHRlbXBsYXRlCisvLyBpcyBzbyB0aGF0
IHdlIGNhbiB3b3JrIGFyb3VuZCBoYXZpbmcgdG8gI2luY2x1ZGUgVk0uaCwgd2hpY2ggY2FuIGh1
cnQgYnVpbGQKKy8vIHRpbWUuIFRoaXMgZGVmZXJzIHRoZSBjb3N0IG9mICNpbmNsdWRlJ2luZyBW
TS5oIHRvIG9ubHkgdGhlIGNsaWVudHMgdGhhdAorLy8gbmVlZCBpdC4KKwordGVtcGxhdGU8Y2xh
c3MgVk1UeXBlID0gVk0+CitjbGFzcyBEaXNhbGxvd1ZNRW50cnlJbXBsIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNRW50cnlJbXBsKTsKK3B1YmxpYzoKKyAgICBEaXNhbGxv
d1ZNRW50cnlJbXBsKFZNVHlwZSYgdm0pCisgICAgICAgIDogbV92bSgmdm0pCiAgICAgewotICAg
ICAgICBzX3Njb3BlUmVlbnRyeUNvdW50LmNvbnN0cnVjdCgpOworICAgICAgICBtX3ZtLT5kaXNh
bGxvd1ZNRW50cnlDb3VudCsrOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBzdGF0aWMgdW5zaWdu
ZWQgc2NvcGVSZWVudHJ5Q291bnQoKQorICAgIH5EaXNhbGxvd1ZNRW50cnlJbXBsKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiAqc19zY29wZVJlZW50cnlDb3VudC5nZXQoKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQpOworICAgICAgICBtX3ZtLT5k
aXNhbGxvd1ZNRW50cnlDb3VudC0tOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKICAgICB9Ci0g
ICAgc3RhdGljIHZvaWQgc2V0U2NvcGVSZWVudHJ5Q291bnQodW5zaWduZWQgdmFsdWUpCi0gICAg
ewotICAgICAgICAqc19zY29wZVJlZW50cnlDb3VudC5nZXQoKSA9IHZhbHVlOwotICAgIH0KLQot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3Bl
Y2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5
Q291bnQ7CiAKLSNlbmRpZiAvLyBOREVCVUcKLQotICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Nj
b3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKK3ByaXZhdGU6CisgICAgVk1UeXBlKiBtX3ZtOwogfTsK
IAordXNpbmcgRGlzYWxsb3dWTUVudHJ5ID0gRGlzYWxsb3dWTUVudHJ5SW1wbDxWTT47CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlz
YWxsb3dWTVJlZW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLSAgICAKLSNp
Zm5kZWYgTkRFQlVHCi1MYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQs
IFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IERpc2FsbG93Vk1SZWVudHJ5OjpzX3Njb3BlUmVl
bnRyeUNvdW50OwotI2VuZGlmCi0gICAgCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAkocmV2
aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dW
TVJlZW50cnkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
IkRpc2FsbG93U2NvcGUuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIERp
c2FsbG93Vk1SZWVudHJ5IDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7Ci0gICAgdHlw
ZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOwotcHVibGljOgotI2lm
ZGVmIE5ERUJVRwotCi0gICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRyeShib29sID0g
ZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsg
fQotCi0jZWxzZSAvLyBub3QgTkRFQlVHCi0KLSAgICBEaXNhbGxvd1ZNUmVlbnRyeShib29sIGVu
YWJsZWQgPSB0cnVlKQotICAgICAgICA6IEJhc2UoZW5hYmxlZCkKLSAgICB7IH0KLQotICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemUoKQotICAgIHsKLSAgICAgICAgc19zY29wZVJlZW50cnlDb3Vu
dC5jb25zdHJ1Y3QoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNj
b3BlUmVlbnRyeUNvdW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAqc19zY29wZVJlZW50cnlD
b3VudC5nZXQoKTsKLSAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0U2NvcGVSZWVudHJ5Q291bnQo
dW5zaWduZWQgdmFsdWUpCi0gICAgewotICAgICAgICAqc19zY29wZVJlZW50cnlDb3VudC5nZXQo
KSA9IHZhbHVlOwotICAgIH0KLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6
VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7Ci0KLSNlbmRpZiAvLyBOREVCVUcKLQotICAgIGZy
aWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW5pdGlhbGl6ZVRocmVhZGluZy5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnkuaCIK
ICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgi
CiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCkBAIC03OCwxMCArNzcsOCBAQCB2b2lkIGluaXRpYWxp
emUoKQogICAgICAgICAgICAgZW5hYmxlU2lnaWxsQ3Jhc2hBbmFseXplcigpOwogCiAgICAgICAg
IExMSW50Ojppbml0aWFsaXplKCk7Ci0jaWZuZGVmIE5ERUJVRwogICAgICAgICBEaXNhbGxvd0dD
Ojppbml0aWFsaXplKCk7Ci0gICAgICAgIERpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXplKCk7
Ci0jZW5kaWYKKwogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7CiAgICAgICAgIFRo
cmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIHRocmVhZC5zZXRTYXZl
ZExhc3RTdGFja1RvcCh0aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3Nr
dXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTk2LDggKzk2LDcgQEAgSlNBcnJheSogSlNB
cnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY3Jl
YXRlV2l0aEJ1dHRlcmZseSh2bSwgZGVmZXJyYWxDb250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZs
eSk7CiAKLSAgICBjb25zdCBib29sIGNyZWF0ZVVuaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHNj
b3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQsIGNyZWF0ZVVuaW5pdGlhbGl6ZWQpOworICAgIHNj
b3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM0LDExICszNCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRl
ZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAorCiBPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
OjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKICAgICA6IG1fdm0odm0pCi0gICAg
LCBtX2Rpc2FsbG93R0MoZmFsc2UpCi0gICAgLCBtX2Rpc2FsbG93Vk1SZWVudHJ5KGZhbHNlKQog
ewogfQogCkBAIC01MCwyMSArNDksMjAgQEAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6fk9i
amVjdEluaXRpYQogICAgIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChtX29iamVjdCk7
CiB9CiAKLXZvaWQgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKEpT
T2JqZWN0KiBvYmplY3QsIGJvb2wgd2FzQ3JlYXRlZFVuaW5pdGlhbGl6ZWQpCit2b2lkIE9iamVj
dEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRlZChKU09iamVjdCogb2JqZWN0KQog
ewotICAgIGlmICh3YXNDcmVhdGVkVW5pbml0aWFsaXplZCkgewotICAgICAgICBtX2Rpc2FsbG93
R0MuZW5hYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZW5hYmxlKCk7Ci0gICAg
ICAgIG1fb2JqZWN0ID0gb2JqZWN0OwotICAgIH0gZWxzZQotICAgICAgICB2ZXJpZnlQcm9wZXJ0
aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKKyAgICBBU1NFUlQoIW1fZGlzYWxsb3dHQyk7Cisg
ICAgQVNTRVJUKCFtX2Rpc2FsbG93Vk1FbnRyeSk7CisgICAgbV9kaXNhbGxvd0dDLmVtcGxhY2Uo
KTsKKyAgICBtX2Rpc2FsbG93Vk1FbnRyeS5lbXBsYWNlKG1fdm0pOworICAgIG1fb2JqZWN0ID0g
b2JqZWN0OwogfQogCiB2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRp
YWxpemVkKEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAgICAg
IG1fZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZGlz
YWJsZSgpOworICAgICAgICBtX2Rpc2FsbG93R0MucmVzZXQoKTsKKyAgICAgICAgbV9kaXNhbGxv
d1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgbV9vYmplY3QgPSBudWxscHRyOwogICAgIH0KICAg
ICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKQEAgLTExNCw2ICsxMTIs
NyBAQCB2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6OnZlcmlmeVByCiAgICAgICAgIH0K
ICAgICB9CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAkocmV2aXNpb24gMjY0NjQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNTQgKzI2LDU1IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkRlZmVyR0MuaCIKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgorI2luY2x1
ZGUgIkRpc2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBWTTsKIGNsYXNzIEpTT2JqZWN0
OwogCi0jaWZkZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIAogY2xhc3MgT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZSB7CiBwdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSBPYmplY3RJbml0
aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgIHsgfQotICAg
IEFMV0FZU19JTkxJTkUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKQotICAgIHsKLSAgICAg
ICAgbV92bS5oZWFwLm11dGF0b3JGZW5jZSgpOwotICAgIH0KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
fk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKIAotICAgIEFMV0FZU19JTkxJTkUgVk0mIHZt
KCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlB
bGxvY2F0ZWQoSlNPYmplY3QqLCBib29sKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90
aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVy
biBtX3ZtOyB9CisgICAgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKTsKKyAgICB2b2lk
IG5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0Kik7CiAKIHByaXZhdGU6CisgICAgdm9pZCB2ZXJp
ZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKKwogICAgIFZNJiBtX3ZtOwor
ICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlzYWxsb3dHQzsKKyAgICBPcHRpb25hbDxEaXNh
bGxvd1ZNRW50cnk+IG1fZGlzYWxsb3dWTUVudHJ5OworICAgIEpTT2JqZWN0KiBtX29iamVjdCB7
IG51bGxwdHIgfTsKIH07CiAKLSNlbHNlIC8vIG5vdCBOREVCVUcKKyNlbHNlIC8vIG5vdCBBU1NF
UlRfRU5BQkxFRAogCiBjbGFzcyBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHsKIHB1YmxpYzoK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKKyAgICBB
TFdBWVNfSU5MSU5FIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoVk0mIHZtKQorICAgICAgICA6
IG1fdm0odm0pCisgICAgeyB9CisgICAgQUxXQVlTX0lOTElORSB+T2JqZWN0SW5pdGlhbGl6YXRp
b25TY29wZSgpCisgICAgeworICAgICAgICBtX3ZtLmhlYXAubXV0YXRvckZlbmNlKCk7CisgICAg
fQogCi0gICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIHZvaWQgbm90aWZ5
QWxsb2NhdGVkKEpTT2JqZWN0KiwgYm9vbCB3YXNDcmVhdGVkVW5pbml0aWFsaXplZCk7Ci0gICAg
dm9pZCBub3RpZnlJbml0aWFsaXplZChKU09iamVjdCopOworICAgIEFMV0FZU19JTkxJTkUgVk0m
IHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3Rp
ZnlBbGxvY2F0ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5
SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHZlcmlmeVBy
b3BlcnRpZXNBcmVJbml0aWFsaXplZChKU09iamVjdCopOwotCiAgICAgVk0mIG1fdm07Ci0gICAg
RGlzYWxsb3dHQyBtX2Rpc2FsbG93R0M7Ci0gICAgRGlzYWxsb3dWTVJlZW50cnkgbV9kaXNhbGxv
d1ZNUmVlbnRyeTsKLSAgICBKU09iamVjdCogbV9vYmplY3QgeyBudWxscHRyIH07CiB9OwogCi0j
ZW5kaWYgLy8gTkRFQlVHCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgY29uc3RleHByIGJv
b2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYoVW5zaWduZWQsIHNvZnRSZXNlcnZl
ZFpvbmVTaXplLCAxMjggKiBLQiwgTm9ybWFsLCAiQSBidWZmZXIgZ3JlYXRlciB0aGFuIHJlc2Vy
dmVkWm9uZVNpemUgdGhhdCByZXNlcnZlcyBzcGFjZSBmb3Igc3RyaW5naWZ5aW5nIGV4Y2VwdGlv
bnMuIikgXAogICAgIHYoVW5zaWduZWQsIHJlc2VydmVkWm9uZVNpemUsIDY0ICogS0IsIE5vcm1h
bCwgIlRoZSBhbW91bnQgb2Ygc3RhY2sgc3BhY2Ugd2UgZ3VhcmFudGVlIHRvIG91ciBjbGllbnRz
IChhbmQgdG8gaW50ZXJhbCBWTSBjb2RlIHRoYXQgZG9lcyBub3QgY2FsbCBvdXQgdG8gY2xpZW50
cykuIikgXAogICAgIFwKKyAgICB2KEJvb2wsIGNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSwgQVNT
RVJUX0VOQUJMRUQsIE5vcm1hbCwgIkZvcmNlcyBhIGNyYXNoIGlmIHdlIGF0dGVtcHQgdG8gZW50
ZXIgdGhlIFZNIHdoZW4gZGlzYWxsb3dlZCIpIFwKICAgICB2KEJvb2wsIGNyYXNoSWZDYW50QWxs
b2NhdGVKSVRNZW1vcnksIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVk
LCBqaXRNZW1vcnlSZXNlcnZhdGlvblNpemUsIDAsIE5vcm1hbCwgIlNldCB0aGlzIG51bWJlciB0
byBjaGFuZ2UgdGhlIGV4ZWN1dGFibGUgYWxsb2NhdGlvbiBzaXplIGluIEV4ZWN1dGFibGVBbGxv
Y2F0b3JGaXhlZFZNUG9vbC4gKEluIGJ5dGVzLikiKSBcCiAgICAgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlz
aW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw3IEBAIEFMV0FZU19JTkxJTkUg
SlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWEKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJy
YXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJlLCBi
dXR0ZXJmbHkpOwogCi0gICAgY29uc3QgYm9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1ZTsK
LSAgICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVkKTsK
KyAgICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDY0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0Lmgi
CisjaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRXZlbnRM
b2NhdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJG
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIKQEAgLTk1Miw2ICs5NTMsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNDaGVja3BvaW50T1NSU2lkZVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jaGVj
a3BvaW50U2lkZVN0YXRlLnNpemUoKTsgfQogICAgIHZvaWQgc2NhblNpZGVTdGF0ZShDb25zZXJ2
YXRpdmVSb290cyYpIGNvbnN0OwogCisgICAgdW5zaWduZWQgZGlzYWxsb3dWTUVudHJ5Q291bnQg
eyAwIH07CiAgICAgVk1FbnRyeVNjb3BlKiBlbnRyeVNjb3BlOwogCiAgICAgSlNPYmplY3QqIHN0
cmluZ1JlY3Vyc2lvbkNoZWNrRmlyc3RPYmplY3QgeyBudWxscHRyIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDI2
NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5o
IgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAj
aW5jbHVkZSAiVk0uaCIKQEAgLTM5LDcgKzM4LDYgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2Nv
cGUoVk0mIHZtLCBKU0dsbwogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKIHsKLSAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZmZWN0
T25DdXJyZW50VGhyZWFkKCkpOwogICAgIGlmICghdm0uZW50cnlTY29wZSkgewogICAgICAgICB2
bS5lbnRyeVNjb3BlID0gdGhpczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404887</attachid>
            <date>2020-07-21 17:28:26 -0700</date>
            <delta_ts>2020-07-21 17:57:38 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214539c.patch</filename>
            <type>text/plain</type>
            <size>45227</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NjgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBT
aW1wbGlmeSBEaXNhbGxvd1Njb3BlLCBEaXNhbGxvd0dDLCBhbmQgRGlzYWxsb3dWTVJlZW50cnkg
aW1wbGVtZW50YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0NTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUHJldmlvdXNseSwgRGlzYWxsb3dTY29wZSBuZWVkZWQgdG8gc3VwcG9ydCBlbmFi
bGluZyBhbmQgZGlzYWJsaW5nLiAgVGhpcyB3YXMKKyAgICAgICAgb25seSBuZWVkZWQgdG8gZW5h
YmxlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLiAgTm93
LCB3ZQorICAgICAgICBjYW4gbWFrZSB0aGUgRGlzYWxsb3dHQyBhbmQgRGlzYWxsb3dWTVJlZW50
cnkgaW5zaWRlIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUKKyAgICAgICAgb3B0aW9uYWwgd2l0
aCBXVEY6Ok9wdGlvbmFsLiAgV2l0aCB0aGF0IHdlIGNhbiBzaW1wbGlmeSB0aGVzZSBzY29wZXMg
YW5kIG1ha2UKKyAgICAgICAgdGhlbSB0cnVlIFJBSUkgc2NvcGUgb2JqZWN0cy4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFt
ZWQgRGlzYWxsb3dWTVJlZW50cnkgdG8gRGlzYWxsb3dWTUVudHJ5LgorICAgICAgICAgICBUaGUg
c2NvcGUgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBWTSBlbnRyeSBjb21wbGV0ZWx5LiAgVGhlcmUn
cyBubyBuZWVkIHRvCisgICAgICAgICAgIHJlc3RyaWN0IGl0IHRvIG9ubHkgcmUtZW50cmllcy4K
KworICAgICAgICAyLiBFbmZvcmNlbWVudCBvZiBEaXNhbGxvd1ZNUmVlbnRyeSBpcyBub3cgZG9u
ZSBpbiB0aGUgTExJbnQncyBkb1ZNRW50cnkoKSBpbnN0ZWFkCisgICAgICAgICAgIG9mIHRoZSBW
TUVudHJ5U2NvcGUncyBjb25zdHJ1Y3Rvci4gIFRoaXMgaXMgYSBzdHJvbmdlciBndWFyYW50ZWUu
CisKKyAgICAgICAgICAgSWYgT3B0aW9uczo6Y3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5KCkgaXMg
dHJ1ZSwgdGhlIFZNIHdpbGwgY3Jhc2ggaWYgaXQgc2VlcworICAgICAgICAgICBhbiBhdHRlbXB0
IHRvIGVudGVyIHRoZSBWTSB3aGlsZSBkaXNhbGxvd2VkLgorCisgICAgICAgICAgIElmIE9wdGlv
bnM6OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGlzIGZhbHNlLCBhbiBhdHRlbXB0IHRvIGNh
bGwgaW50byB0aGUgVk0KKyAgICAgICAgICAgd2hpbGUgZGlzYWxsb3dlZCB3aWxsIHJldHVybiBp
bW1lZGlhdGVseSB3aXRoIGFuIHVuZGVmaW5lZCByZXN1bHQgd2l0aG91dAorICAgICAgICAgICBp
bnZva2luZyBhbnkgc2NyaXB0LgorCisgICAgICAgICAgIEJ5IGRlZmF1bHQsIE9wdGlvbnM6OmNy
YXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGlzIHRydWUgaWYgQVNTRVJUX0VOQUJMRUQgaXMKKyAg
ICAgICAgICAgdHJ1ZS4KKworICAgICAgICAzLiBDaGFuZ2UgRGlzYWxsb3dTY29wZSBhbmQgRGlz
YWxsb3dHQyB0byBiZSBiYXNlZCBvbiBBU1NFUlRfRU5BQkxFRCBpbnN0ZWFkIG9mIE5FQlVHLgor
CisgICAgICAgIDQuIE1ha2UgRGlzYWxsb3dWTUVudHJ5IGFsd2F5cyBlbmZvcmNlYWJsZSwgbm90
IGp1c3Qgd2hlbiBBU1NFUlRfRU5BQkxFRC4KKyAgICAgICAgICAgSXQncyBlbmZvcmNlbWVudCBh
Y3Rpb24gZGVwZW5kcyBvbiBPcHRpb25zOjpjcmFzaE9uRGlzYWxsb3dlZFZNRW50cnkoKSBhcwor
ICAgICAgICAgICBkZXNjcmliZWQgYWJvdmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGhlYXAvRGVmZXJHQy5jcHA6CisgICAgICAg
ICogaGVhcC9EZWZlckdDLmg6CisgICAgICAgIChKU0M6OkRpc2FsbG93R0M6OkRpc2FsbG93R0Mp
OgorICAgICAgICAoSlNDOjpEaXNhbGxvd0dDOjppbml0aWFsaXplKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVj
dXRlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhl
Y3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24pOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5oOgorICAgICAgICAo
SlNDOjpEaXNhbGxvd1Njb3BlOjpEaXNhbGxvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6RGlzYWxs
b3dTY29wZTo6fkRpc2FsbG93U2NvcGUpOgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpp
c0luRWZmZWN0T25DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6
ZW5hYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6ZGlzYWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2FsbG93U2NvcGU6OmVudGVyU2NvcGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpEaXNhbGxvd1Njb3BlOjpleGl0U2NvcGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvRGlzYWxsb3dWTUVudHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmguCisgICAgICAgIChKU0M6
OkRpc2FsbG93Vk1FbnRyeUltcGw6OkRpc2FsbG93Vk1FbnRyeUltcGwpOgorICAgICAgICAoSlND
OjpEaXNhbGxvd1ZNRW50cnlJbXBsOjp+RGlzYWxsb3dWTUVudHJ5SW1wbCk6CisgICAgICAgIChK
U0M6OkRpc2FsbG93Vk1FbnRyeUltcGw6OmlzRW5nYWdlZCBjb25zdCk6CisgICAgICAgIChKU0M6
OkRpc2FsbG93Vk1FbnRyeUltcGw6OnJlbGVhc2UpOgorICAgICAgICAoSlNDOjpEaXNhbGxvd1ZN
UmVlbnRyeTo6RGlzYWxsb3dWTVJlZW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEaXNh
bGxvd1ZNUmVlbnRyeTo6aW5pdGlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRpc2Fs
bG93Vk1SZWVudHJ5OjpzY29wZVJlZW50cnlDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkRpc2FsbG93Vk1SZWVudHJ5OjpzZXRTY29wZVJlZW50cnlDb3VudCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlv
blNjb3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5SW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHJ1
bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlOjp2bSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGU6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUpOgorICAgICAgICAoSlND
OjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjp+T2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSk6
CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRl
ZCk6CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRp
YWxpemVkKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNj
b3BlOjpWTUVudHJ5U2NvcGUpOgorCiAyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBsbGludF9zbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSgpIHNo
b3VsZCBub3QgYmUgdXNpbmcgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2
NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtODM4LDcgKzgzOCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUEKICAgICBydW50aW1lL0RpcmVjdEFyZ3VtZW50c09mZnNldC5oCiAgICAgcnVudGlt
ZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCiAgICAgcnVudGltZS9EaXNhbGxvd1Njb3BlLmgKLSAg
ICBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgKKyAgICBydW50aW1lL0Rpc2FsbG93Vk1FbnRy
eS5oCiAgICAgcnVudGltZS9EdW1wQ29udGV4dC5oCiAgICAgcnVudGltZS9FQ01BTW9kZS5oCiAg
ICAgcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2Niw3ICs3NjYsNiBAQCBydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCiBydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAKIHJ1bnRpbWUvRGlyZWN0
QXJndW1lbnRzT2Zmc2V0LmNwcAogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKLXJ1
bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCiBydW50aW1lL0RvdWJsZVByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvRHVtcENvbnRleHQuY3BwCiBydW50aW1lL0VDTUFNb2RlLmNw
cApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDY0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI1LDcgKzE5MjUsNyBAQAogCQlGRTUzM0NBNTFG
MjE3REIzMDAxNkExRkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIg
LyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUZFNTMzQ0E2MUYyMTdEQjMwMDE2QTFG
RSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQlGRTUzM0NBRDFGMjE3RUE1MDAxNkExRkUgLyog
dGVzdG1hc20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLzsgfTsKLQkJRkU1
NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU0REVGQTFFOEM2RDcyMDBBODky
QzUgLyogRGlzYWxsb3dWTVJlZW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxsb3dW
TUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTUVudHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU1NERFRkYxRThENzZGQTAw
QTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNhbGxvd1Njb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU1
NjI4Q0UxRTk5NTEzMjAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NjI4Q0MxRTk5NTEyNDAwQzQ5RTQ1
IC8qIEFpclByaW50U3BlY2lhbC5oICovOyB9OwogCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0Mg
LyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUyMjUsOCArNTIy
NSw3IEBACiAJCUZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJyZWRTb3VyY2VE
dW1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1MzNDQTAxRjIxN0MzMTAw
MTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RtYXNtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1MzNDQUMxRjIxN0RCNDAwMTZBMUZFIC8q
IHRlc3RtYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSB0ZXN0bWFzbTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJRkU1NERF
RkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93Vk1SZWVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUZFNTRERUZDMUU4QzZERkYwMEE4OTJDNSAvKiBEaXNhbGxvd1ZNUmVlbnRy
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNhbGxvd1ZNUmVl
bnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNTRERUZBMUU4QzZENzIw
MEE4OTJDNSAvKiBEaXNhbGxvd1ZNRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlzYWxsb3dWTUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
NTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNhbGxvd1Njb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FsbG93U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU1NjI4Q0IxRTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJQcmludFNwZWNpYWwuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclByaW50U3BlY2lhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFNTYyOENDMUU5OTUxMjQwMEM0OUU0NSAvKiBBaXJQcmludFNwZWNpYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyUHJpbnRTcGVjaWFsLmg7IHBhdGgg
PSBiMy9haXIvQWlyUHJpbnRTcGVjaWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03MTcyLDggKzcxNzEsNyBAQAogCQkJCTE0Mzg2QTcyMURENjk4OTUwMDg2NTJDNCAvKiBEaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQzODZBNzMxREQ2OTg5NTAwODY1MkM0IC8q
IERpcmVjdEV2YWxFeGVjdXRhYmxlLmggKi8sCiAJCQkJRkU1NERFRkUxRThENzQyODAwQTg5MkM1
IC8qIERpc2FsbG93U2NvcGUuaCAqLywKLQkJCQlGRTU0REVGQzFFOEM2REZGMDBBODkyQzUgLyog
RGlzYWxsb3dWTVJlZW50cnkuY3BwICovLAotCQkJCUZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAv
KiBEaXNhbGxvd1ZNUmVlbnRyeS5oICovLAorCQkJCUZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAv
KiBEaXNhbGxvd1ZNRW50cnkuaCAqLywKIAkJCQlFMzE2MTgxMDFFQzVGRTA4MDAwNkEyMTggLyog
RE9NQW5ub3RhdGlvbi5oICovLAogCQkJCUUzMTYxODExMUVDNUZFMDgwMDA2QTIxOCAvKiBET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwICovLAogCQkJCUUzMTYxODEyMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCAqLywKQEAgLTk1MjgsNyArOTUyNiw3IEBA
CiAJCQkJMTQzODZBNzUxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA4RjFDMENENjg1MDAwNTJCRkEgLyogRGlzYWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU0REVGRjFF
OEQ3NkZBMDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkU1
NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1SZWVudHJ5LmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxsb3dWTUVudHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkY0MjczMTE1OEVCRDU0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzE2MTgxMzFFQzVGRTE3MDAwNkEyMTggLyogRE9NQW5u
b3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMxNjE4MTUxRUM1RkUyNzAwMDZBMjE4IC8q
IERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3
ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VS
VF9FTkFCTEVECiBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdU
Rjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IERpc2FsbG93R0M6OnNfc2NvcGVSZWVudHJ5Q291bnQ7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkocmV2aXNp
b24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NywxNiArNzcsOCBAQCBjbGFzcyBEaXNhbGxvd0dDIDogcHVibGljIERp
c2FsbG93U2NvcGU8CiAgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CiAgICAgdHlwZWRl
ZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93R0M+IEJhc2U7CiBwdWJsaWM6Ci0jaWZkZWYgTkRFQlVH
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIERpc2FsbG93R0MoYm9vbCA9IGZhbHNlKSB7IH0KLSAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7IH0KLQotI2Vsc2UgLy8gbm90
IE5ERUJVRwotCi0gICAgRGlzYWxsb3dHQyhib29sIGVuYWJsZWQgPSB0cnVlKQotICAgICAgICA6
IEJhc2UoZW5hYmxlZCkKLSAgICB7IH0KKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIERpc2FsbG93
R0MoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCkKICAgICB7CkBA
IC0xMDUsNyArOTcsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPHVuc2lnbmVkLCBXVEY6OkNh
bkJlR0NUaHJlYWQ6OlRydWU+PiBzX3Njb3BlUmVlbnRyeUNvdW50OwogCi0jZW5kaWYgLy8gTkRF
QlVHCisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dHQygpIHsgfSAvLyBXZSBuZWVk
IHRoaXMgdG8gcGxhY2F0ZSBDbGFuZyBkdWUgdG8gdW51c2VkIHdhcm5pbmdzLgorICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQorI2VuZGlmIC8vIEFTU0VSVF9F
TkFCTEVECiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlzYWxsb3dHQz47
CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endh
cmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC04MjUsMTUgKzgyNSwxNSBA
QCBmYWlsZWRKU09OUDoKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0KIAotICAgIERpc2FsbG93
R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENv
ZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUgPSBw
cm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCk7Ci0KKyAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29k
ZTsKICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFt
ZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxDYWxsZWUsIHRoaXNPYmosIDEp
OworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0Mg
aGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAg
IGppdENvZGUgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisgICAgICAgIHByb3RvQ2Fs
bEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGdsb2JhbENhbGxlZSwgdGhpc09i
aiwgMSk7CisgICAgfQogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICBkaXNhbGxvd0dD
LmRpc2FibGUoKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0Q29k
ZSA9PSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCkucHRyKCkpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CkBAIC04OTAsMjcg
Kzg5MCwyNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAgICAg
ICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICB9
CiAKLSAgICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBH
QyBjYW4gcmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KLQogICAgIFJlZlB0cjxKSVRD
b2RlPiBqaXRDb2RlOwotICAgIGlmIChpc0pTQ2FsbCkKLSAgICAgICAgaml0Q29kZSA9IGNhbGxE
YXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKLQog
ICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmlu
aXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3ND
b3VudCwgYXJncy5kYXRhKCkpOworICAgIHsKKyAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dD
OyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4
ZWN1dGFibGUuCisgICAgICAgIGlmIChpc0pTQ2FsbCkKKyAgICAgICAgICAgIGppdENvZGUgPSBj
YWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7
CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworICAgIH0KIAog
ICAgIEpTVmFsdWUgcmVzdWx0OwotICAgIHsKLSAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToK
LSAgICAgICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAgICAgIGlmIChpc0pTQ2FsbCkgewot
ICAgICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBBU1NFUlQoaml0
Q29kZSA9PSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVG
b3JDYWxsKCkucHRyKCkpOwotICAgICAgICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgm
dm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbi5yYXdQb2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFsdWUoKSk7Ci0gICAgICAgIH0KKyAg
ICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIGlmIChpc0pTQ2FsbCkgeworICAgICAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgQVNTRVJUKGppdENvZGUgPT0gY2FsbERhdGEuanMu
ZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLnB0cigpKTsKKyAg
ICAgICAgcmVzdWx0ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb05h
dGl2ZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9pbnRlcigpLCAmdm0sICZwcm90b0Nh
bGxGcmFtZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIEpTVmFs
dWUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKQEAgLTk3
MiwyOCArOTY5LDI1IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgK
ICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwog
ICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBl
bnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBFeGVjdXRhYmxlLgotCiAgICAgUmVmUHRy
PEpJVENvZGU+IGppdENvZGU7Ci0gICAgaWYgKGlzSlNDb25zdHJ1Y3QpCi0gICAgICAgIGppdENv
ZGUgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNvbnN0cnVjdCgpOwotCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Ci0g
ICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY29uc3Ry
dWN0b3IsIG5ld1RhcmdldCwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgeworICAgICAg
ICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4g
cmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaWYgKGlzSlNDb25zdHJ1
Y3QpCisgICAgICAgICAgICBqaXRDb2RlID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1
dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKTsKKyAgICAgICAgcHJvdG9DYWxs
RnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIG5ld1Rh
cmdldCwgYXJnc0NvdW50LCBhcmdzLmRhdGEoKSk7CisgICAgfQogCiAgICAgSlNWYWx1ZSByZXN1
bHQ7Ci0gICAgewotICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlLgotICAgICAgICBkaXNhbGxv
d0dDLmRpc2FibGUoKTsKLSAgICAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAg
IEFTU0VSVChqaXRDb2RlID09IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkucHRyKCkpOwotICAgICAgICAgICAgcmVzdWx0
ID0gaml0Q29kZS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZl
KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9D
YWxsRnJhbWUpKTsKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlLgorICAgIGlmIChpc0pTQ29uc3Ry
dWN0KSB7CisgICAgICAgIEFTU0VSVChqaXRDb2RlID09IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rp
b25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkucHRyKCkpOworICAg
ICAgICByZXN1bHQgPSBqaXRDb2RlLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0
aXZlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJv
dG9DYWxsRnJhbWUpKTsKIAotICAgICAgICAgICAgaWYgKExJS0VMWSghdGhyb3dTY29wZS5leGNl
cHRpb24oKSkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzT2JqZWN0
KCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChMSUtFTFkoIXRocm93U2NvcGUuZXhjZXB0aW9u
KCkpKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmlzT2JqZWN0KCkpOwogICAg
IH0KIAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CkBAIC0x
MTkzLDE1ICsxMTg3LDE1IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAx
IHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogICAgIH0KIAotICAgIERpc2FsbG93R0MgZGlzYWxsb3dH
QzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVCbG9jayBpbiBF
eGVjdXRhYmxlLgotCi0gICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUgPSBldmFsLT5nZW5lcmF0
ZWRKSVRDb2RlKCk7Ci0KKyAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90b0Nh
bGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9j
aywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIHRoaXNWYWx1ZSwgMSk7CisgICAgeworICAgICAgICBE
aXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVw
bGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KKyAgICAgICAgaml0Q29kZSA9IGV2YWwtPmdl
bmVyYXRlZEpJVENvZGUoKTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgY2FsbGVlLCB0aGlzVmFsdWUsIDEpOworICAgIH0KIAogICAgIC8vIEV4
ZWN1dGUgdGhlIGNvZGU6Ci0gICAgZGlzYWxsb3dHQy5kaXNhYmxlKCk7CiAgICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENvZGUgPT0gZXZhbC0+Z2VuZXJhdGVkSklUQ29k
ZSgpLnB0cigpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGppdENvZGUtPmV4ZWN1dGUoJnZtLCAm
cHJvdG9DYWxsRnJhbWUpOwpAQCAtMTI1MSwxOCArMTI0NSwxOCBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhCiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KICAgICB9CiAKLSAg
ICBEaXNhbGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4g
cmVwbGFjZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KLQotICAgIFJlZlB0cjxKSVRDb2RlPiBq
aXRDb2RlID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpOwotCi0gICAgLy8gVGhlIHx0
aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KLSAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmly
b25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKLSAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29y
ZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBQcm90
b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKLSAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVC
bG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpzVW5kZWZpbmVkKCksIDEpOworICAgIHsKKyAg
ICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4gR0Mg
Y2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCisgICAgICAgIGppdENvZGUgPSBl
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisgICAgICAgIC8vIFRoZSB8dGhpc3wgb2Yg
dGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCisgICAgICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1l
bnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29y
ZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgY2FsbGVlLCBqc1VuZGVmaW5lZCgpLCAxKTsKKyAgICB9CiAKICAgICAv
LyBFeGVjdXRlIHRoZSBjb2RlOgotICAgIGRpc2FsbG93R0MuZGlzYWJsZSgpOwogICAgIHRocm93
U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChqaXRDb2RlID09IGV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGUoKS5wdHIoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqaXRDb2RlLT5leGVj
dXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjMxNiw2ICsyMzE2LDE2IEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF93cml0ZV9iYXJyaWVy
X3Nsb3cKICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIAorZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbihWTSogdm0s
IFByb3RvQ2FsbEZyYW1lKikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHZtLCB2bS0+ZGlzYWxsb3dW
TUVudHJ5Q291bnQpOworICAgIGlmIChPcHRpb25zOjpjcmFzaE9uRGlzYWxsb3dlZFZNRW50cnko
KSkKKyAgICAgICAgQ1JBU0goKTsKKworICAgIC8vIEVsc2UgcmV0dXJuLCBhbmQgbGV0IGRvVk1F
bnRyeSByZXR1cm4gdW5kZWZpbmVkLgorICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwg
bnVsbHB0cik7Cit9CisKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRK
U1ZhbHVlIHZhbHVlKTsKIGV4dGVybiAiQyIgdm9pZCBsbGludF9kdW1wX3ZhbHVlKEVuY29kZWRK
U1ZhbHVlIHZhbHVlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ3LDYgKzE0Nyw3
IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF8KICNpZiBFTkFCTEUo
Q19MT09QKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tf
YXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKICNlbmRpZgorZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfY2hlY2tfdm1fZW50cnlfcGVybWlzc2lvbihW
TSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogZXh0ZXJuICJDIiBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHZvaWQgbGxpbnRfY3Jhc2goKSBXVEZfSU5URVJOQUw7CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI2NDY0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTcwLDYgKzE3MCw5IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2Fs
bCkKICAgICAjIFNpbmNlIHdlIGhhdmUgdGhlIGd1YXJhbnRlZSB0aGF0IHRYICE9IGFZIHdoZW4g
WCAhPSBZLCB3ZSBhcmUgc2FmZSBmcm9tCiAgICAgIyBhbGlhc2luZyBwcm9ibGVtcyB3aXRoIG91
ciBhcmd1bWVudHMuCiAKKyAgICBsb2FkaSBWTTo6ZGlzYWxsb3dWTUVudHJ5Q291bnRbdm1dLCB0
NAorICAgIGJ0aW56IHQ0LCAuY2hlY2tWTUVudHJ5UGVybWlzc2lvbgorCiAgICAgaWYgQVJNdjcK
ICAgICAgICAgdm1FbnRyeVJlY29yZChjZnIsIHQzKQogICAgICAgICBtb3ZlIHQzLCBzcApAQCAt
MzE5LDYgKzMyMiwxOCBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcG9wQ2FsbGVl
U2F2ZXMoKQogICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgIHJldAorCisuY2hlY2tWTUVudHJ5
UGVybWlzc2lvbjoKKyAgICBtb3ZlIHZtLCBhMAorICAgIG1vdmUgcHJvdG9DYWxsRnJhbWUsIGEx
CisgICAgY0NhbGwyKF9sbGludF9jaGVja192bV9lbnRyeV9wZXJtaXNzaW9uKQorICAgIG1vdmUg
VW5kZWZpbmVkVGFnLCByMAorICAgIG1vdmUgMCwgcjEKKworICAgIHN1YnAgY2ZyLCBDYWxsZWVS
ZWdpc3RlclNhdmVTaXplLCBzcAorICAgIHBvcENhbGxlZVNhdmVzKCkKKyAgICBmdW5jdGlvbkVw
aWxvZ3VlKCkKKyAgICByZXQKIGVuZAogCiAjIGEwLCBhMiwgdDMsIHQ0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkocmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsOSBAQCBt
YWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVu
dCh0NCwgMHhiYWQwZGMwMSkKIAorICAgIGxvYWRpIFZNOjpkaXNhbGxvd1ZNRW50cnlDb3VudFt2
bV0sIHQ0CisgICAgYnRpbnogdDQsIC5jaGVja1ZNRW50cnlQZXJtaXNzaW9uCisKICAgICBzdG9y
ZXAgdm0sIFZNRW50cnlSZWNvcmQ6Om1fdm1bc3BdCiAgICAgbG9hZHAgVk06OnRvcENhbGxGcmFt
ZVt2bV0sIHQ0CiAgICAgc3RvcmVwIHQ0LCBWTUVudHJ5UmVjb3JkOjptX3ByZXZUb3BDYWxsRnJh
bWVbc3BdCkBAIC0yODQsNiArMjg3LDE3IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAg
ICBwb3BDYWxsZWVTYXZlcygpCiAgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgcmV0CisKKy5j
aGVja1ZNRW50cnlQZXJtaXNzaW9uOgorICAgIG1vdmUgdm0sIGEwCisgICAgbW92ZSBwcm90b0Nh
bGxGcmFtZSwgYTEKKyAgICBjQ2FsbDIoX2xsaW50X2NoZWNrX3ZtX2VudHJ5X3Blcm1pc3Npb24p
CisgICAgbW92ZSBWYWx1ZVVuZGVmaW5lZCwgcjAKKworICAgIHN1YnAgY2ZyLCBDYWxsZWVSZWdp
c3RlclNhdmVTaXplLCBzcAorICAgIHBvcENhbGxlZVNhdmVzKCkKKyAgICBmdW5jdGlvbkVwaWxv
Z3VlKCkKKyAgICByZXQKIGVuZAogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Rpc2FsbG93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXNhbGxvd1Njb3BlLmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1
LDI3ICszNSwxOCBAQCBjbGFzcyBEaXNhbGxvd1Njb3BlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShEaXNhbGxvd1Njb3BlKTsKICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NBVElPTjsKIHB1
YmxpYzoKLSNpZmRlZiBOREVCVUcKLQotICAgIEFMV0FZU19JTkxJTkUgRGlzYWxsb3dTY29wZShi
b29sID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgfkRpc2FsbG93U2NvcGUoKSB7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQo
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlbmFibGUoKSB7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGlzYWJsZSgpIHsgfQotCi0jZWxzZSAvLyBub3QgTkRF
QlVHCi0KLSAgICBEaXNhbGxvd1Njb3BlKGJvb2wgZW5hYmxlZCA9IHRydWUpCisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICBEaXNhbGxvd1Njb3BlKCkKICAgICB7Ci0gICAgICAgIG1faXNFbmFibGVk
ID0gZW5hYmxlZDsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkKQotICAgICAgICAgICAgZW50ZXJT
Y29wZSgpOworICAgICAgICBhdXRvIGNvdW50ID0gVDo6c2NvcGVSZWVudHJ5Q291bnQoKTsKKyAg
ICAgICAgVDo6c2V0U2NvcGVSZWVudHJ5Q291bnQoKytjb3VudCk7CiAgICAgfQogCiAgICAgfkRp
c2FsbG93U2NvcGUoKQogICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkKQotICAgICAgICAg
ICAgZXhpdFNjb3BlKCk7CisgICAgICAgIGF1dG8gY291bnQgPSBUOjpzY29wZVJlZW50cnlDb3Vu
dCgpOworICAgICAgICBBU1NFUlQoY291bnQpOworICAgICAgICBUOjpzZXRTY29wZVJlZW50cnlD
b3VudCgtLWNvdW50KTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0luRWZmZWN0T25DdXJy
ZW50VGhyZWFkKCkKQEAgLTYzLDM0ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAh
IVQ6OnNjb3BlUmVlbnRyeUNvdW50KCk7CiAgICAgfQogCi0gICAgdm9pZCBlbmFibGUoKQotICAg
IHsKLSAgICAgICAgbV9pc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICBlbnRlclNjb3BlKCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBkaXNhYmxlKCkKLSAgICB7Ci0gICAgICAgIG1faXNFbmFibGVkID0g
ZmFsc2U7Ci0gICAgICAgIGV4aXRTY29wZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lk
IGVudGVyU2NvcGUoKQotICAgIHsKLSAgICAgICAgYXV0byBjb3VudCA9IFQ6OnNjb3BlUmVlbnRy
eUNvdW50KCk7Ci0gICAgICAgIFQ6OnNldFNjb3BlUmVlbnRyeUNvdW50KCsrY291bnQpOwotICAg
IH0KLQotICAgIHZvaWQgZXhpdFNjb3BlKCkKLSAgICB7Ci0gICAgICAgIGF1dG8gY291bnQgPSBU
OjpzY29wZVJlZW50cnlDb3VudCgpOwotICAgICAgICBBU1NFUlQoY291bnQpOwotICAgICAgICBU
OjpzZXRTY29wZVJlZW50cnlDb3VudCgtLWNvdW50KTsKLSAgICB9Ci0KLSAgICBib29sIG1faXNF
bmFibGVkOwotI2VuZGlmIC8vIE5ERUJVRworI2Vsc2UgLy8gbm90IEFTU0VSVF9FTkFCTEVECisg
ICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1Njb3BlKCkgeyB9IC8vIFdlIG5lZWQgdGhpcyB0byBw
bGFjYXRlIENsYW5nIGR1ZSB0byB1bnVzZWQgd2FybmluZ3MuCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc0luRWZmZWN0T25DdXJyZW50VGhyZWFkKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAko
cmV2aXNpb24gMjY0NjQzKQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNh
bGxvd1ZNUmVlbnRyeS5oOjI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Rpc2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkRpc2FsbG93U2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIERpc2FsbG93Vk1SZWVudHJ5IDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dW
TVJlZW50cnk+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7
CisgICAgdHlwZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOworcHVi
bGljOgorI2lmZGVmIE5ERUJVRworCisgICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRy
eShib29sID0gZmFsc2UpIHsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZSgpIHsgfQorCisjZWxzZSAvLyBub3QgTkRFQlVHCisKKyAgICBEaXNhbGxvd1ZNUmVlbnRy
eShib29sIGVuYWJsZWQgPSB0cnVlKQorICAgICAgICA6IEJhc2UoZW5hYmxlZCkKKyAgICB7IH0K
KworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQorICAgIHsKKyAgICAgICAgc19zY29wZVJl
ZW50cnlDb3VudC5jb25zdHJ1Y3QoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHVu
c2lnbmVkIHNjb3BlUmVlbnRyeUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiAqc19zY29w
ZVJlZW50cnlDb3VudC5nZXQoKTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQgc2V0U2NvcGVSZWVu
dHJ5Q291bnQodW5zaWduZWQgdmFsdWUpCisgICAgeworICAgICAgICAqc19zY29wZVJlZW50cnlD
b3VudC5nZXQoKSA9IHZhbHVlOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVH
Q1RocmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7CisKKyNlbmRpZiAvLyBOREVCVUcK
KworICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlzYWxsb3dWTUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlzYWxsb3dWTUVudHJ5LmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDQ3ICsyNSwzNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRpc2FsbG93U2NvcGUu
aCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KLQogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIERpc2FsbG93Vk1SZWVudHJ5
IDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50cnk+IHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7Ci0gICAgdHlwZWRlZiBEaXNhbGxvd1Nj
b3BlPERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOwotcHVibGljOgotI2lmZGVmIE5ERUJVRwotCi0g
ICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRyeShib29sID0gZmFsc2UpIHsgfQotICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsgfQotCi0jZWxzZSAvLyBu
b3QgTkRFQlVHCitjbGFzcyBWTTsKIAotICAgIERpc2FsbG93Vk1SZWVudHJ5KGJvb2wgZW5hYmxl
ZCA9IHRydWUpCi0gICAgICAgIDogQmFzZShlbmFibGVkKQotICAgIHsgfQotCi0gICAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZSgpCisvLyBUaGUgb25seSByZWFzb24gd2UgaW1wbGVtZW50IERpc2Fs
bG93Vk1FbnRyeSBhcyBzcGVjaWFsaXphdGlvbiBvZiBhIHRlbXBsYXRlCisvLyBpcyBzbyB0aGF0
IHdlIGNhbiB3b3JrIGFyb3VuZCBoYXZpbmcgdG8gI2luY2x1ZGUgVk0uaCwgd2hpY2ggY2FuIGh1
cnQgYnVpbGQKKy8vIHRpbWUuIFRoaXMgZGVmZXJzIHRoZSBjb3N0IG9mICNpbmNsdWRlJ2luZyBW
TS5oIHRvIG9ubHkgdGhlIGNsaWVudHMgdGhhdAorLy8gbmVlZCBpdC4KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVk1UeXBlID0gVk0+CitjbGFzcyBEaXNhbGxvd1ZNRW50cnlJbXBsIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNRW50cnlJbXBsKTsKK3B1YmxpYzoKKyAgICBEaXNh
bGxvd1ZNRW50cnlJbXBsKFZNVHlwZSYgdm0pCisgICAgICAgIDogbV92bSgmdm0pCiAgICAgewot
ICAgICAgICBzX3Njb3BlUmVlbnRyeUNvdW50LmNvbnN0cnVjdCgpOworICAgICAgICBtX3ZtLT5k
aXNhbGxvd1ZNRW50cnlDb3VudCsrOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBzdGF0aWMgdW5z
aWduZWQgc2NvcGVSZWVudHJ5Q291bnQoKQorICAgIH5EaXNhbGxvd1ZNRW50cnlJbXBsKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAqc19zY29wZVJlZW50cnlDb3VudC5nZXQoKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQpOworICAgICAgICBtX3Zt
LT5kaXNhbGxvd1ZNRW50cnlDb3VudC0tOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKICAgICB9
Ci0gICAgc3RhdGljIHZvaWQgc2V0U2NvcGVSZWVudHJ5Q291bnQodW5zaWduZWQgdmFsdWUpCi0g
ICAgewotICAgICAgICAqc19zY29wZVJlZW50cnlDb3VudC5nZXQoKSA9IHZhbHVlOwotICAgIH0K
LQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFk
U3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IHNfc2NvcGVSZWVu
dHJ5Q291bnQ7CiAKLSNlbmRpZiAvLyBOREVCVUcKLQotICAgIGZyaWVuZCBjbGFzcyBEaXNhbGxv
d1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKK3ByaXZhdGU6CisgICAgVk1UeXBlKiBtX3ZtOwog
fTsKIAordXNpbmcgRGlzYWxsb3dWTUVudHJ5ID0gRGlzYWxsb3dWTUVudHJ5SW1wbDxWTT47CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGlzYWxsb3dWTVJlZW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCShub25leGlz
dGVudCkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLSAgICAK
LSNpZm5kZWYgTkRFQlVHCi1MYXp5TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWdu
ZWQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4+IERpc2FsbG93Vk1SZWVudHJ5OjpzX3Njb3Bl
UmVlbnRyeUNvdW50OwotI2VuZGlmCi0gICAgCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuaAko
cmV2aXNpb24gMjY0NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxs
b3dWTVJlZW50cnkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1
ZGUgIkRpc2FsbG93U2NvcGUuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNz
IERpc2FsbG93Vk1SZWVudHJ5IDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dWTVJlZW50
cnk+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNUmVlbnRyeSk7Ci0gICAg
dHlwZWRlZiBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PiBCYXNlOwotcHVibGljOgot
I2lmZGVmIE5ERUJVRwotCi0gICAgQUxXQVlTX0lOTElORSBEaXNhbGxvd1ZNUmVlbnRyeShib29s
ID0gZmFsc2UpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgp
IHsgfQotCi0jZWxzZSAvLyBub3QgTkRFQlVHCi0KLSAgICBEaXNhbGxvd1ZNUmVlbnRyeShib29s
IGVuYWJsZWQgPSB0cnVlKQotICAgICAgICA6IEJhc2UoZW5hYmxlZCkKLSAgICB7IH0KLQotICAg
IHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKQotICAgIHsKLSAgICAgICAgc19zY29wZVJlZW50cnlD
b3VudC5jb25zdHJ1Y3QoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIHVuc2lnbmVk
IHNjb3BlUmVlbnRyeUNvdW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAqc19zY29wZVJlZW50
cnlDb3VudC5nZXQoKTsKLSAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0U2NvcGVSZWVudHJ5Q291
bnQodW5zaWduZWQgdmFsdWUpCi0gICAgewotICAgICAgICAqc19zY29wZVJlZW50cnlDb3VudC5n
ZXQoKSA9IHZhbHVlOwotICAgIH0KLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8dW5zaWduZWQsIFdURjo6Q2FuQmVHQ1RocmVh
ZDo6VHJ1ZT4+IHNfc2NvcGVSZWVudHJ5Q291bnQ7Ci0KLSNlbmRpZiAvLyBOREVCVUcKLQotICAg
IGZyaWVuZCBjbGFzcyBEaXNhbGxvd1Njb3BlPERpc2FsbG93Vk1SZWVudHJ5PjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDI2NDY0MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogCi0jaW5jbHVkZSAiRGlzYWxsb3dWTVJlZW50cnku
aCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSlNDQ29uZmln
LmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCkBAIC03OCwxMCArNzcsOCBAQCB2b2lkIGluaXRp
YWxpemUoKQogICAgICAgICAgICAgZW5hYmxlU2lnaWxsQ3Jhc2hBbmFseXplcigpOwogCiAgICAg
ICAgIExMSW50Ojppbml0aWFsaXplKCk7Ci0jaWZuZGVmIE5ERUJVRwogICAgICAgICBEaXNhbGxv
d0dDOjppbml0aWFsaXplKCk7Ci0gICAgICAgIERpc2FsbG93Vk1SZWVudHJ5Ojppbml0aWFsaXpl
KCk7Ci0jZW5kaWYKKwogICAgICAgICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7CiAgICAgICAg
IFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIHRocmVhZC5zZXRT
YXZlZExhc3RTdGFja1RvcCh0aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjY0NjQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0
ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTk2LDggKzk2LDcgQEAgSlNBcnJheSog
SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogCiAgICAgSlNBcnJheSogcmVzdWx0ID0g
Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgZGVmZXJyYWxDb250ZXh0LCBzdHJ1Y3R1cmUsIGJ1dHRl
cmZseSk7CiAKLSAgICBjb25zdCBib29sIGNyZWF0ZVVuaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAg
IHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQsIGNyZWF0ZVVuaW5pdGlhbGl6ZWQpOworICAg
IHNjb3BlLm5vdGlmeUFsbG9jYXRlZChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdEluaXRpYWxpemF0aW9uU2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ2NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lm
bmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAorCiBPYmplY3RJbml0aWFsaXphdGlvblNj
b3BlOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKICAgICA6IG1fdm0odm0pCi0g
ICAgLCBtX2Rpc2FsbG93R0MoZmFsc2UpCi0gICAgLCBtX2Rpc2FsbG93Vk1SZWVudHJ5KGZhbHNl
KQogewogfQogCkBAIC01MCwyMSArNDksMjAgQEAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6
fk9iamVjdEluaXRpYQogICAgIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChtX29iamVj
dCk7CiB9CiAKLXZvaWQgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZTo6bm90aWZ5QWxsb2NhdGVk
KEpTT2JqZWN0KiBvYmplY3QsIGJvb2wgd2FzQ3JlYXRlZFVuaW5pdGlhbGl6ZWQpCit2b2lkIE9i
amVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUFsbG9jYXRlZChKU09iamVjdCogb2JqZWN0
KQogewotICAgIGlmICh3YXNDcmVhdGVkVW5pbml0aWFsaXplZCkgewotICAgICAgICBtX2Rpc2Fs
bG93R0MuZW5hYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnkuZW5hYmxlKCk7Ci0g
ICAgICAgIG1fb2JqZWN0ID0gb2JqZWN0OwotICAgIH0gZWxzZQotICAgICAgICB2ZXJpZnlQcm9w
ZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKKyAgICBBU1NFUlQoIW1fZGlzYWxsb3dHQyk7
CisgICAgQVNTRVJUKCFtX2Rpc2FsbG93Vk1FbnRyeSk7CisgICAgbV9kaXNhbGxvd0dDLmVtcGxh
Y2UoKTsKKyAgICBtX2Rpc2FsbG93Vk1FbnRyeS5lbXBsYWNlKG1fdm0pOworICAgIG1fb2JqZWN0
ID0gb2JqZWN0OwogfQogCiB2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUlu
aXRpYWxpemVkKEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAg
ICAgIG1fZGlzYWxsb3dHQy5kaXNhYmxlKCk7Ci0gICAgICAgIG1fZGlzYWxsb3dWTVJlZW50cnku
ZGlzYWJsZSgpOworICAgICAgICBtX2Rpc2FsbG93R0MucmVzZXQoKTsKKyAgICAgICAgbV9kaXNh
bGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgbV9vYmplY3QgPSBudWxscHRyOwogICAgIH0K
ICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKQEAgLTExNCw2ICsx
MTIsNyBAQCB2b2lkIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6OnZlcmlmeVByCiAgICAgICAg
IH0KICAgICB9CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAkocmV2aXNpb24gMjY0NjQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29w
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNTQgKzI2LDU1IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkRlZmVyR0MuaCIKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgorI2lu
Y2x1ZGUgIkRpc2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBWTTsKIGNsYXNzIEpTT2Jq
ZWN0OwogCi0jaWZkZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIAogY2xhc3MgT2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZSB7CiBwdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSBPYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlKFZNJiB2bSkKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgIHsgfQot
ICAgIEFMV0FZU19JTkxJTkUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKQotICAgIHsKLSAg
ICAgICAgbV92bS5oZWFwLm11dGF0b3JGZW5jZSgpOwotICAgIH0KKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKIAotICAgIEFMV0FZU19JTkxJTkUgVk0m
IHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3Rp
ZnlBbGxvY2F0ZWQoSlNPYmplY3QqLCBib29sKSB7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBWTSYgdm0oKSBjb25zdCB7IHJl
dHVybiBtX3ZtOyB9CisgICAgdm9pZCBub3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKTsKKyAgICB2
b2lkIG5vdGlmeUluaXRpYWxpemVkKEpTT2JqZWN0Kik7CiAKIHByaXZhdGU6CisgICAgdm9pZCB2
ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKKwogICAgIFZNJiBtX3Zt
OworICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlzYWxsb3dHQzsKKyAgICBPcHRpb25hbDxE
aXNhbGxvd1ZNRW50cnk+IG1fZGlzYWxsb3dWTUVudHJ5OworICAgIEpTT2JqZWN0KiBtX29iamVj
dCB7IG51bGxwdHIgfTsKIH07CiAKLSNlbHNlIC8vIG5vdCBOREVCVUcKKyNlbHNlIC8vIG5vdCBB
U1NFUlRfRU5BQkxFRAogCiBjbGFzcyBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHsKIHB1Ymxp
YzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlKFZNJik7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgfk9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoKTsKKyAg
ICBBTFdBWVNfSU5MSU5FIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUoVk0mIHZtKQorICAgICAg
ICA6IG1fdm0odm0pCisgICAgeyB9CisgICAgQUxXQVlTX0lOTElORSB+T2JqZWN0SW5pdGlhbGl6
YXRpb25TY29wZSgpCisgICAgeworICAgICAgICBtX3ZtLmhlYXAubXV0YXRvckZlbmNlKCk7Cisg
ICAgfQogCi0gICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIHZvaWQgbm90
aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KiwgYm9vbCB3YXNDcmVhdGVkVW5pbml0aWFsaXplZCk7Ci0g
ICAgdm9pZCBub3RpZnlJbml0aWFsaXplZChKU09iamVjdCopOworICAgIEFMV0FZU19JTkxJTkUg
Vk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBu
b3RpZnlBbGxvY2F0ZWQoSlNPYmplY3QqKSB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90
aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKSB7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHZlcmlm
eVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChKU09iamVjdCopOwotCiAgICAgVk0mIG1fdm07Ci0g
ICAgRGlzYWxsb3dHQyBtX2Rpc2FsbG93R0M7Ci0gICAgRGlzYWxsb3dWTVJlZW50cnkgbV9kaXNh
bGxvd1ZNUmVlbnRyeTsKLSAgICBKU09iamVjdCogbV9vYmplY3QgeyBudWxscHRyIH07CiB9Owog
Ci0jZW5kaWYgLy8gTkRFQlVHCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgJKHJldmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgY29uc3RleHBy
IGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYoVW5zaWduZWQsIHNvZnRSZXNl
cnZlZFpvbmVTaXplLCAxMjggKiBLQiwgTm9ybWFsLCAiQSBidWZmZXIgZ3JlYXRlciB0aGFuIHJl
c2VydmVkWm9uZVNpemUgdGhhdCByZXNlcnZlcyBzcGFjZSBmb3Igc3RyaW5naWZ5aW5nIGV4Y2Vw
dGlvbnMuIikgXAogICAgIHYoVW5zaWduZWQsIHJlc2VydmVkWm9uZVNpemUsIDY0ICogS0IsIE5v
cm1hbCwgIlRoZSBhbW91bnQgb2Ygc3RhY2sgc3BhY2Ugd2UgZ3VhcmFudGVlIHRvIG91ciBjbGll
bnRzIChhbmQgdG8gaW50ZXJhbCBWTSBjb2RlIHRoYXQgZG9lcyBub3QgY2FsbCBvdXQgdG8gY2xp
ZW50cykuIikgXAogICAgIFwKKyAgICB2KEJvb2wsIGNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSwg
QVNTRVJUX0VOQUJMRUQsIE5vcm1hbCwgIkZvcmNlcyBhIGNyYXNoIGlmIHdlIGF0dGVtcHQgdG8g
ZW50ZXIgdGhlIFZNIHdoZW4gZGlzYWxsb3dlZCIpIFwKICAgICB2KEJvb2wsIGNyYXNoSWZDYW50
QWxsb2NhdGVKSVRNZW1vcnksIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2ln
bmVkLCBqaXRNZW1vcnlSZXNlcnZhdGlvblNpemUsIDAsIE5vcm1hbCwgIlNldCB0aGlzIG51bWJl
ciB0byBjaGFuZ2UgdGhlIGV4ZWN1dGFibGUgYWxsb2NhdGlvbiBzaXplIGluIEV4ZWN1dGFibGVB
bGxvY2F0b3JGaXhlZFZNUG9vbC4gKEluIGJ5dGVzLikiKSBcCiAgICAgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJl
dmlzaW9uIDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw3IEBAIEFMV0FZU19JTkxJ
TkUgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWEKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpT
QXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIGRlZmVycmFsQ29udGV4dCwgc3RydWN0dXJl
LCBidXR0ZXJmbHkpOwogCi0gICAgY29uc3QgYm9vbCBjcmVhdGVVbmluaXRpYWxpemVkID0gdHJ1
ZTsKLSAgICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0LCBjcmVhdGVVbmluaXRpYWxpemVk
KTsKKyAgICBzY29wZS5ub3RpZnlBbGxvY2F0ZWQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDY0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgiCiAjaW5j
bHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0
LmgiCisjaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRXZl
bnRMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCIKQEAgLTk1Miw2ICs5NTMsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNDaGVja3BvaW50T1NSU2lkZVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9j
aGVja3BvaW50U2lkZVN0YXRlLnNpemUoKTsgfQogICAgIHZvaWQgc2NhblNpZGVTdGF0ZShDb25z
ZXJ2YXRpdmVSb290cyYpIGNvbnN0OwogCisgICAgdW5zaWduZWQgZGlzYWxsb3dWTUVudHJ5Q291
bnQgeyAwIH07CiAgICAgVk1FbnRyeVNjb3BlKiBlbnRyeVNjb3BlOwogCiAgICAgSlNPYmplY3Qq
IHN0cmluZ1JlY3Vyc2lvbkNoZWNrRmlyc3RPYmplY3QgeyBudWxscHRyIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9u
IDI2NDY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKLSNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRy
eS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgi
CiAjaW5jbHVkZSAiVk0uaCIKQEAgLTM5LDcgKzM4LDYgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5
U2NvcGUoVk0mIHZtLCBKU0dsbwogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdCkKIHsKLSAgICBBU1NFUlQoIURpc2FsbG93Vk1SZWVudHJ5Ojppc0luRWZm
ZWN0T25DdXJyZW50VGhyZWFkKCkpOwogICAgIGlmICghdm0uZW50cnlTY29wZSkgewogICAgICAg
ICB2bS5lbnRyeVNjb3BlID0gdGhpczsKIAo=
</data>
<flag name="review"
          id="420286"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>