<?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>148167</bug_id>
          
          <creation_ts>2015-08-18 23:18:37 -0700</creation_ts>
          <short_desc>jsc-tailcall: Unify Register Offset classes</short_desc>
          <delta_ts>2015-09-14 10:59:58 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>148666</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>basile_clement</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1118852</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-18 23:18:37 -0700</bug_when>
    <thetext>I earlier added a RegisterSaveMap class to handle offsets of registers for callee save processing.  The FTL already had a RegisterAtOffset class along with an UnwindInfo class that had a vector of RegisterAtOffset entries.  These class should be merged to have just one &quot;register X is at offset y&quot; construct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118855</commentid>
    <comment_count>1</comment_count>
      <attachid>259362</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-18 23:30:07 -0700</bug_when>
    <thetext>Created attachment 259362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118920</commentid>
    <comment_count>2</comment_count>
      <attachid>259362</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-19 10:44:50 -0700</bug_when>
    <thetext>Comment on attachment 259362
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGOSREntry.cpp:265
&gt; +    unsigned registerCount = registerSaveLocations-&gt;size();
&gt; +    for (unsigned i = 0; i &lt; registerCount; i++) {
&gt; +        RegisterAtOffset currentEntry = registerSaveLocations-&gt;at(i);

Nit: we could (define and) use an iterator wrapping over the underlying WTF::Vector::iterator here and in other places.

&gt; Source/JavaScriptCore/ftl/FTLUnwindInfo.h:38
&gt; +class UnwindInfo : public RegisterAtOffsetList {

It looks like this class doesn&apos;t really need to be a class anymore. Why not have a RegisterAtOffsetList parseUnwindInfo(void*, size_t, GeneratedFunction) helper instead (maybe returning a std::pair&lt;bool, RegisterAtOffsetList&gt; or std::unique_ptr&lt;RegisterAtOffsetList&gt; instead)?

&gt; Source/JavaScriptCore/jit/RegisterAtOffset.h:53
&gt; +    int offsetAsIndex() const { return offset() / sizeof(void*); }

You never use this.

&gt; Source/JavaScriptCore/jit/RegisterAtOffsetList.cpp:39
&gt; +    m_registers = Vector&lt;RegisterAtOffset&gt;(other.m_registers);

I believe you can just say m_registers = other.m_registers.

&gt; Source/JavaScriptCore/jit/RegisterAtOffsetList.h:41
&gt; +    RegisterAtOffsetList(const RegisterAtOffsetList&amp;);

Why can&apos;t we use the compiler-generated default?

&gt; Source/JavaScriptCore/jit/RegisterAtOffsetList.h:43
&gt; +    ~RegisterAtOffsetList();

Ditto.

&gt; Source/JavaScriptCore/jit/RegisterAtOffsetList.h:57
&gt; +    RegisterAtOffset&amp; at(size_t index)

I think you should either implement operator[] or call m_registers.at(index) - even though they are effectively the same function - for the sake of consistency.

&gt; Source/JavaScriptCore/jit/RegisterSet.cpp:244
&gt; +    // LLVM might save and use all ARM64 callee saves specified in the ABI.

What about floating point callee-save registers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118975</commentid>
    <comment_count>3</comment_count>
      <attachid>259391</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-19 13:13:42 -0700</bug_when>
    <thetext>Created attachment 259391
Updated patch

(In reply to comment #2)
&gt; Comment on attachment 259362 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259362&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGOSREntry.cpp:265
&gt; &gt; +    unsigned registerCount = registerSaveLocations-&gt;size();
&gt; &gt; +    for (unsigned i = 0; i &lt; registerCount; i++) {
&gt; &gt; +        RegisterAtOffset currentEntry = registerSaveLocations-&gt;at(i);
&gt; 
&gt; Nit: we could (define and) use an iterator wrapping over the underlying
&gt; WTF::Vector::iterator here and in other places.

I was just following the existing usages.

&gt; &gt; Source/JavaScriptCore/ftl/FTLUnwindInfo.h:38
&gt; &gt; +class UnwindInfo : public RegisterAtOffsetList {
&gt; 
&gt; It looks like this class doesn&apos;t really need to be a class anymore. Why not
&gt; have a RegisterAtOffsetList parseUnwindInfo(void*, size_t,
&gt; GeneratedFunction) helper instead (maybe returning a std::pair&lt;bool,
&gt; RegisterAtOffsetList&gt; or std::unique_ptr&lt;RegisterAtOffsetList&gt; instead)?

I made it a stand alone function.  It sets the CodeBlock&apos;s RegisterAtOffsetList directly.  Eliminated UnwindInfo and changed all references to use the callee saves stored in the CodeBlock.

&gt; &gt; Source/JavaScriptCore/jit/RegisterAtOffset.h:53
&gt; &gt; +    int offsetAsIndex() const { return offset() / sizeof(void*); }
&gt; 
&gt; You never use this.

I put it in there, but did the conversion to index explicitly elsewhere.  I&apos;m now using it.

&gt; &gt; Source/JavaScriptCore/jit/RegisterAtOffsetList.cpp:39
&gt; &gt; +    m_registers = Vector&lt;RegisterAtOffset&gt;(other.m_registers);
&gt; 
&gt; I believe you can just say m_registers = other.m_registers.

Fixed.

&gt; &gt; Source/JavaScriptCore/jit/RegisterAtOffsetList.h:41
&gt; &gt; +    RegisterAtOffsetList(const RegisterAtOffsetList&amp;);
&gt; 
&gt; Why can&apos;t we use the compiler-generated default?

Done.

&gt; &gt; Source/JavaScriptCore/jit/RegisterAtOffsetList.h:43
&gt; &gt; +    ~RegisterAtOffsetList();
&gt; 
&gt; Ditto.

Removed.

&gt; &gt; Source/JavaScriptCore/jit/RegisterAtOffsetList.h:57
&gt; &gt; +    RegisterAtOffset&amp; at(size_t index)
&gt; 
&gt; I think you should either implement operator[] or call m_registers.at(index)
&gt; - even though they are effectively the same function - for the sake of
&gt; consistency.

Changed to call m_registers.at(index).

&gt; &gt; Source/JavaScriptCore/jit/RegisterSet.cpp:244
&gt; &gt; +    // LLVM might save and use all ARM64 callee saves specified in the ABI.
&gt; 
&gt; What about floating point callee-save registers?

Register set doesn&apos;t have FP callee saves for any platform.  Therefore I didn&apos;t add the ones for ARM64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119015</commentid>
    <comment_count>4</comment_count>
      <attachid>259391</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-19 14:10:22 -0700</bug_when>
    <thetext>Comment on attachment 259391
Updated patch

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

&gt; Source/JavaScriptCore/dfg/DFGOSREntry.cpp:266
&gt; +        if (RegisterSet::stackRegisters().get(currentEntry.reg()))

If we cache registerSaveLocations-&gt;size(), we should cache RegisterSet::stackRegisters() as well.

&gt; Source/JavaScriptCore/ftl/FTLUnwindInfo.cpp:660
&gt;      RELEASE_ASSERT(!!section);
&gt;      if (!section)
&gt;          return false;

This if (!section) will never be reached and should be removed while we&apos;re here. I also don&apos;t like the name &quot;parseUnwindInfo&quot; if it also has the responsibility to set the CodeBlock&apos;s calleeSaveRegisters. What about either:
  - rename it to parseAndSetUnwindInfo (or something similar)
  - since it looks like this unreachable if is the only case where we return a non-true value, return a RegisterAtOffsetList (or std::unique_ptr&lt;RegisterAtOffsetList&gt;) instead and call CodeBlock::setCalleeSaveRegisters at the call site

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:247
&gt; +            if (RegisterSet::stackRegisters().get(entry.reg()))

If we cache allCalleeSaves-&gt;size() we should cache RegisterSet::stackRegisters() as well.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:272
&gt; +            if (RegisterSet::stackRegisters().get(vmEntry.reg()))

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119033</commentid>
    <comment_count>5</comment_count>
      <attachid>259408</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-19 14:51:59 -0700</bug_when>
    <thetext>Created attachment 259408
Patch with more updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119053</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-19 15:26:37 -0700</bug_when>
    <thetext>Committed r188654: &lt;http://trac.webkit.org/changeset/188654&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122410</commentid>
    <comment_count>7</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 18:09:56 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 148666 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125649</commentid>
    <comment_count>8</comment_count>
      <attachid>259408</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-09-14 10:59:58 -0700</bug_when>
    <thetext>Comment on attachment 259408
Patch with more updates

Cleared review? from attachment 259408 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259362</attachid>
            <date>2015-08-18 23:30:07 -0700</date>
            <delta_ts>2015-08-19 14:51:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>148167.patch</filename>
            <type>text/plain</type>
            <size>94566</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NjMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBA
CisyMDE1LTA4LTE4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIGpzYy10YWlsY2FsbDogVW5pZnkgUmVnaXN0ZXIgT2Zmc2V0IGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpcyBwcmltYXJpbHkg
YSByZWZhY3RvcmluZyBjaGFuZ2UuCisKKyAgICAgICAgTW92ZWQgZnRsL0ZUTFJlZ2lzdGVyQXRP
ZmZzZXQue2NwcCxofSB0byBqaXQvUmVnaXN0ZXJBdE9mZnNldC57Y3BwLGh9LgorICAgICAgICBG
YWN0b3JlZCBvdXQgdGhlIHZlY3RvciBvZiBSZWdpc3RlckF0T2Zmc2V0cyBpbiBmdGwvRlRMVW53
aW5kSW5mby57Y3BwLGh9IGludG8gYSBuZXcKKyAgICAgICAgY2xhc3MgaW4gaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LntjcHAsaH0uCisgICAgICAgIEFkZGVkIGEgbGl0dGxlIG1vcmUgZnVuY3Rp
b25hbGl0eSB0byBSZWdpc3RlckF0T2Zmc2V0TGlzdCB0byB1c2UgaXQgaW5zdGVhZCBvZiBSZWdp
c3RlclNhdmVNYXAgYW5kCisgICAgICAgIHJlcGxhY2VkIGFsbCBvY2N1cmFuY2VzIG9mIFJlZ2lz
dGVyU2F2ZU1hcC4KKyAgICAgICAgRWxpbWluYXRlZCBqaXQvUmVnaXN0ZXJTYXZlTWFwLntjcHAs
aH0uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMp
OgorICAgICAgICAoSlNDOjpyb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVy
T2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyk6Cisg
ICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJl
T1NSRW50cnkpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjptbUFsbG9jYXRlRGF0YVNlY3Rpb24pOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBm
dGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZnRsL0ZUTFJl
Z2lzdGVyQXRPZmZzZXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmdGwvRlRMVW53aW5kSW5mby5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6VW53aW5kSW5mbzo6cGFyc2UpOgorICAgICAgICAoSlND
OjpGVEw6OlVud2luZEluZm86OmR1bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6OlVu
d2luZEluZm86OmZpbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6OlVud2luZEluZm86
OmluZGV4T2YpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExVbndpbmRJbmZvLmg6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpVbndpbmRG
dW5jdG9yOjpjb3B5Q2FsbGVlU2F2ZXNUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIpOgorICAgICAgICAq
IGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0U2F2ZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
Ojpjb3B5Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9WTUNhbGxlZVNhdmVzQnVmZmVy
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNGcm9tRnJh
bWVUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9SZWdpc3Rl
ckF0T2Zmc2V0LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExS
ZWdpc3RlckF0T2Zmc2V0LmNwcC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6ZHVt
cCk6CisgICAgICAgIChKU0M6OkZUTDo6UmVnaXN0ZXJBdE9mZnNldDo6ZHVtcCk6IERlbGV0ZWQu
CisgICAgICAgICogaml0L1JlZ2lzdGVyQXRPZmZzZXQuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmguCisgICAgICAgIChKU0M6OlJl
Z2lzdGVyQXRPZmZzZXQ6OnJlZyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXQ6Om9m
ZnNldCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXQ6Om9mZnNldEFzSW5kZXgpOgor
ICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpSZWdpc3RlckF0T2Zmc2V0OjpyZWcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpG
VEw6OlJlZ2lzdGVyQXRPZmZzZXQ6Om9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZU
TDo6UmVnaXN0ZXJBdE9mZnNldDo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgICogaml0
L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlJlZ2lzdGVy
QXRPZmZzZXRMaXN0OjpSZWdpc3RlckF0T2Zmc2V0TGlzdCk6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyQXRPZmZzZXRMaXN0Ojp+UmVnaXN0ZXJBdE9mZnNldExpc3QpOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlckF0T2Zmc2V0TGlzdDo6c29ydCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0OjpkdW1wKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmZpbmQp
OgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6aW5kZXhPZik6CisgICAgICAg
ICogaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpSZWdp
c3RlckF0T2Zmc2V0TGlzdDo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0
TGlzdDo6c2l6ZSk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjphdCk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjphcHBlbmQpOgorICAgICAgICAqIGpp
dC9SZWdpc3RlclNhdmVNYXAuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGppdC9SZWdpc3RlclNh
dmVNYXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6OlJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6OmFsbFZNQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJl
Z2lzdGVyU2V0OjphbGxHUFJzKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpnZXRDVElTdHViKToKKyAgICAgICAgKEpT
Qzo6Vk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMpOgorICAgICAgICAoSlNDOjpW
TTo6Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCk6IERlbGV0ZWQuCisKIDIwMTUtMDgtMTcg
IE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAganNjLXRhaWxj
YWxsOiBTdG9wIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFsbCBjYWxsZWUgc2F2ZXMgb24gdm1FbnRy
eSAvIGV4aXQgZm9yIHBsYXRmb3JtcyB3aXRoIHBlciBmdW5jdGlvbiBjYWxsZWUgc2F2ZXMgaGFu
ZGxpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4
ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMzY4LDggKzM2OCw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
aml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAogICAgIGppdC9Qb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKICAgICBqaXQvUmVnLmNwcAorICAgIGppdC9SZWdp
c3RlckF0T2Zmc2V0LmNwcAorICAgIGppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAKICAgICBq
aXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcAotICAgIGppdC9SZWdp
c3RlclNhdmVNYXAuY3BwCiAgICAgaml0L1JlZ2lzdGVyU2V0LmNwcAogICAgIGppdC9SZXBhdGNo
LmNwcAogICAgIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCkBAIC04ODcsNyArODg4
LDYgQEAgaWYgKEVOQUJMRV9GVExfSklUKQogICAgICAgICBmdGwvRlRMT3BlcmF0aW9ucy5jcHAK
ICAgICAgICAgZnRsL0ZUTE91dHB1dC5jcHAKICAgICAgICAgZnRsL0ZUTFJlY292ZXJ5T3Bjb2Rl
LmNwcAotICAgICAgICBmdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAKICAgICAgICAgZnRsL0ZU
TFNhdmVSZXN0b3JlLmNwcAogICAgICAgICBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAogICAgICAg
ICBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC01MzIsNyArNTMyLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0
bFxGVExPcGVyYXRpb25zLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxG
VExPdXRwdXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZnRsXEZUTFJlY292
ZXJ5T3Bjb2RlLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExSZWdp
c3RlckF0T2Zmc2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExT
YXZlUmVzdG9yZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxmdGxcRlRMU2xv
d1BhdGhDYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExTbG93
UGF0aENhbGxLZXkuY3BwIiAvPgpAQCAtNjM0LDggKzYzMyw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxqaXRcU2V0dXBWYXJhcmdzRnJhbWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caml0XFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWcuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3Bw
IiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyU2F2ZU1hcC5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJTZXQuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlcGF0Y2guY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caml0XFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAiIC8+CkBA
IC0xMjQ5LDcgKzEyNDksNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTE9w
ZXJhdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPdXRwdXQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExSZWNvdmVyeU9wY29kZS5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTFJlZ2lzdGVyQXRPZmZzZXQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExTYXZlUmVzdG9yZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTFNsb3dQYXRoQ2FsbC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTFNsb3dQYXRoQ2FsbEtleS5oIiAvPgpA
QCAtMTM5OSw4ICsxMzk4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxTZXR1
cFZhcmFyZ3NGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxq
aXRcUmVnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9m
ZnNldC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxqaXRcUmVnaXN0ZXJTYXZlTWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxq
aXRcUmVnaXN0ZXJTZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZXBh
dGNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw4ICszODEsNiBAQAog
CQkwRjZCMUNCQTE4NjEyNDRDMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNCODE4
NjEyNDRDMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2QjFDQkQxODYxMjQ2QTAw
ODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNCQjE4NjEyNDZB
MDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCAqLzsg
fTsKIAkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3Jh
cHBlckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2QjFDQkMxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3Jh
cHBlckdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTBGNkIxQ0MzMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIx
Q0JGMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCAqLzsgfTsKLQkJ
MEY2QjFDQzQxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0MwMTg2MkM0Nzgw
MDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZU
TFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2QjFDQzExODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwICovOyB9
OwogCQkwRjZCMUNDNjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzIxODYyQzQ3ODAw
ODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVX
cml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2QzczNEUxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0
YWlsLmNwcCAqLzsgfTsKQEAgLTk3NCw4ICs5NzIsOCBAQAogCQk2NTExMjMwNzE0MDQ2QjBBMDAy
QjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAg
Ki87IH07CiAJCTY1MTRGMjE5MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTRGMjE3MThCM0UxNjcw
MDk4RkY4QiAvKiBCeXRlY29kZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2NTMwM0Q2NDE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTMwM0Q2
MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjUzRDUwOEExQjVEOUY5QzAwREQ0QkNEIC8q
IFJlZ2lzdGVyU2F2ZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjVBRDlCMTkxQjVEOUI3NTAwOTg1NTZEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1M0Q1MDhC
MUI1REMyOTAwMERENEJDRCAvKiBSZWdpc3RlclNhdmVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBRDlCMTgxQjVEOUI3NTAwOTg1NTZEIC8q
IFJlZ2lzdGVyU2F2ZU1hcC5jcHAgKi87IH07CisJCTY1NDBDN0EwMUI4MkUxQzMwMDBGNkI3OSAv
KiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NDBDNzlFMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0
LmNwcCAqLzsgfTsKKwkJNjU0MEM3QTExQjgyRTFDMzAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1NDBDNzlDMUI4MkQ5OUQwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgKi87
IH07CiAJCTY1NDZGNTIxMUEzMkIzMTMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0NkY1MUYx
QTMyQTU5QzAwNkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAgKi87IH07CiAJCTY1NTI1
RkM1MUE2REQ4MDEwMDdCNTQ5NSAvKiBOdWxsU2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MjVGQzMxQTZERDNCMzAwN0I1
NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5jcHAgKi87IH07CiAJCTY1NTNBMzMxMTdBMUYxRUUw
MDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTNBMzJGMTdBMUYxRUUwMDhDRjZGMyAv
KiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCAqLzsgfTsKQEAgLTIxMjUsOCArMjEyMyw2
IEBACiAJCTBGNkIxQ0I4MTg2MTI0NEMwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJQcmVzZXJ2YXRp
b25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkIxQ0JCMTg2MTI0NkEw
MDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFw
cGVyR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQkMx
ODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlclByZXNlcnZhdGlvbldy
YXBwZXJHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQkYx
ODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHA7IHBhdGggPSBm
dGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFJlZ2lzdGVyQXRPZmZzZXQuaDsgcGF0aCA9
IGZ0bC9GVExSZWdpc3RlckF0T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNkIxQ0MxMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFVud2luZEluZm8uY3BwOyBwYXRoID0gZnRs
L0ZUTFVud2luZEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUND
MjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBGVExVbndpbmRJbmZvLmg7IHBhdGggPSBmdGwvRlRMVW53aW5kSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZDNzM0RTFBQzlGOTlGMDBCRTE2ODIg
LyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjY5OCw2ICsyNjk0LDEwIEBACiAJCTY1MkEzQTIzMTY1MUM2OTcwMEE4
MEFGRSAvKiBBNjRET3Bjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEE2
NERPcGNvZGUuaDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MzAzRDYzMTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJz
ZXJUb2tlbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyVG9rZW5z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDAwQzEwMEE2OUJBRjIwMDUwOTg4
NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHJvcGVydHlOYW1lQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0
MEM3OUMxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0MEM3OUQxQjgyRDk5RDAwMEY2Qjc5IC8q
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1
NDBDNzlFMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lzdGVyQXRPZmZzZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2NTQwQzc5RjFCODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0
ZXJBdE9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlckF0
T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDZGNTFGMUEzMkE1OUMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IE51bGxHZXR0ZXJGdW5jdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9
IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk2NTQ2RjUyMDFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdl
dHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE51bGxHZXR0
ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTUyNUZDMzFBNkRE
M0IzMDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE51bGxTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNzE2LDggKzI3MTYsNiBAQAogCQk2NThEM0E1NTE5NjM4MjY4MDAz
QzQ1RDYgLyogVk1FbnRyeVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVF
bmRpbmcgPSAwOyBwYXRoID0gVk1FbnRyeVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsg
fTsKIAkJNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbklu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGF0
aW9uSW5mby5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5ODdGMkYxNjgyOEE3RTAwM0MyRjhEIC8qIFVudXNl
ZFBvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW51c2VkUG9pbnRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NUFEOUIxODFCNUQ5Qjc1MDA5ODU1
NkQgLyogUmVnaXN0ZXJTYXZlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlZ2lzdGVyU2F2ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTY1QUQ5QjE5MUI1RDlCNzUwMDk4NTU2RCAvKiBSZWdpc3RlclNhdmVNYXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJTYXZlTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1QzAyODRGMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2Vt
Ymxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBUk12N0Rpc2Fz
c2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvQVJNdjdEaXNhc3NlbWJsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUMwMjg1QTE3MTc5NjY4MDAzNTFFMzUgLyog
QVJNdjdET3Bjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFS
TXY3RE9wY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QzAyODVCMTcx
Nzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVJNdjdET3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
Nzc3LDggKzM3NzUsNiBAQAogCQkJCTBGRUEwQTA2MTcwNTEzREIwMEJCNzIyQyAvKiBGVExPdXRw
dXQuaCAqLywKIAkJCQkwRjQ4NTMyNTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNv
ZGUuY3BwICovLAogCQkJCTBGNDg1MzI2MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9w
Y29kZS5oICovLAotCQkJCTBGNkIxQ0JGMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0
T2Zmc2V0LmNwcCAqLywKLQkJCQkwRjZCMUNDMDE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0
ZXJBdE9mZnNldC5oICovLAogCQkJCTBGQ0VGQUE5MTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZl
UmVzdG9yZS5jcHAgKi8sCiAJCQkJMEZDRUZBQUExODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVS
ZXN0b3JlLmggKi8sCiAJCQkJMEYyNUYxQUExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRo
Q2FsbC5jcHAgKi8sCkBAIC0zOTYxLDIyICszOTU3LDI0IEBACiAJCQkJMEZDNzEyRTExN0NEODc4
RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJ
CQkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmllci5oICovLAogCQkJ
CUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oICovLAotCQkJCTBG
RUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5jcHAgKi8sCi0JCQkJ
MEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggKi8sCiAJCQkJ
MEZFODM0MTUxQTZFRjk3QjAwRDA0ODQ3IC8qIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cCAqLywKIAkJCQkwRkU4MzQxNjFBNkVGOTdCMDBEMDQ4NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuaCAqLywKIAkJCQkwRkE3QThFOTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCAq
LywKIAkJCQkwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggKi8sCisJCQkJNjU0MEM3
OUUxQjgyRDlDRTAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXQuY3BwICovLAorCQkJCTY1NDBD
NzlGMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmggKi8sCisJCQkJNjU0MEM3
OUMxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCAqLywKKwkJCQk2
NTQwQzc5RDFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuaCAqLywKIAkJ
CQkwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmNwcCAqLywKIAkJCQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0
ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8sCi0JCQkJNjVBRDlCMTgxQjVEOUI3
NTAwOTg1NTZEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5jcHAgKi8sCi0JCQkJNjVBRDlCMTkxQjVEOUI3
NTAwOTg1NTZEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5oICovLAogCQkJCTBGQzMxNDE0MTgxNDZENzAw
MDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgKi8sCiAJCQkJMEZDMzE0MTAxODE0NTU5MTAwMDMz
MjMyIC8qIFJlZ2lzdGVyU2V0LmggKi8sCiAJCQkJMEYyNEU1NDkxN0VFMjc0OTAwQUJCMjE3IC8q
IFJlcGF0Y2guY3BwICovLAogCQkJCTBGMjRFNTRBMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNo
LmggKi8sCiAJCQkJMEZBN0E4RUQxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvci5jcHAgKi8sCiAJCQkJMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5oICovLAorCQkJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBT
ZXR1cFZhcmFyZ3NGcmFtZS5jcHAgKi8sCisJCQkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8q
IFNldHVwVmFyYXJnc0ZyYW1lLmggKi8sCiAJCQkJQTcwOUYyRUYxN0EwQUMwNDAwNTEyRTk4IC8q
IFNsb3dQYXRoQ2FsbC5oICovLAogCQkJCUE3Mzg2NTUxMTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVj
aWFsaXplZFRodW5rSklULmggKi8sCiAJCQkJQTdGRjY0N0ExOEM1MkU4NTAwQjU1MzA3IC8qIFNw
aWxsUmVnaXN0ZXJzTW9kZS5oICovLApAQCAtNTYzMSw3ICs1NjI5LDYgQEAKIAkJCQk1MjY3OEY5
MTFBMDQxNzdDMDA2QTMwNkQgLyogQ29udHJvbEZsb3dQcm9maWxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTI2NzhGOEYxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMEUxOUY2REY4MTAwOThGNUVDIC8qIEluc3BlY3RvckFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNjUzRDUwOEEx
QjVEOUY5QzAwREQ0QkNEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVFQTcwRUMxOUY1QjNFQTAwOThGNUVDIC8qIGdlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2Vu
ZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUM0RjRCNkYzMUEwNUM5
NDQwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAog
CQkJCUE1RUY5QjE1MUExRDQzRkEwMDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCkBAIC01OTk2LDcgKzU5OTMs
NiBAQAogCQkJCTBGRUEwQTExMTcwNTEzREIwMEJCNzIyQyAvKiBGVExPdXRwdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlP
cGNvZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNkIxQ0M0MTg2MkM0NzgwMDg0NUQ5NyAvKiBG
VExSZWdpc3RlckF0T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFBQzE4MDRDMTNF
MDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUIy
MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzAxMSw3ICs3MDA3LDYgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJ
CTY1M0Q1MDhCMUI1REMyOTAwMERENEJDRCAvKiBSZWdpc3RlclNhdmVNYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOUVBNUM3QTIxOTBGMDg4NzAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFj
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVCRSAvKiBCdW5k
bGVQYXRoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJCMzEwRkYxOTc1QjQyNDAwODA4NTdDIC8q
IFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzI2Niw3ICs3MjYxLDYg
QEAKIAkJCQkwRjIzNUJERjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTJBMTcwOTYyOTYwMEJCNzIyQyAvKiBGVExPdXRw
dXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0ODUzMjkxODdERkRFQzAwODNCNjg3IC8qIEZU
TFJlY292ZXJ5T3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGNkIxQ0MzMTg2MkM0Nzgw
MDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
Q0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0
aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTMwLDYgKzc1MjQsOCBAQAogCQkJCTBG
M0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTdBOEVCMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjU0MEM3QTExQjgyRTFDMzAwMEY2Qjc5IC8qIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1NDBDN0EwMUI4MkUxQzMw
MDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Mjgw
ODQxMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3
MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgogCiAjaWYgRU5BQkxFKEpJVCkKLSNpbmNsdWRl
ICJSZWdpc3RlclNhdmVNYXAuaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTMzMDMsOSArMzMwMywxNCBAQCB1bnNp
Z25lZCBDb2RlQmxvY2s6OnJlb3B0aW1pemF0aW9uUmV0cnlDCiAjaWYgRU5BQkxFKEpJVCkKIHZv
aWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNh
dmVSZWdpc3RlcnMpCiB7Ci0gICAgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZWdpc3RlclNhdmVNYXA+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOworICAgIG1fY2FsbGVl
U2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KGNh
bGxlZVNhdmVSZWdpc3RlcnMpOwogfQogCit2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJl
Z2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KQoreworICAgIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IFdURjo6bW92ZShyZWdp
c3RlckF0T2Zmc2V0TGlzdCk7Cit9CisgICAgCiBzdGF0aWMgc2l6ZV90IHJvdW5kQ2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKHNpemVfdCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjcHVSZWdpc3RlclNpemUgPSBzaXplb2Yodm9pZCop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2
aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci1jbGFzcyBSZWdp
c3RlclNhdmVNYXA7CitjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFJlcGF0Y2hC
dWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRpb247CiAKQEAgLTgyNCw4ICs4MjQsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplRnJvbUxvb3BOb3coKTsKIAogICAgIHZvaWQgc2V0
Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7CisgICAgdm9pZCBzZXRDYWxsZWVTYXZl
UmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOwogICAgIAot
ICAgIFJlZ2lzdGVyU2F2ZU1hcCogY2FsbGVlU2F2ZVJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoKTsgfQorICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWVTYXZlUmVnaXN0
ZXJzLmdldCgpOyB9CiAjZWxzZSAvLyBObyBKSVQKICAgICBzdGF0aWMgdW5zaWduZWQgbnVtYmVy
T2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpIHsgcmV0dXJuIDA7IH0KICAgICBz
dGF0aWMgc2l6ZV90IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKSB7IHJldHVybiAwOyB9OwpAQCAtMTAyNSw3ICsxMDI2LDcgQEAgcHJpdmF0ZToKICAgICBT
ZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2Rl
PExMSW50Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAgICAgUmVmUHRyPEpJ
VENvZGU+IG1faml0Q29kZTsKICNpZiBFTkFCTEUoSklUKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWdpc3RlclNhdmVNYXA+IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKICAgICBCYWc8
U3RydWN0dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOwogICAgIFZlY3RvcjxCeVZhbEluZm8+IG1f
YnlWYWxJbmZvczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMTg4
NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1NiwxNCArMjU2LDE5IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVj
U3RhdGUqIGV4ZWMsIEMKICAgICAgICAgcGl2b3RbaV0gPSBKU1ZhbHVlKCk7CiAgICAgfQogCi0g
ICAgUmVnaXN0ZXJTYXZlTWFwKiByZWdpc3RlclNhdmVMb2NhdGlvbnMgPSBjb2RlQmxvY2stPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICB1bnNpZ25lZCBudW1iZXJSZWdpc3RlcnNUb1NhdmUg
PSByZWdpc3RlclNhdmVMb2NhdGlvbnMtPnNpemUoKTsKLSAgICBmb3IgKFJlZyByZWcgPSBSZWc6
OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgewotICAgICAg
ICBpZiAocmVnaXN0ZXJTYXZlTG9jYXRpb25zLT5oYXMocmVnKSAmJiByZWcuaXNHUFIoKSkKLSAg
ICAgICAgICAgICooYml0d2lzZV9jYXN0PGludHB0cl90Kj4ocGl2b3QpICsgbnVtYmVyUmVnaXN0
ZXJzVG9TYXZlIC0gcmVnaXN0ZXJTYXZlTG9jYXRpb25zLT5nZXRJbmRleEZvcihyZWcpIC0gMSkg
PSB2bS0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlclt2bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lz
dGVyc01hcCgpLT5nZXRJbmRleEZvcihyZWcpXTsKKyAgICAvLyA2KSBDb3B5IG91ciBjYWxsZWUg
c2F2ZXMgdG8gYnVmZmVyLgorICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiByZWdpc3RlclNhdmVM
b2NhdGlvbnMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSB2bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0cygpOworCisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IHJlZ2lzdGVyU2F2
ZUxvY2F0aW9ucy0+c2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3Rl
ckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBjdXJyZW50RW50cnkgPSBy
ZWdpc3RlclNhdmVMb2NhdGlvbnMtPmF0KGkpOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiB2
bUNhbGxlZVNhdmVzRW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+ZmluZChjdXJyZW50RW50cnkucmVn
KCkpOworICAgICAgICAKKyAgICAgICAgKihiaXR3aXNlX2Nhc3Q8aW50cHRyX3QqPihwaXZvdCAt
IDEpIC0gKGN1cnJlbnRFbnRyeS5vZmZzZXQoKSAvIHNpemVvZih2b2lkKikpKSA9IHZtLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW3ZtQ2FsbGVlU2F2ZXNFbnRyeS0+b2Zmc2V0KCkgLyBzaXpl
b2Yodm9pZCopXTsKICAgICB9CiAgICAgCi0gICAgLy8gNikgRml4IHRoZSBjYWxsIGZyYW1lIHRv
IGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCisgICAgLy8gNykgRml4IHRoZSBjYWxsIGZyYW1l
IHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCiAgICAgCiAgICAgKmJpdHdpc2VfY2FzdDxD
b2RlQmxvY2sqKj4ocGl2b3QgLSAxIC0gSlNTdGFjazo6Q29kZUJsb2NrKSA9IGNvZGVCbG9jazsK
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2
aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODE2LDYgKzgxNiw4IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYg
c3RhdGUsIFNhZmVwb2ludDo6UmUKICAgICBib29sIGRpZFNlZVVud2luZEluZm8gPSBzdGF0ZS5q
aXRDb2RlLT51bndpbmRJbmZvLnBhcnNlKAogICAgICAgICBzdGF0ZS51bndpbmREYXRhU2VjdGlv
biwgc3RhdGUudW53aW5kRGF0YVNlY3Rpb25TaXplLAogICAgICAgICBzdGF0ZS5nZW5lcmF0ZWRG
dW5jdGlvbik7CisgICAgaWYgKGRpZFNlZVVud2luZEluZm8pCisgICAgICAgIHN0YXRlLmdyYXBo
Lm1fY29kZUJsb2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6bWFrZV91bmlxdWU8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLmppdENvZGUtPnVud2luZEluZm8pKTsKICAgICBpZiAo
c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpIHsKICAgICAgICAgZGF0YUxvZygiVW53aW5kIGluZm8g
Zm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBKSVRD
b2RlOjpGVExKSVQpLCAiOlxuIik7CiAgICAgICAgIGlmIChkaWRTZWVVbndpbmRJbmZvKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGlj
IHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAgIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoCiAg
ICAgICAgICAgICBleGl0Lm1fdmFsdWVzLnNpemUoKSArIG51bU1hdGVyaWFsaXphdGlvbnMgKyBt
YXhNYXRlcmlhbGl6YXRpb25OdW1Bcmd1bWVudHMpICsKICAgICAgICAgcmVxdWlyZWRTY3JhdGNo
TWVtb3J5U2l6ZUluQnl0ZXMoKSArCi0gICAgICAgIGppdENvZGUtPnVud2luZEluZm8ubV9yZWdp
c3RlcnMuc2l6ZSgpICogc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgIGppdENvZGUtPnVud2lu
ZEluZm8uc2l6ZSgpICogc2l6ZW9mKHVpbnQ2NF90KSk7CiAgICAgRW5jb2RlZEpTVmFsdWUqIHNj
cmF0Y2ggPSBzY3JhdGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3Jh
dGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogMDsKICAgICBFbmNvZGVkSlNWYWx1ZSogbWF0ZXJp
YWxpemF0aW9uUG9pbnRlcnMgPSBzY3JhdGNoICsgZXhpdC5tX3ZhbHVlcy5zaXplKCk7CiAgICAg
RW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cyA9IG1hdGVyaWFsaXphdGlv
blBvaW50ZXJzICsgbnVtTWF0ZXJpYWxpemF0aW9uczsKQEAgLTMwNSw4ICszMDUsOCBAQCBzdGF0
aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAKICAgICAvLyBCZWZvcmUgd2Ugc3RhcnQgbWVzc2lu
ZyB3aXRoIHRoZSBmcmFtZSwgd2UgbmVlZCB0byBzZXQgYXNpZGUgYW55IHJlZ2lzdGVycyB0aGF0
IHRoZQogICAgIC8vIEZUTCBjb2RlIHdhcyBwcmVzZXJ2aW5nLgotICAgIGZvciAodW5zaWduZWQg
aSA9IGppdENvZGUtPnVud2luZEluZm8ubV9yZWdpc3RlcnMuc2l6ZSgpOyBpLS07KSB7Ci0gICAg
ICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBqaXRDb2RlLT51bndpbmRJbmZvLm1fcmVnaXN0
ZXJzW2ldOworICAgIGZvciAodW5zaWduZWQgaSA9IGppdENvZGUtPnVud2luZEluZm8uc2l6ZSgp
OyBpLS07KSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBqaXRDb2RlLT51bndp
bmRJbmZvLmF0KGkpOwogICAgICAgICBqaXQubG9hZDY0KAogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBlbnRy
eS5vZmZzZXQoKSksCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAJKHJldmlz
aW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9m
ZnNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRlRMUmVnaXN0ZXJBdE9mZnNldC5oIgotCi0jaWYgRU5BQkxFKEZUTF9KSVQp
Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKLQotdm9pZCBSZWdpc3RlckF0T2Zm
c2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KHJlZygp
LCAiIGF0ICIsIG9mZnNldCgpKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpZm5kZWYgRlRMUmVnaXN0ZXJBdE9mZnNldF9oCi0jZGVmaW5lIEZU
TFJlZ2lzdGVyQXRPZmZzZXRfaAotCi0jaWYgRU5BQkxFKEZUTF9KSVQpCi0KLSNpbmNsdWRlICJS
ZWcuaCIKLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBGVEwgewotCi1jbGFzcyBSZWdpc3RlckF0T2Zmc2V0IHsKLXB1YmxpYzoKLSAgICBS
ZWdpc3RlckF0T2Zmc2V0KCkKLSAgICAgICAgOiBtX29mZnNldCgwKQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgUmVnaXN0ZXJBdE9mZnNldChSZWcgcmVnLCBwdHJkaWZmX3Qgb2Zmc2V0KQotICAg
ICAgICA6IG1fcmVnKHJlZykKLSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgewotICAg
IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3JlZzsgfQot
ICAgIAotICAgIFJlZyByZWcoKSBjb25zdCB7IHJldHVybiBtX3JlZzsgfQotICAgIHB0cmRpZmZf
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQotICAgIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiByZWcoKSA9PSBvdGhlci5yZWcoKSAmJiBvZmZzZXQoKSA9PSBvdGhlci5vZmZz
ZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVnaXN0ZXJBdE9m
ZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAocmVnKCkgIT0gb3RoZXIucmVn
KCkpCi0gICAgICAgICAgICByZXR1cm4gcmVnKCkgPCBvdGhlci5yZWcoKTsKLSAgICAgICAgcmV0
dXJuIG9mZnNldCgpIDwgb3RoZXIub2Zmc2V0KCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBS
ZWcgZ2V0UmVnKFJlZ2lzdGVyQXRPZmZzZXQqIHZhbHVlKSB7IHJldHVybiB2YWx1ZS0+cmVnKCk7
IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgUmVnIG1fcmVnOwotICAgIHB0cmRpZmZfdCBtX29mZnNldDsKLX07Ci0KLX0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpGVEwKLQotI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQotCi0jZW5k
aWYgLy8gRlRMUmVnaXN0ZXJBdE9mZnNldF9oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVW53aW5kSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExVbndpbmRJbmZvLmNwcAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExVbndpbmRJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU2
LDcgKzY1Niw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlRkRFSW5zdHJ1Y3Rpb25zKGNvbnN0IEYKIAog
Ym9vbCBVbndpbmRJbmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaXplX3Qgc2l6ZSwgR2VuZXJh
dGVkRnVuY3Rpb24gZ2VuZXJhdGVkRnVuY3Rpb24pCiB7Ci0gICAgbV9yZWdpc3RlcnMuY2xlYXIo
KTsKKyAgICBjbGVhcigpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEhc2VjdGlvbik7CiAgICAgaWYg
KCFzZWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02ODksMjcgKzY4OSwyNyBAQCBi
b29sIFVud2luZEluZm86OnBhcnNlKHZvaWQqIHNlY3Rpb24sIHNpCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVOV0lORF9YODZfNjRfUkVHX1JCWDoKLSAg
ICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVy
czo6ZWJ4LCBvZmZzZXQpKTsKKyAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4
NlJlZ2lzdGVyczo6ZWJ4LCBvZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUjEyOgotICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTIsIG9mZnNl
dCkpOworICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpy
MTIsIG9mZnNldCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBVTldJTkRfWDg2XzY0X1JFR19SMTM6Ci0gICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxMywgb2Zmc2V0KSk7CisgICAgICAg
ICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxMywgb2Zmc2V0KSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVOV0lORF9Y
ODZfNjRfUkVHX1IxNDoKLSAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE0LCBvZmZzZXQpKTsKKyAgICAgICAgICAgIGFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE0LCBvZmZzZXQpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUjE1
OgotICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVn
aXN0ZXJzOjpyMTUsIG9mZnNldCkpOworICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoWDg2UmVnaXN0ZXJzOjpyMTUsIG9mZnNldCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBVTldJTkRfWDg2XzY0X1JFR19SQlA6Ci0gICAgICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OmVicCwg
b2Zmc2V0KSk7CisgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3Rl
cnM6OmVicCwgb2Zmc2V0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICBkZWZhdWx0OgpAQCAtNzIxLDQ0ICs3MjEsNDQgQEAgYm9vbCBVbndpbmRJbmZvOjpwYXJz
ZSh2b2lkKiBzZWN0aW9uLCBzaQogI2VsaWYgQ1BVKEFSTTY0KQogICAgIFJFTEVBU0VfQVNTRVJU
KChlbmNvZGluZyAmIFVOV0lORF9BUk02NF9NT0RFX01BU0spID09IFVOV0lORF9BUk02NF9NT0RF
X0ZSQU1FKTsKICAgICAKLSAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6ZnAsIDApKTsKKyAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6ZnAsIDApKTsKICAgICAKICAgICBpbnQzMl90IG9mZnNldCA9IDA7CiAgICAg
aWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX1gxOV9YMjBfUEFJUikgewotICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE5
LCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6eDIwLCBvZmZzZXQgLT0gOCkpOworICAgICAgICBhcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE5LCBvZmZzZXQgLT0gOCkpOworICAg
ICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIwLCBvZmZzZXQg
LT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfWDIx
X1gyMl9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjIsIG9mZnNldCAtPSA4
KSk7CisgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEs
IG9mZnNldCAtPSA4KSk7CisgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4MjIsIG9mZnNldCAtPSA4KSk7CiAgICAgfQogICAgIGlmIChlbmNvZGluZyAmIFVO
V0lORF9BUk02NF9GUkFNRV9YMjNfWDI0X1BBSVIpIHsKLSAgICAgICAgbV9yZWdpc3RlcnMuYXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMywgb2Zmc2V0IC09IDgpKTsK
LSAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OngyNCwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OngyMywgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNCwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAg
ICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX1gyNV9YMjZfUEFJUikgewotICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDI1LCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI2LCBvZmZzZXQgLT0gOCkpOworICAgICAgICBhcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI1LCBvZmZzZXQgLT0gOCkpOwor
ICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI2LCBvZmZz
ZXQgLT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVf
WDI3X1gyOF9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0
ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjgsIG9mZnNldCAt
PSA4KSk7CisgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4
MjcsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4MjgsIG9mZnNldCAtPSA4KSk7CiAgICAgfQogICAgIGlmIChlbmNvZGluZyAm
IFVOV0lORF9BUk02NF9GUkFNRV9EOF9EOV9QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOCwgb2Zmc2V0IC09IDgpKTsK
LSAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnE5LCBvZmZzZXQgLT0gOCkpOworICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6cTgsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIGFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAg
aWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX0QxMF9EMTFfUEFJUikgewotICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEw
LCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTExLCBvZmZzZXQgLT0gOCkpOworICAgICAgICBhcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEwLCBvZmZzZXQgLT0gOCkpOworICAg
ICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTExLCBvZmZzZXQg
LT0gOCkpOwogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfRDEy
X0QxM19QQUlSKSB7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMTIsIG9mZnNldCAtPSA4KSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTMsIG9mZnNldCAtPSA4
KSk7CisgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTIs
IG9mZnNldCAtPSA4KSk7CisgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjpxMTMsIG9mZnNldCAtPSA4KSk7CiAgICAgfQogICAgIGlmIChlbmNvZGluZyAmIFVO
V0lORF9BUk02NF9GUkFNRV9EMTRfRDE1X1BBSVIpIHsKLSAgICAgICAgbV9yZWdpc3RlcnMuYXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNCwgb2Zmc2V0IC09IDgpKTsK
LSAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnExNSwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OnExNCwgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAgYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNSwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAj
ZWxzZQogI2Vycm9yICJVbnJlY29nbml6ZWQgYXJjaGl0ZWN0dXJlIgpAQCAtNzgyLDIyICs3ODIs
MjIgQEAgYm9vbCBVbndpbmRJbmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaQogICAgICAgICBp
ZiAocHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLnNhdmVkKSB7CiAgICAgICAgICAgICBzd2l0Y2gg
KGkpIHsKICAgICAgICAgICAgIGNhc2UgVU5XX1g4Nl82NF9yYng6Ci0gICAgICAgICAgICAgICAg
bV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYngsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6
OmVieCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldf
WDg2XzY0X3IxMjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChYODZSZWdpc3RlcnM6OnIxMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNl
dCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19YODZfNjRfcjEzOgotICAgICAgICAgICAgICAg
IG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjEzLCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJz
OjpyMTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5X
X1g4Nl82NF9yMTQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfWDg2XzY0X3IxNToKLSAgICAgICAgICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxNSwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVy
czo6cjE1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19YODZfNjRfcmJwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6ZWJwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYnAsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRFdfWDg2XzY0X1JFVF9hZGRyOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtODE2LDE5NiArODE2LDE5NiBAQCBib29sIFVud2luZEluZm86OnBh
cnNlKHZvaWQqIHNlY3Rpb24sIHNpCiAgICAgICAgIGlmIChwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0uc2F2ZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAoaSkgewogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfeDA6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngwLCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MToKLSAgICAgICAgICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDEs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6eDEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VU5XX0FSTTY0X3gyOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MiwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDM6Ci0gICAgICAgICAgICAg
ICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ongz
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OngzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJl
Z2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVOV19BUk02NF94NDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDQsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3g1OgotICAgICAgICAgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4
NSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4NSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFS
ZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBVTldfQVJNNjRfeDY6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong2LCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94NzoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgVU5XX0FSTTY0X3g4OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4OCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4OCwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDk6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
Ong5LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6Ong5LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFVOV19BUk02NF94MTA6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAg
IGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTAsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxMToKLSAgICAg
ICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6eDExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJl
Z2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OngxMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVTldfQVJNNjRfeDEyOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTIsIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDEyLCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MTM6
Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OngxMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxNDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE0LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ongx
NCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJN
NjRfeDE1OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MTY6Ci0gICAgICAgICAgICAgICAg
bV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNiwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjp4MTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VU5XX0FSTTY0X3gxNzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNywgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDE4OgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4MTgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6eDE4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF94MTk6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxOSwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTksIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyMDoKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDIwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OngyMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDIxOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIxLCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94
MjI6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OngyMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyMzoKLSAgICAgICAgICAgICAgICBtX3Jl
Z2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIzLCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OngyMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldf
QVJNNjRfeDI0OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI0LCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjU6Ci0gICAgICAgICAgICAg
ICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ongy
NSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4MjUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgVU5XX0FSTTY0X3gyNjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAg
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNiwgcHJvbG9nLnNhdmVk
UmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDI3OgotICAgICAg
ICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjp4MjcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6eDI3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJv
bG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFVOV19BUk02NF94Mjg6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyOCwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAg
ICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjgsIHByb2xv
Zy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X2ZwOgot
ICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpmcCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpmcCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDMwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MzAsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDMwLCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF9z
cDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6c3AsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9s
b2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6c3AsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0
ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMCwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMCwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
djE6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OnExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJv
bG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3YzOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdp
c3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE0LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE0
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02
NF92NToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3Y2OgotICAgICAgICAgICAgICAgIG1fcmVn
aXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxNiwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpx
NiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJN
NjRfdjc6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OnE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92ODoKLSAgICAgICAgICAgICAgICBtX3Jl
Z2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTgsIHByb2xv
Zy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
cTgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FS
TTY0X3Y5OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjEwOgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTAsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTEwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF92MTE6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTEsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxMjoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
cTEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnExMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVTldfQVJNNjRfdjEzOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEzLCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTQ6Ci0gICAg
ICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OnExNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFS
ZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxNToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE1LCBwcm9sb2cuc2F2ZWRS
ZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNSwgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjE2
OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjpxMTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9s
b2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTc6Ci0gICAgICAgICAgICAgICAgbV9yZWdp
c3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNywgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpx
MTcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FS
TTY0X3YxODoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTE4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExOCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjE5OgotICAgICAgICAgICAgICAg
IG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTks
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6cTE5LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJl
Z2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVOV19BUk02NF92MjA6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjAsIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyMToKLSAgICAgICAg
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTIxLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OnEyMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVTldfQVJNNjRfdjIyOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjIsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIyLCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjM6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnEyMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyNDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI0LCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNCwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
djI1OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMjUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjY6Ci0gICAgICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNiwgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxMjYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5X
X0FSTTY0X3YyNzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNywgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjI4OgotICAgICAgICAgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpx
MjgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6cTI4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFVOV19BUk02NF92Mjk6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAg
IGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjksIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YzMDoKLSAgICAg
ICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6cTMwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJl
Z2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OnEzMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVTldfQVJNNjRfdjMxOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMzEsIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTMxLCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIG5vbi1zdGFuZGFyZCByZWdp
c3RlciBiZWluZyBzYXZlZCBpbiBwcm9sb2cKQEAgLTEwMTcsMjcgKzEwMTcsMTAgQEAgYm9vbCBV
bndpbmRJbmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaQogI2VuZGlmCiAKICNlbmRpZgotICAg
IHN0ZDo6c29ydChtX3JlZ2lzdGVycy5iZWdpbigpLCBtX3JlZ2lzdGVycy5lbmQoKSk7CisgICAg
c29ydCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFVud2luZEluZm86OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQobGlzdER1bXAobV9yZWdpc3Rl
cnMpKTsKLX0KLQotUmVnaXN0ZXJBdE9mZnNldCogVW53aW5kSW5mbzo6ZmluZChSZWcgcmVnKSBj
b25zdAotewotICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8UmVnaXN0ZXJBdE9mZnNldCwgUmVn
PihtX3JlZ2lzdGVycywgbV9yZWdpc3RlcnMuc2l6ZSgpLCByZWcsIFJlZ2lzdGVyQXRPZmZzZXQ6
OmdldFJlZyk7Ci19Ci0KLXVuc2lnbmVkIFVud2luZEluZm86OmluZGV4T2YoUmVnIHJlZykgY29u
c3QKLXsKLSAgICBpZiAoUmVnaXN0ZXJBdE9mZnNldCogcG9pbnRlciA9IGZpbmQocmVnKSkKLSAg
ICAgICAgcmV0dXJuIHBvaW50ZXIgLSBtX3JlZ2lzdGVycy5iZWdpbigpOwotICAgIHJldHVybiBV
SU5UX01BWDsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5B
QkxFKEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZElu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZElu
Zm8uaAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExV
bndpbmRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIyICszMSwxNiBAQAogI2lmIEVOQUJM
RShGVExfSklUKQogCiAjaW5jbHVkZSAiRlRMR2VuZXJhdGVkRnVuY3Rpb24uaCIKLSNpbmNsdWRl
ICJGVExSZWdpc3RlckF0T2Zmc2V0LmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3Qu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi1zdHJ1Y3QgVW53aW5kSW5m
byB7CitjbGFzcyBVbndpbmRJbmZvIDogcHVibGljIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHsKK3B1
YmxpYzoKICAgICBVbndpbmRJbmZvKCk7CiAgICAgflVud2luZEluZm8oKTsKLSAgICAKKwogICAg
IGJvb2wgcGFyc2Uodm9pZCosIHNpemVfdCwgR2VuZXJhdGVkRnVuY3Rpb24pOwotICAgIAotICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIFJlZ2lzdGVyQXRPZmZz
ZXQqIGZpbmQoUmVnKSBjb25zdDsKLSAgICB1bnNpZ25lZCBpbmRleE9mKFJlZykgY29uc3Q7IC8v
IFJldHVybnMgVUlOVF9NQVggaWYgbm90IGZvdW5kLgotICAgIAotICAgIFZlY3RvcjxSZWdpc3Rl
ckF0T2Zmc2V0PiBtX3JlZ2lzdGVyczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU4LDIwICs2NTgsMjEg
QEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHZpc2l0b3ItPmlubGluZUNhbGxGcmFtZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogY3VycmVu
dENhbGxlZVNhdmVzID0gbV9jb2RlQmxvY2sgPyBtX2NvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpIDogbnVsbHB0cjsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGN1cnJlbnRD
YWxsZWVTYXZlcyA9IG1fY29kZUJsb2NrID8gbV9jb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSA6IG51bGxwdHI7CiAKICAgICAgICAgaWYgKCFjdXJyZW50Q2FsbGVlU2F2ZXMpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgVk0mIHZtID0gbV9jYWxsRnJhbWUtPnZtKCk7Ci0g
ICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogYWxsQ2FsbGVlU2F2ZXNNYXAgPSB2bS5nZXRBbGxDYWxs
ZWVTYXZlUmVnaXN0ZXJzTWFwKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVTYXZl
QmFzZSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY29kZUJsb2NrLT5jYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSAtIDEpOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogYWxsQ2FsbGVlU2F2ZXMgPSB2bS5nZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7
CisgICAgICAgIGludHB0cl90KiBmcmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3QqPiht
X2NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpOwogCi0gICAgICAgIGludHB0cl90KiBjYWxsZWVTYXZl
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3QqPihtX2NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkp
ICsgY2FsbGVlU2F2ZUJhc2Uub2Zmc2V0KCk7Ci0KLSAgICAgICAgZm9yIChSZWcgcmVnID0gUmVn
OjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKLSAgICAg
ICAgICAgIGlmIChjdXJyZW50Q2FsbGVlU2F2ZXMtPmhhcyhyZWcpKQotICAgICAgICAgICAgICAg
IHZtLmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJbYWxsQ2FsbGVlU2F2ZXNNYXAtPmdldEluZGV4
Rm9yKHJlZyldID0gY2FsbGVlU2F2ZXNbY3VycmVudENhbGxlZVNhdmVzLT5nZXRJbmRleEZvcihy
ZWcpXTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGN1cnJlbnRDYWxsZWVTYXZl
cy0+c2l6ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGN1cnJlbnRFbnRyeSA9IGN1
cnJlbnRDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiB2
bUNhbGxlZVNhdmVzRW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+ZmluZChjdXJyZW50RW50cnkucmVn
KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2bS5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVm
ZmVyW3ZtQ2FsbGVlU2F2ZXNFbnRyeS0+b2Zmc2V0KCkgLyBzaXplb2Yodm9pZCopXSA9ICooZnJh
bWUgKyAoY3VycmVudEVudHJ5Lm9mZnNldCgpIC8gc2l6ZW9mKHZvaWQqKSkpOwogICAgICAgICB9
CiAjZW5kaWYKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNp
bmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJTYXZlTWFwLmgiCisjaW5jbHVkZSAiUmVn
aXN0ZXJBdE9mZnNldExpc3QuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUg
IlR5cGVvZlR5cGUuaCIKICNpbmNsdWRlICJWTS5oIgpAQCAtMTgwLDE2ICsxODAsMTIgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAKLSAgICAgICAgUmVnaXN0
ZXJTYXZlTWFwKiBjYWxsZWVTYXZlc01hcCA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxv
Y2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3Vu
dCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CiAKLSAgICAgICAgaWYgKCFjYWxsZWVTYXZlc01hcC0+
c2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlVmlydHVhbFJlZ2lzdGVyID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5j
YWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSAtIDEpICsgb2Zmc2V0VmlydHVhbFJl
Z2lzdGVyOwotCi0gICAgICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJl
Zzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoY2FsbGVlU2F2
ZXNNYXAtPmhhcyhyZWcpICYmIHJlZy5pc0dQUigpKQotICAgICAgICAgICAgICAgIHN0b3JlUHRy
KHJlZy5ncHIoKSwgQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgYmFzZVZpcnR1YWxSZWdp
c3Rlci5vZmZzZXRJbkJ5dGVzKCkgKyBjYWxsZWVTYXZlc01hcC0+Z2V0T2Zmc2V0Rm9yKHJlZykp
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykg
eworICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBBZGRyZXNzKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0SW5CeXRlcygpICsg
ZW50cnkub2Zmc2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTk3LDE2ICsxOTMsMTIg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAKLSAgICAgICAg
UmVnaXN0ZXJTYXZlTWFwKiBjYWxsZWVTYXZlc01hcCA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJl
Z2lzdGVycygpOwotCi0gICAgICAgIGlmICghY2FsbGVlU2F2ZXNNYXAtPnNpemUoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZpcnR1YWxSZWdp
c3RlciA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNl
QXNWaXJ0dWFsUmVnaXN0ZXJzKCkgLSAxKTsKLQotICAgICAgICBmb3IgKFJlZyByZWcgPSBSZWc6
OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgewotICAgICAg
ICAgICAgaWYgKGNhbGxlZVNhdmVzTWFwLT5oYXMocmVnKSAmJiByZWcuaXNHUFIoKSkKLSAgICAg
ICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGJhc2VWaXJ0
dWFsUmVnaXN0ZXIub2Zmc2V0SW5CeXRlcygpICsgY2FsbGVlU2F2ZXNNYXAtPmdldE9mZnNldEZv
cihyZWcpKSwgcmVnLmdwcigpKTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxl
ZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIHVuc2ln
bmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgICAgICAKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAg
ICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAg
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgZW50cnkub2Zmc2V0
KCkpLCBlbnRyeS5yZWcoKS5ncHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNiwxMSAr
MjE4LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV92bS0+Y2Fs
bGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlciksIHRlbXAxKTsKIAotICAgICAgICBSZWdpc3RlclNhdmVN
YXAqIGFsbENhbGxlZVNhdmVzTWFwID0gbV92bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01h
cCgpOwotCi0gICAgICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6
bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoYWxsQ2FsbGVlU2F2
ZXNNYXAtPmhhcyhyZWcpICYmIHJlZy5pc0dQUigpKQotICAgICAgICAgICAgICAgIHN0b3JlUHRy
KHJlZy5ncHIoKSwgQWRkcmVzcyh0ZW1wMSwgYWxsQ2FsbGVlU2F2ZXNNYXAtPmdldE9mZnNldEZv
cihyZWcpKSk7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9
IG1fdm0tPmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICAgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisgICAgICAgIAorICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAg
ICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOwor
ICAgICAgICAgICAgc3RvcmVQdHIoZW50cnkucmVnKCkuZ3ByKCksIEFkZHJlc3ModGVtcDEsIGVu
dHJ5Lm9mZnNldCgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI0MCw0NiArMjMzLDE1IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzQnVmZmVyKSwgdGVtcDEpOwogCi0gICAgICAgIFJlZ2lzdGVyU2F2ZU1h
cCogYWxsQ2FsbGVlU2F2ZXNNYXAgPSBtX3ZtLT5nZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJzTWFw
KCk7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IG1fdm0t
PmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICAgICAgdW5zaWduZWQgcmVn
aXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CiAgICAgICAgIAotICAgICAgICBm
b3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVn
Lm5leHQoKSkgewotICAgICAgICAgICAgaWYgKGFsbENhbGxlZVNhdmVzTWFwLT5oYXMocmVnKSAm
JiByZWcuaXNHUFIoKSkKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3ModGVtcDEsIGFs
bENhbGxlZVNhdmVzTWFwLT5nZXRPZmZzZXRGb3IocmVnKSksIHJlZy5ncHIoKSk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAg
ICAgICAgICBsb2FkUHRyKEFkZHJlc3ModGVtcDEsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVn
KCkuZ3ByKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY29weUNhbGxlZVNh
dmVzRnJvbUZyYW1lVG9WTUNhbGxlZVNhdmVzQnVmZmVyKGNvbnN0IFRlbXBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycyA9IHsgUmVnaXN0ZXJTZXQ6Om5vblRlbXBSZWdpc3RlcnMoKSB9KQotICAg
IHsKLSAgICAgICAgR1BSUmVnIHRlbXAxID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDApOwot
ICAgICAgICBHUFJSZWcgdGVtcDIgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMSk7Ci0gICAg
ICAgIEFTU0VSVCh0ZW1wMiAhPSBJbnZhbGlkR1BSUmVnKTsKLQotICAgICAgICBBU1NFUlQoY29k
ZUJsb2NrKCkpOwotCi0gICAgICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sg
b3IgdW5zYXZlZCBjYWxsZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZl
cgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV92bS0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1
ZmZlciksIHRlbXAxKTsKLQotICAgICAgICBSZWdpc3RlclNhdmVNYXAqIGFsbENhbGxlZVNhdmVz
TWFwID0gbV92bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCgpOwotICAgICAgICBSZWdp
c3RlclNhdmVNYXAqIGN1cnJlbnRDYWxsZWVTYXZlcyA9IGNvZGVCbG9jaygpLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVTYXZlQmFzZSA9IHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoKSAtIDEpOwotCi0gICAgICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3Qo
KTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7Ci0gICAgICAgICAgICBH
UFJSZWcgcmVnVG9TdG9yZTsKLQotICAgICAgICAgICAgaWYgKGFsbENhbGxlZVNhdmVzTWFwLT5o
YXMocmVnKSAmJiByZWcuaXNHUFIoKSkgewotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2Fs
bGVlU2F2ZXMtPmhhcyhyZWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIExvYWQgY2FsbGVl
U2F2ZSBmcm9tIHN0YWNrIGludG8gdGVtcCByZWdpc3RlcgotICAgICAgICAgICAgICAgICAgICBy
ZWdUb1N0b3JlID0gdGVtcDI7Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhm
cmFtZVBvaW50ZXJSZWdpc3RlciwgIGNhbGxlZVNhdmVCYXNlLm9mZnNldEluQnl0ZXMoKSArIGN1
cnJlbnRDYWxsZWVTYXZlcy0+Z2V0T2Zmc2V0Rm9yKHJlZykpLCByZWdUb1N0b3JlKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCBzdG9yZSBjYWxs
ZWUgc2F2ZSBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnLmdw
cigpOwotCi0gICAgICAgICAgICAgICAgc3RvcmVQdHIocmVnVG9TdG9yZSwgQWRkcmVzcyh0ZW1w
MSwgYWxsQ2FsbGVlU2F2ZXNNYXAtPmdldE9mZnNldEZvcihyZWcpKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc0Zyb21GcmFtZU9y
UmVnaXN0ZXJUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIoY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzID0geyBSZWdpc3RlclNldDo6bm9uVGVtcFJlZ2lzdGVycygpIH0pCiAgICAgewog
ICAgICAgICBHUFJSZWcgdGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMCk7CkBAIC0y
OTEsMjQgKzI1MywyNSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2
ZXMgb24gc3RhY2sgb3IgdW5zYXZlZCBjYWxsZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxs
ZWVTYXZlIGJ1ZmZlcgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV92bS0+Y2FsbGVlU2F2
ZVJlZ2lzdGVyc0J1ZmZlciksIHRlbXAxKTsKIAotICAgICAgICBSZWdpc3RlclNhdmVNYXAqIGFs
bENhbGxlZVNhdmVzTWFwID0gbV92bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCgpOwot
ICAgICAgICBSZWdpc3RlclNhdmVNYXAqIGN1cnJlbnRDYWxsZWVTYXZlcyA9IGNvZGVCbG9jaygp
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVT
YXZlQmFzZSA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jaygpLT5jYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSAtIDEpOwotCi0gICAgICAgIGZvciAoUmVnIHJlZyA9
IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7Cisg
ICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IG1fdm0tPmdldEFs
bENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExp
c3QqIGN1cnJlbnRDYWxsZWVTYXZlcyA9IGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlUmVnaXN0ZXJz
KCk7CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6
ZSgpOworICAgICAgICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVy
Q291bnQ7IGkrKykgewogICAgICAgICAgICAgR1BSUmVnIHJlZ1RvU3RvcmU7Ci0KLSAgICAgICAg
ICAgIGlmIChhbGxDYWxsZWVTYXZlc01hcC0+aGFzKHJlZykgJiYgcmVnLmlzR1BSKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoY3VycmVudENhbGxlZVNhdmVzLT5oYXMocmVnKSkgewotICAgICAg
ICAgICAgICAgICAgICAvLyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVn
aXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAyOwotICAgICAgICAg
ICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsICBjYWxsZWVT
YXZlQmFzZS5vZmZzZXRJbkJ5dGVzKCkgKyBjdXJyZW50Q2FsbGVlU2F2ZXMtPmdldE9mZnNldEZv
cihyZWcpKSwgcmVnVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAgICAgICAg
ICAgICAgICAgcmVnVG9TdG9yZSA9IHJlZy5ncHIoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBzdG9yZVB0cihyZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCBhbGxDYWxsZWVT
YXZlc01hcC0+Z2V0T2Zmc2V0Rm9yKHJlZykpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCB2bUVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMt
PmF0KGkpOworICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogY3VycmVudEZyYW1lRW50cnkg
PSBjdXJyZW50Q2FsbGVlU2F2ZXMtPmZpbmQodm1FbnRyeS5yZWcoKSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgeworICAgICAgICAgICAgICAgIC8v
IExvYWQgY2FsbGVlU2F2ZSBmcm9tIHN0YWNrIGludG8gdGVtcCByZWdpc3RlcgorICAgICAgICAg
ICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMjsKKyAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSksIHJl
Z1RvU3RvcmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgLy8gSnVzdCBz
dG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3RseQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB2
bUVudHJ5LnJlZygpLmdwcigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzdG9yZVB0cihy
ZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCB2bUVudHJ5Lm9mZnNldCgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0
T2Zmc2V0LmNwcAkocmV2aXNpb24gMTg4NTY4KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwOjE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRlRMUmVnaXN0ZXJBdE9mZnNldC5oIgor
CisjaWYgRU5BQkxFKEZUTF9KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
Kwordm9pZCBSZWdpc3RlckF0T2Zmc2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgb3V0LnByaW50KHJlZygpLCAiIGF0ICIsIG9mZnNldCgpKTsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0LmNwcAkod29ya2lu
ZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwxOCArMjQsMTggQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRlRMUmVnaXN0ZXJBdE9mZnNldC5oIgorI2luY2x1ZGUgIlJl
Z2lzdGVyQXRPZmZzZXQuaCIKIAotI2lmIEVOQUJMRShGVExfSklUKQorI2lmIEVOQUJMRShKSVQp
CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKK25hbWVzcGFjZSBKU0MgewogCiB2
b2lkIFJlZ2lzdGVyQXRPZmZzZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQocmVnKCksICIgYXQgIiwgb2Zmc2V0KCkpOwogfQogCi19IH0gLy8gbmFtZXNw
YWNlIEpTQzo6RlRMCit9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIEVOQUJMRShGVExf
SklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCShyZXZpc2lvbiAxODg1NjgpCShmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oOjE4ODU2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBGVExSZWdpc3RlckF0T2Zmc2V0X2gKKyNkZWZpbmUgRlRM
UmVnaXN0ZXJBdE9mZnNldF9oCisKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKworI2luY2x1ZGUgIlJl
Zy5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CisKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXQgeworcHVibGljOgorICAgIFJl
Z2lzdGVyQXRPZmZzZXQoKQorICAgICAgICA6IG1fb2Zmc2V0KDApCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBSZWdpc3RlckF0T2Zmc2V0KFJlZyByZWcsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAg
ICAgIDogbV9yZWcocmVnKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICB7CisgICAg
fQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVnOyB9Cisg
ICAgCisgICAgUmVnIHJlZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnOyB9CisgICAgcHRyZGlmZl90
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJlZygpID09IG90aGVyLnJlZygpICYmIG9mZnNldCgpID09IG90aGVyLm9mZnNl
dCgpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdpc3RlckF0T2Zm
c2V0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChyZWcoKSAhPSBvdGhlci5yZWco
KSkKKyAgICAgICAgICAgIHJldHVybiByZWcoKSA8IG90aGVyLnJlZygpOworICAgICAgICByZXR1
cm4gb2Zmc2V0KCkgPCBvdGhlci5vZmZzZXQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIFJl
ZyBnZXRSZWcoUmVnaXN0ZXJBdE9mZnNldCogdmFsdWUpIHsgcmV0dXJuIHZhbHVlLT5yZWcoKTsg
fQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSZWcgbV9yZWc7CisgICAgcHRyZGlmZl90IG1fb2Zmc2V0OworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKKyNlbmRp
ZiAvLyBGVExSZWdpc3RlckF0T2Zmc2V0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlckF0T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE1ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBGVExSZWdpc3Rl
ckF0T2Zmc2V0X2gKLSNkZWZpbmUgRlRMUmVnaXN0ZXJBdE9mZnNldF9oCisjaWZuZGVmIFJlZ2lz
dGVyQXRPZmZzZXRfaAorI2RlZmluZSBSZWdpc3RlckF0T2Zmc2V0X2gKIAotI2lmIEVOQUJMRShG
VExfSklUKQorI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJSZWcuaCIKICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXQgewogcHVibGljOgpAQCAtNTAs
NiArNTAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgUmVnIHJlZygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnOyB9CiAgICAgcHRyZGlmZl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9
CisgICAgaW50IG9mZnNldEFzSW5kZXgoKSBjb25zdCB7IHJldHVybiBvZmZzZXQoKSAvIHNpemVv
Zih2b2lkKik7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJBdE9m
ZnNldCYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNzIsOSArNzMsOSBAQCBwcml2YXRlOgogICAg
IHB0cmRpZmZfdCBtX29mZnNldDsKIH07CiAKLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKK30g
Ly8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKIAotI2VuZGlmIC8vIEZUTFJlZ2lzdGVyQXRPZmZzZXRfaAorI2VuZGlmIC8v
IFJlZ2lzdGVyQXRPZmZzZXRfaAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyQXRPZmZzZXRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRM
aXN0LmgiCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisK
K25hbWVzcGFjZSBKU0MgeworICAgIAorUmVnaXN0ZXJBdE9mZnNldExpc3Q6OlJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KCkgeyB9CisKK1JlZ2lzdGVyQXRPZmZzZXRMaXN0OjpSZWdpc3RlckF0T2Zmc2V0
TGlzdChjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYgb3RoZXIpCit7CisgICAgbV9yZWdpc3Rl
cnMgPSBWZWN0b3I8UmVnaXN0ZXJBdE9mZnNldD4ob3RoZXIubV9yZWdpc3RlcnMpOworfQorCitS
ZWdpc3RlckF0T2Zmc2V0TGlzdDo6UmVnaXN0ZXJBdE9mZnNldExpc3QoUmVnaXN0ZXJTZXQgcmVn
aXN0ZXJTZXQsIE9mZnNldEJhc2VUeXBlIG9mZnNldEJhc2VUeXBlKQoreworICAgIHNpemVfdCBu
dW1iZXJPZlJlZ2lzdGVycyA9IHJlZ2lzdGVyU2V0Lm51bWJlck9mU2V0R1BScygpOworICAgIHB0
cmRpZmZfdCBvZmZzZXQgPSAwOworICAgIAorICAgIGlmIChvZmZzZXRCYXNlVHlwZSA9PSBGcmFt
ZVBvaW50ZXJCYXNlZCkKKyAgICAgICAgb2Zmc2V0ID0gLShzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+
KG51bWJlck9mUmVnaXN0ZXJzKSAqIHNpemVvZih2b2lkKikpOworCisgICAgZm9yIChSZWcgcmVn
ID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7cmVnID0gcmVnLm5leHQoKSkgewor
ICAgICAgICBpZiAocmVnaXN0ZXJTZXQuZ2V0KHJlZykgJiYgcmVnLmlzR1BSKCkpIHsKKyAgICAg
ICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KHJlZywgb2Zmc2V0KSk7CisgICAgICAgICAg
ICBvZmZzZXQgKz0gc2l6ZW9mKHZvaWQqKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNvcnQo
KTsKK30KKworUmVnaXN0ZXJBdE9mZnNldExpc3Q6On5SZWdpc3RlckF0T2Zmc2V0TGlzdCgpIHsg
fQorICAgIAordm9pZCBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6c29ydCgpCit7CisgICAgc3RkOjpz
b3J0KG1fcmVnaXN0ZXJzLmJlZ2luKCksIG1fcmVnaXN0ZXJzLmVuZCgpKTsKK30KKwordm9pZCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IG91dC5wcmludChsaXN0RHVtcChtX3JlZ2lzdGVycykpOworfQorCitSZWdpc3RlckF0T2Zmc2V0
KiBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZmluZChSZWcgcmVnKSBjb25zdAoreworICAgIHJldHVy
biB0cnlCaW5hcnlTZWFyY2g8UmVnaXN0ZXJBdE9mZnNldCwgUmVnPihtX3JlZ2lzdGVycywgbV9y
ZWdpc3RlcnMuc2l6ZSgpLCByZWcsIFJlZ2lzdGVyQXRPZmZzZXQ6OmdldFJlZyk7Cit9CisKK3Vu
c2lnbmVkIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjppbmRleE9mKFJlZyByZWcpIGNvbnN0Cit7Cisg
ICAgaWYgKFJlZ2lzdGVyQXRPZmZzZXQqIHBvaW50ZXIgPSBmaW5kKHJlZykpCisgICAgICAgIHJl
dHVybiBwb2ludGVyIC0gbV9yZWdpc3RlcnMuYmVnaW4oKTsKKyAgICByZXR1cm4gVUlOVF9NQVg7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3Qu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9m
ZnNldExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVnaXN0ZXJBdE9mZnNl
dExpc3RfaAorI2RlZmluZSBSZWdpc3RlckF0T2Zmc2V0TGlzdF9oCisKKyNpZiBFTkFCTEUoSklU
KQorCisjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldC5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyU2V0
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdCB7Citw
dWJsaWM6CisgICAgZW51bSBPZmZzZXRCYXNlVHlwZSB7IEZyYW1lUG9pbnRlckJhc2VkLCBaZXJv
QmFzZWQgfTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7CisgICAgUmVnaXN0ZXJBdE9m
ZnNldExpc3QoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmKTsKKyAgICBSZWdpc3RlckF0T2Zm
c2V0TGlzdChSZWdpc3RlclNldCwgT2Zmc2V0QmFzZVR5cGUgPSBGcmFtZVBvaW50ZXJCYXNlZCk7
CisgICAgflJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9yZWdpc3Rl
cnMuY2xlYXIoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9yZWdpc3RlcnMuc2l6ZSgpOworICAgIH0KKworICAgIFJlZ2lzdGVyQXRPZmZzZXQm
IGF0KHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3JlZ2lzdGVyc1tpbmRl
eF07CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQgcmVnaXN0
ZXJBdE9mZnNldCkKKyAgICB7CisgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChyZWdpc3RlckF0
T2Zmc2V0KTsKKyAgICB9CisKKyAgICB2b2lkIHNvcnQoKTsKKyAgICBSZWdpc3RlckF0T2Zmc2V0
KiBmaW5kKFJlZykgY29uc3Q7CisgICAgdW5zaWduZWQgaW5kZXhPZihSZWcpIGNvbnN0OyAvLyBS
ZXR1cm5zIFVJTlRfTUFYIGlmIG5vdCBmb3VuZC4KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8UmVn
aXN0ZXJBdE9mZnNldD4gbV9yZWdpc3RlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBSZWdpc3RlckF0T2Zmc2V0TGlzdF9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTYXZlTWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2F2ZU1hcC5j
cHAJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJTYXZlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJSZWdpc3RlclNhdmVNYXAuaCIKLQotI2lmIEVOQUJMRShKSVQpCi0KLSNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotUmVnaXN0ZXJTYXZl
TWFwOjpSZWdpc3RlclNhdmVNYXAoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzKQotewotICAgIG1fbnVt
YmVyT2ZSZWdpc3RlcnMgPSAwOwotICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVn
IDw9IFJlZzo6bGFzdCgpO3JlZyA9IHJlZy5uZXh0KCkpIHsKLSAgICAgICAgaWYgKHJlZ2lzdGVy
cy5nZXQocmVnKSAmJiByZWcuaXNHUFIoKSkgewotICAgICAgICAgICAgbV9pbmRleEZvclJlZ2lz
dGVyLnNldChyZWcuaW5kZXgoKSwgbV9udW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAgICAgICBt
X251bWJlck9mUmVnaXN0ZXJzKys7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXVuc2lnbmVkIFJl
Z2lzdGVyU2F2ZU1hcDo6Z2V0SW5kZXhGb3IoUmVnIHJlZykgY29uc3QKLXsKLSAgICBhdXRvIGl0
ZXIgPSBtX2luZGV4Rm9yUmVnaXN0ZXIuZmluZChyZWcuaW5kZXgoKSk7Ci0gICAgQVNTRVJUKGl0
ZXIgIT0gbV9pbmRleEZvclJlZ2lzdGVyLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlci0+dmFsdWU7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKLQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNhdmVNYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2F2ZU1hcC5oCShyZXZpc2lv
biAxODg1NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2F2ZU1hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZWdpc3RlclNhdmVNYXBfaAotI2RlZmlu
ZSBSZWdpc3RlclNhdmVNYXBfaAotCi0jaWYgRU5BQkxFKEpJVCkKLQotI2luY2x1ZGUgIkdQUklu
Zm8uaCIKLSNpbmNsdWRlICJSZWcuaCIKLSNpbmNsdWRlICJSZWdpc3RlclNldC5oIgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBSZWdpc3RlclNh
dmVNYXAgewotcHVibGljOgotICAgIFJlZ2lzdGVyU2F2ZU1hcChSZWdpc3RlclNldCByZWdpc3Rl
cnMpOwotCi0gICAgdW5zaWduZWQgc2l6ZSgpIHsgcmV0dXJuIG1fbnVtYmVyT2ZSZWdpc3RlcnM7
IH0KLSAgICBib29sIGhhcyhSZWcgcmVnKSB7IHJldHVybiBtX2luZGV4Rm9yUmVnaXN0ZXIuY29u
dGFpbnMocmVnLmluZGV4KCkpOyB9Ci0gICAgdW5zaWduZWQgbWF4T2Zmc2V0KCkgeyByZXR1cm4g
c2l6ZSgpICogY3B1UmVnaXN0ZXJTaXplOyB9Ci0gICAgdW5zaWduZWQgZ2V0SW5kZXhGb3IoUmVn
KSBjb25zdDsKLSAgICB1bnNpZ25lZCBnZXRPZmZzZXRGb3IoUmVnIHJlZykgY29uc3QgeyByZXR1
cm4gZ2V0SW5kZXhGb3IocmVnKSAqIGNwdVJlZ2lzdGVyU2l6ZTsgfQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY3B1UmVnaXN0ZXJTaXplID0gc2l6ZW9mKGludHB0cl90KTsK
LQotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZSZWdpc3RlcnM7Ci0gICAgSGFzaE1hcDx1bnNpZ25l
ZCwgdW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+ID4gbV9pbmRleEZvclJlZ2lzdGVyOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0jZW5kaWYgLy8gUmVn
aXN0ZXJTYXZlTWFwX2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
clNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
clNldC5jcHAJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMTEgKzIyOCw0NSBAQCBSZWdp
c3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQor
eworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBDUFUo
WDg2XzY0KSAmJiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7
CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgLy8g
TExWTSBtaWdodCBzYXZlIGFuZCB1c2UgYWxsIEFSTTY0IGNhbGxlZSBzYXZlcyBzcGVjaWZpZWQg
aW4gdGhlIEFCSS4KKyAgICByZXN1bHQuc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTkpOworICAgIHJl
c3VsdC5zZXQoQVJNNjRSZWdpc3RlcnM6OngyMCk7CisgICAgcmVzdWx0LnNldChBUk02NFJlZ2lz
dGVyczo6eDIxKTsKKyAgICByZXN1bHQuc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjIpOworICAgIHJl
c3VsdC5zZXQoQVJNNjRSZWdpc3RlcnM6OngyMyk7CisgICAgcmVzdWx0LnNldChBUk02NFJlZ2lz
dGVyczo6eDI0KTsKKyAgICByZXN1bHQuc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjUpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MxID09
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJl
Z0NTMiA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisjZWxzZQorICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2VuZGlmCisjZW5kaWYKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsVk1DYWxsZWVTYXZlUmVn
aXN0ZXJzKCkKIHsKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQobGxpbnRDYWxsZWVTYXZlUmVnaXN0
ZXJzKCksCiAgICAgICAgIGJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpLAotICAgICAgICBk
ZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgICAgICBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJz
KCksCisgICAgICAgIGZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiB9CiAKIFJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyU2V0LmgJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVnaXN0ZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGxsaW50Q2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBS
ZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgogICAgIHN0YXRpYyBSZWdpc3Rl
clNldCBiYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFu
ZCB1c2VkIGJ5IHRoZSBiYXNlbGluZSBKSVQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBE
RkcgSklULgorICAgIHN0YXRpYyBSZWdpc3RlclNldCBmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
IC8vIFJlZ2lzdGVycyB0aGF0IG1pZ2h0IGJlIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBGVEwgSklU
LgogICAgIHN0YXRpYyBSZWdpc3RlclNldCBhbGxWTUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8g
VGhlIHVuaW9uIG9mIHJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSBhbnkgVk0uCiAgICAgc3Rh
dGljIFJlZ2lzdGVyU2V0IG5vblRlbXBSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIFZNIGNh
bGxlZSBzYXZlIGFuZCBzcGVjaWFsIHJlZ2lzdGVycy4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQg
YWxsR1BScygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBACiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFi
bGUuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5o
IgotI2luY2x1ZGUgIlJlZ2lzdGVyU2F2ZU1hcC5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5cGUuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBl
ZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKQEAg
LTI0Niw3ICsyNDYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAKICNpZiBFTkFCTEUoSklUKQogICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRU
aHVua3M+KCk7Ci0gICAgYWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVnaXN0ZXJTYXZlTWFwPihSZWdpc3RlclNldDo6YWxsVk1DYWxsZWVTYXZlUmVnaXN0ZXJz
KCkpOworICAgIGFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihSZWdpc3RlclNldDo6YWxsVk1DYWxsZWVTYXZlUmVnaXN0
ZXJzKCksIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpaZXJvQmFzZWQpOwogI2VuZGlmCiAgICAgYXJp
dHlDaGVja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVj
a0RhdGE+KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24g
MTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFz
cyBMZWdhY3lQcm9maWxlcjsKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBD
YWNoZTsKLWNsYXNzIFJlZ2lzdGVyU2F2ZU1hcDsKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
OwogY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3Mg
U291cmNlUHJvdmlkZXJDYWNoZTsKQEAgLTM0OSw5ICszNDksOSBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50
cmluc2ljKTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJTYXZlTWFwPiBhbGxD
YWxsZWVTYXZlUmVnaXN0ZXJzTWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zm
c2V0TGlzdD4gYWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0czsKICAgICAKLSAgICBSZWdpc3Rl
clNhdmVNYXAqIGdldEFsbENhbGxlZVNhdmVSZWdpc3RlcnNNYXAoKSB7IHJldHVybiBhbGxDYWxs
ZWVTYXZlUmVnaXN0ZXJzTWFwLmdldCgpOyB9CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGdl
dEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKSB7IHJldHVybiBhbGxDYWxsZWVTYXZlUmVn
aXN0ZXJPZmZzZXRzLmdldCgpOyB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhPiBhcml0eUNoZWNrRGF0
YTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259391</attachid>
            <date>2015-08-19 13:13:42 -0700</date>
            <delta_ts>2015-08-19 14:51:59 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>148167-2.patch</filename>
            <type>text/plain</type>
            <size>98572</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDE1LTA4LTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIGpzYy10YWlsY2FsbDogVW5pZnkgUmVnaXN0ZXIgT2Zmc2V0IGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpcyBwcmltYXJpbHkg
YSByZWZhY3RvcmluZyBjaGFuZ2UuCisKKyAgICAgICAgTW92ZWQgZnRsL0ZUTFJlZ2lzdGVyQXRP
ZmZzZXQue2NwcCxofSB0byBqaXQvUmVnaXN0ZXJBdE9mZnNldC57Y3BwLGh9LgorICAgICAgICBG
YWN0b3JlZCBvdXQgdGhlIHZlY3RvciBvZiBSZWdpc3RlckF0T2Zmc2V0cyBpbiBmdGwvRlRMVW53
aW5kSW5mby57Y3BwLGh9IGludG8gYSBuZXcKKyAgICAgICAgY2xhc3MgaW4gaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LntjcHAsaH0uCisgICAgICAgIEVsaW1pbnRlZCBVbndpbmRJbmZvIGFuZCBj
aGFuZ2VkIFVud2luZEluZm86OnBhcnNlKCkgaW50byBhIHN0YW5kYWxvbmUgZnVuY3Rpb24uICBU
aGF0IHN0YW5kYWxvbmUKKyAgICAgICAgZnVuY3Rpb24gbm93IHNldHMgdGhlIGNhbGxlZSBzYXZl
cyBSZWdpc3RlckF0T2Zmc2V0TGlzdCBpbiB0aGUgY29kZSBibG9jay4gIENoYW5nZWQgYWxsIEZU
TAorICAgICAgICBjb2RlIHRvIHVzZSB0aGF0IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIHRoZSBVbndp
bmRJbmZvLgorICAgICAgICBBZGRlZCBhIGxpdHRsZSBtb3JlIGZ1bmN0aW9uYWxpdHkgdG8gUmVn
aXN0ZXJBdE9mZnNldExpc3QgdG8gdXNlIGl0IGluc3RlYWQgb2YgUmVnaXN0ZXJTYXZlTWFwIGFu
ZAorICAgICAgICByZXBsYWNlZCBhbGwgb2NjdXJhbmNlcyBvZiBSZWdpc3RlclNhdmVNYXAuCisg
ICAgICAgIEVsaW1pbmF0ZWQgaml0L1JlZ2lzdGVyU2F2ZU1hcC57Y3BwLGh9LgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsZWVTYXZl
UmVnaXN0ZXJzKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlND
OjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6Om1tQWxsb2NhdGVEYXRhU2VjdGlvbik6CisgICAgICAgICogZnRs
L0ZUTEpJVENvZGUuaDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogZnRsL0ZUTFJlZ2lzdGVy
QXRPZmZzZXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZ0bC9GVExSZWdpc3RlckF0T2Zmc2V0
Lmg6IFJlbW92ZWQuCisgICAgICAgICogZnRsL0ZUTFVud2luZEluZm8uY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OnBhcnNlVW53aW5kSW5mbyk6CisgICAgICAgIChKU0M6OkZUTDo6VW53aW5kSW5m
bzo6VW53aW5kSW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6VW53aW5kSW5mbzo6
flVud2luZEluZm8pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6OlVud2luZEluZm86OnBh
cnNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpVbndpbmRJbmZvOjpkdW1wKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpVbndpbmRJbmZvOjpmaW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpVbndpbmRJbmZvOjppbmRleE9mKTogRGVsZXRlZC4KKyAgICAgICAg
KiBmdGwvRlRMVW53aW5kSW5mby5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6Y29weUNhbGxlZVNhdmVzVG9WTUNh
bGxlZVNhdmVzQnVmZmVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcik6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zvcik6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JS
ZWdpc3RlclRvVk1DYWxsZWVTYXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6Y29weUNhbGxlZVNhdmVzRnJvbUZyYW1lVG9WTUNhbGxlZVNhdmVzQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJBdE9mZnNldC5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAuCisgICAgICAg
IChKU0M6OlJlZ2lzdGVyQXRPZmZzZXQ6OmR1bXApOgorICAgICAgICAoSlNDOjpGVEw6OlJlZ2lz
dGVyQXRPZmZzZXQ6OmR1bXApOiBEZWxldGVkLgorICAgICAgICAqIGppdC9SZWdpc3RlckF0T2Zm
c2V0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJB
dE9mZnNldC5oLgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpyZWcpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpvZmZzZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3Rl
ckF0T2Zmc2V0OjpvZmZzZXRBc0luZGV4KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNl
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkZUTDo6UmVnaXN0ZXJBdE9mZnNldDo6cmVn
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpSZWdpc3RlckF0T2Zmc2V0OjpvZmZzZXQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6OlJlZ2lzdGVyQXRPZmZzZXQ6Om9wZXJhdG9y
PT0pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6UmVnaXN0ZXJBdE9mZnNl
dExpc3QpOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6c29ydCk6CisgICAg
ICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpkdW1wKToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJBdE9mZnNldExpc3Q6OmZpbmQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0
TGlzdDo6aW5kZXhPZik6CisgICAgICAgICogaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0Lmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6Y2xlYXIpOgorICAgICAg
ICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6c2l6ZSk6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyQXRPZmZzZXRMaXN0OjphdCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZzZXRMaXN0
OjphcHBlbmQpOgorICAgICAgICAqIGppdC9SZWdpc3RlclNhdmVNYXAuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIGppdC9SZWdpc3RlclNhdmVNYXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBqaXQv
UmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2
ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmFsbFZNQ2FsbGVlU2F2ZVJlZ2lz
dGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphbGxHUFJzKToKKyAgICAgICAgKiBq
aXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpn
ZXRDVElTdHViKToKKyAgICAgICAgKEpTQzo6Vk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9m
ZnNldHMpOgorICAgICAgICAoSlNDOjpWTTo6Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCk6
IERlbGV0ZWQuCisKIDIwMTUtMDgtMTcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5j
b20+CiAKICAgICAgICAganNjLXRhaWxjYWxsOiBTdG9wIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFs
bCBjYWxsZWUgc2F2ZXMgb24gdm1FbnRyeSAvIGV4aXQgZm9yIHBsYXRmb3JtcyB3aXRoIHBlciBm
dW5jdGlvbiBjYWxsZWUgc2F2ZXMgaGFuZGxpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDggKzM2OCw5IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcAogICAgIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKICAgICBq
aXQvUmVnLmNwcAorICAgIGppdC9SZWdpc3RlckF0T2Zmc2V0LmNwcAorICAgIGppdC9SZWdpc3Rl
ckF0T2Zmc2V0TGlzdC5jcHAKICAgICBqaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmNwcAotICAgIGppdC9SZWdpc3RlclNhdmVNYXAuY3BwCiAgICAgaml0L1JlZ2lzdGVy
U2V0LmNwcAogICAgIGppdC9SZXBhdGNoLmNwcAogICAgIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuY3BwCkBAIC04ODcsNyArODg4LDYgQEAgaWYgKEVOQUJMRV9GVExfSklUKQogICAgICAg
ICBmdGwvRlRMT3BlcmF0aW9ucy5jcHAKICAgICAgICAgZnRsL0ZUTE91dHB1dC5jcHAKICAgICAg
ICAgZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcAotICAgICAgICBmdGwvRlRMUmVnaXN0ZXJBdE9m
ZnNldC5jcHAKICAgICAgICAgZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAogICAgICAgICBmdGwvRlRM
U2xvd1BhdGhDYWxsLmNwcAogICAgICAgICBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxODg1Njgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDYgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPcGVyYXRpb25zLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPdXRwdXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cZnRsXEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCIgLz4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGZ0bFxGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExTYXZlUmVzdG9yZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxmdGxcRlRMU2xvd1BhdGhDYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGZ0bFxGVExTbG93UGF0aENhbGxLZXkuY3BwIiAvPgpAQCAtNjM0LDggKzYz
Myw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcU2V0dXBWYXJhcmdzRnJhbWUu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWcuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXQuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXRMaXN0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclByZXNlcnZh
dGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aml0XFJlZ2lzdGVyU2F2ZU1hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxq
aXRcUmVnaXN0ZXJTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJl
cGF0Y2guY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvci5jcHAiIC8+CkBAIC0xMjQ5LDcgKzEyNDksNiBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTE9wZXJhdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGZ0bFxGVExPdXRwdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGZ0bFxGVExSZWNvdmVyeU9wY29kZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
ZnRsXEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGZ0bFxGVExTYXZlUmVzdG9yZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRs
XEZUTFNsb3dQYXRoQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZU
TFNsb3dQYXRoQ2FsbEtleS5oIiAvPgpAQCAtMTM5OSw4ICsxMzk4LDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGppdFxTZXR1cFZhcmFyZ3NGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caml0XFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNldC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiIC8+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJTYXZlTWFwLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJTZXQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGppdFxSZXBhdGNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTM4MSw4ICszODEsNiBAQAogCQkwRjZCMUNCQTE4NjEyNDRDMDA4NDVEOTcgLyogUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjZCMUNCODE4NjEyNDRDMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2
YXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY2QjFDQkQxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3Jh
cHBlckdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25X
cmFwcGVyR2VuZXJhdG9yLmNwcCAqLzsgfTsKIAkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8q
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQkMxODYxMjQ2QTAwODQ1RDk3IC8q
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNkIxQ0MzMTg2MkM0NzgwMDg0NUQ5
NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0JGMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3Rl
ckF0T2Zmc2V0LmNwcCAqLzsgfTsKLQkJMEY2QjFDQzQxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJl
Z2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2QjFD
QzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzExODYyQzQ3ODAwODQ1RDk3IC8q
IEZUTFVud2luZEluZm8uY3BwICovOyB9OwogCQkwRjZCMUNDNjE4NjJDNDc4MDA4NDVEOTcgLyog
RlRMVW53aW5kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZDNzM1MDFBQzlG
OTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QzczNEUxQUM5Rjk5RjAwQkUxNjgy
IC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCAqLzsgfTsKQEAgLTk3NCw4ICs5NzIsOCBA
QAogCQk2NTExMjMwNzE0MDQ2QjBBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTExMjJFNTE0MDQ2OUJBMDAy
QjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi87IH07CiAJCTY1MTRGMjE5MThCM0UxNjcwMDk4RkY4
QiAvKiBCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1MTRGMjE3MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRlY29kZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTMwM0Q2NDE0NDdCOUUx
MDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTMwM0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjUz
RDUwOEExQjVEOUY5QzAwREQ0QkNEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBRDlCMTkxQjVEOUI3NTAwOTg1NTZE
IC8qIFJlZ2lzdGVyU2F2ZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTY1M0Q1MDhCMUI1REMyOTAwMERENEJDRCAvKiBSZWdpc3RlclNhdmVN
YXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVB
RDlCMTgxQjVEOUI3NTAwOTg1NTZEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5jcHAgKi87IH07CisJCTY1
NDBDN0EwMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDBDNzlFMUI4MkQ5Q0UwMDBG
NkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCAqLzsgfTsKKwkJNjU0MEM3QTExQjgyRTFDMzAw
MEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDBDNzlDMUI4MkQ5OUQwMDBGNkI3OSAvKiBSZWdp
c3RlckF0T2Zmc2V0TGlzdC5jcHAgKi87IH07CiAJCTY1NDZGNTIxMUEzMkIzMTMwMDZGMDdENSAv
KiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU0NkY1MUYxQTMyQTU5QzAwNkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5j
dGlvbi5jcHAgKi87IH07CiAJCTY1NTI1RkM1MUE2REQ4MDEwMDdCNTQ5NSAvKiBOdWxsU2V0dGVy
RnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU1MjVGQzMxQTZERDNCMzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5jcHAgKi87
IH07CiAJCTY1NTNBMzMxMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NTNBMzJGMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCAq
LzsgfTsKQEAgLTIxMjUsOCArMjEyMyw2IEBACiAJCTBGNkIxQ0I4MTg2MTI0NEMwMDg0NUQ5NyAv
KiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNkIxQ0JCMTg2MTI0NkEwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbldy
YXBwZXJHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQkMxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2Vy
dmF0aW9uV3JhcHBlckdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQkYxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRP
ZmZzZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMUmVnaXN0
ZXJBdE9mZnNldC5jcHA7IHBhdGggPSBmdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExS
ZWdpc3RlckF0T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFJl
Z2lzdGVyQXRPZmZzZXQuaDsgcGF0aCA9IGZ0bC9GVExSZWdpc3RlckF0T2Zmc2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkIxQ0MxMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExV
bndpbmRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFVu
d2luZEluZm8uY3BwOyBwYXRoID0gZnRsL0ZUTFVud2luZEluZm8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjZCMUNDMjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExVbndpbmRJbmZvLmg7IHBh
dGggPSBmdGwvRlRMVW53aW5kSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjZDNzM0RTFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFyaWFibGVXcml0ZUZpcmVEZXRh
aWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY5OCw2ICsyNjk0LDEwIEBA
CiAJCTY1MkEzQTIzMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEE2NERPcGNvZGUuaDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9B
Uk02NC9BNjRET3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MzAzRDYz
MTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFyc2VyVG9rZW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTY1NDAwQzEwMEE2OUJBRjIwMDUwOTg4NyAvKiBQcm9wZXJ0eU5hbWVBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlOYW1lQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0MEM3OUMxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Z2lzdGVyQXRPZmZzZXRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0
MEM3OUQxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyQXRPZmZzZXRMaXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NDBDNzlFMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3Rl
ckF0T2Zmc2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lz
dGVyQXRPZmZzZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTQwQzc5RjFC
ODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWdpc3RlckF0T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTY1NDZGNTFGMUEzMkE1OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IE51
bGxHZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VT
cGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk2NTQ2RjUyMDFB
MzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE51bGxHZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTUyNUZDMzFBNkREM0IzMDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51bGxTZXR0ZXJGdW5j
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzE2LDggKzI3MTYsNiBA
QAogCQk2NThEM0E1NTE5NjM4MjY4MDAzQzQ1RDYgLyogVk1FbnRyeVJlY29yZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk1FbnRyeVJlY29yZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJNjU5ODdGMkMxNjdGRTg0QjAwM0MyRjhEIC8q
IERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRD
b21waWxhdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5ODdGMkYx
NjgyOEE3RTAwM0MyRjhEIC8qIFVudXNlZFBvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW51c2VkUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk2NUFEOUIxODFCNUQ5Qjc1MDA5ODU1NkQgLyogUmVnaXN0ZXJTYXZlTWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lzdGVyU2F2ZU1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1QUQ5QjE5MUI1RDlCNzUwMDk4NTU2RCAvKiBSZWdp
c3RlclNhdmVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJT
YXZlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QzAyODRGMTcxNzk1RTIw
MDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBBUk12N0Rpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIv
QVJNdjdEaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUMw
Mjg1QTE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFSTXY3RE9wY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1QzAyODVCMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJNdjdET3Bjb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzc3LDggKzM3NzUsNiBAQAogCQkJCTBGRUEwQTA2MTcw
NTEzREIwMEJCNzIyQyAvKiBGVExPdXRwdXQuaCAqLywKIAkJCQkwRjQ4NTMyNTE4N0RGREVDMDA4
M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwICovLAogCQkJCTBGNDg1MzI2MTg3REZERUMw
MDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oICovLAotCQkJCTBGNkIxQ0JGMTg2MkM0Nzgw
MDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNwcCAqLywKLQkJCQkwRjZCMUNDMDE4NjJD
NDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5oICovLAogCQkJCTBGQ0VGQUE5MTgw
NEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5jcHAgKi8sCiAJCQkJMEZDRUZBQUExODA0
QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmggKi8sCiAJCQkJMEYyNUYxQUExODE2MzVG
MzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgKi8sCkBAIC0zOTYxLDIyICszOTU3LDI0
IEBACiAJCQkJMEZDNzEyRTExN0NEODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJ
VFdyaXRlQmFycmllci5oICovLAogCQkJCUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0lu
dGVyZmFjZUpJVC5oICovLAotCQkJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBTZXR1cFZh
cmFyZ3NGcmFtZS5jcHAgKi8sCi0JCQkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIFNldHVw
VmFyYXJnc0ZyYW1lLmggKi8sCiAJCQkJMEZFODM0MTUxQTZFRjk3QjAwRDA0ODQ3IC8qIFBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKIAkJCQkwRkU4MzQxNjFBNkVGOTdCMDBEMDQ4
NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRkE3QThFOTE4QjQx
M0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLywKIAkJCQkwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQg
LyogUmVnLmggKi8sCisJCQkJNjU0MEM3OUUxQjgyRDlDRTAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRP
ZmZzZXQuY3BwICovLAorCQkJCTY1NDBDNzlGMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0
T2Zmc2V0LmggKi8sCisJCQkJNjU0MEM3OUMxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0LmNwcCAqLywKKwkJCQk2NTQwQzc5RDFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0
ZXJBdE9mZnNldExpc3QuaCAqLywKIAkJCQkwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCAqLywKIAkJCQkwRjZCMUNCQzE4
NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgg
Ki8sCi0JCQkJNjVBRDlCMTgxQjVEOUI3NTAwOTg1NTZEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5jcHAg
Ki8sCi0JCQkJNjVBRDlCMTkxQjVEOUI3NTAwOTg1NTZEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5oICov
LAogCQkJCTBGQzMxNDE0MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgKi8sCiAJ
CQkJMEZDMzE0MTAxODE0NTU5MTAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmggKi8sCiAJCQkJMEYy
NEU1NDkxN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwICovLAogCQkJCTBGMjRFNTRBMTdF
RTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmggKi8sCiAJCQkJMEZBN0E4RUQxOENFNEZEODAwNTIz
NzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgKi8sCiAJCQkJMEYyNEU1NEIxN0VF
Mjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovLAorCQkJCTBGRUU5
ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5jcHAgKi8sCisJCQkJMEZF
RTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggKi8sCiAJCQkJQTcw
OUYyRUYxN0EwQUMwNDAwNTEyRTk4IC8qIFNsb3dQYXRoQ2FsbC5oICovLAogCQkJCUE3Mzg2NTUx
MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmggKi8sCiAJCQkJQTdGRjY0
N0ExOEM1MkU4NTAwQjU1MzA3IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oICovLApAQCAtNTYzMSw3
ICs1NjI5LDYgQEAKIAkJCQk1MjY3OEY5MTFBMDQxNzdDMDA2QTMwNkQgLyogQ29udHJvbEZsb3dQ
cm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2NzhGOEYxQTAzMTAwOTAwNkEzMDZEIC8q
IEJhc2ljQmxvY2tMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcxMEUxOUY2REY4
MTAwOThGNUVDIC8qIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNjUzRDUwOEExQjVEOUY5QzAwREQ0QkNEIC8qIFJlZ2lzdGVyU2F2ZU1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcwRUMxOUY1QjNFQTAwOThGNUVDIC8qIGdlbmVy
YXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJz
ICovLAogCQkJCUM0RjRCNkYzMUEwNUM5NDQwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUY5QjE1MUExRDQzRkEwMDcwMkU5MCAvKiBn
ZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRl
cnMgKi8sCkBAIC01OTk2LDcgKzU5OTMsNiBAQAogCQkJCTBGRUEwQTExMTcwNTEzREIwMEJCNzIy
QyAvKiBGVExPdXRwdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFB
OTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVD
MDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNkIx
Q0M0MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjVGMUIyMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENh
bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExT
bG93UGF0aENhbGxLZXkuaCBpbiBIZWFkZXJzICovLApAQCAtNzAxMSw3ICs3MDA3LDYgQEAKIAkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTY1M0Q1MDhCMUI1REMyOTAwMERENEJDRCAvKiBSZWdp
c3RlclNhdmVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUVBNUM3QTIxOTBGMDg4NzAwNTA4
RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlFQTVDN0Ex
MTkwRjA4NDIwMDUwOEVCRSAvKiBCdW5kbGVQYXRoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJC
MzEwRkYxOTc1QjQyNDAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzI2Niw3ICs3MjYxLDYgQEAKIAkJCQkwRjIzNUJERjE3MTc4RTFDMDA2OTBDN0Yg
LyogRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTJBMTcw
OTYyOTYwMEJCNzIyQyAvKiBGVExPdXRwdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0ODUz
MjkxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTBGNkIxQ0MzMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZl
UmVzdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkg
LyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1
RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03
NTMwLDYgKzc1MjQsOCBAQAogCQkJCTBGM0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQ
b3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAy
OTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTdBOEVC
MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjU0MEM3QTEx
QjgyRTFDMzAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTY1NDBDN0EwMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0MjgwODQxMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBW
YXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDcgKzY5LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgogCiAj
aWYgRU5BQkxFKEpJVCkKLSNpbmNsdWRlICJSZWdpc3RlclNhdmVNYXAuaCIKKyNpbmNsdWRlICJS
ZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTMzMDMsOSArMzMwMywxNCBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OnJlb3B0aW1pemF0aW9uUmV0
cnlDCiAjaWYgRU5BQkxFKEpJVCkKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0
ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7Ci0gICAgbV9jYWxsZWVTYXZl
UmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlclNhdmVNYXA+KGNhbGxlZVNhdmVS
ZWdpc3RlcnMpOworICAgIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVnaXN0ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwogfQogCit2b2lkIENv
ZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJB
dE9mZnNldExpc3Q+IHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQoreworICAgIG1fY2FsbGVlU2F2ZVJl
Z2lzdGVycyA9IFdURjo6bW92ZShyZWdpc3RlckF0T2Zmc2V0TGlzdCk7Cit9CisgICAgCiBzdGF0
aWMgc2l6ZV90IHJvdW5kQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKHNpemVfdCBj
YWxsZWVTYXZlUmVnaXN0ZXJzKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjcHVSZWdp
c3RlclNpemUgPSBzaXplb2Yodm9pZCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7Ci1jbGFzcyBSZWdpc3RlclNhdmVNYXA7CitjbGFzcyBSZWdpc3RlckF0T2Zm
c2V0TGlzdDsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRpb247CiAKQEAg
LTgyNCw4ICs4MjQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplRnJvbUxv
b3BOb3coKTsKIAogICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCk7
CisgICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3Rl
ckF0T2Zmc2V0TGlzdD4pOwogICAgIAotICAgIFJlZ2lzdGVyU2F2ZU1hcCogY2FsbGVlU2F2ZVJl
Z2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoKTsgfQor
ICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmdldCgpOyB9CiAjZWxzZSAvLyBObyBKSVQKICAg
ICBzdGF0aWMgdW5zaWduZWQgbnVtYmVyT2ZMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgc2l6ZV90IGxsaW50QmFzZWxpbmVDYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSB7IHJldHVybiAwOyB9OwpAQCAtMTAyNSw3ICsx
MDI2LDcgQEAgcHJpdmF0ZToKICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0lu
Zm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0xM
SW50Q2FsbHM7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsKICNpZiBFTkFCTEUoSklU
KQotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlclNhdmVNYXA+IG1fY2FsbGVlU2F2ZVJlZ2lz
dGVyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IG1fY2FsbGVl
U2F2ZVJlZ2lzdGVyczsKICAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOwog
ICAgIFZlY3RvcjxCeVZhbEluZm8+IG1fYnlWYWxJbmZvczsKICAgICBCYWc8Q2FsbExpbmtJbmZv
PiBtX2NhbGxMaW5rSW5mb3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NiwxNCArMjU2LDIxIEBAIHZv
aWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAgICAgcGl2b3RbaV0g
PSBKU1ZhbHVlKCk7CiAgICAgfQogCi0gICAgUmVnaXN0ZXJTYXZlTWFwKiByZWdpc3RlclNhdmVM
b2NhdGlvbnMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICB1bnNpZ25l
ZCBudW1iZXJSZWdpc3RlcnNUb1NhdmUgPSByZWdpc3RlclNhdmVMb2NhdGlvbnMtPnNpemUoKTsK
LSAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVn
ID0gcmVnLm5leHQoKSkgewotICAgICAgICBpZiAocmVnaXN0ZXJTYXZlTG9jYXRpb25zLT5oYXMo
cmVnKSAmJiByZWcuaXNHUFIoKSkKLSAgICAgICAgICAgICooYml0d2lzZV9jYXN0PGludHB0cl90
Kj4ocGl2b3QpICsgbnVtYmVyUmVnaXN0ZXJzVG9TYXZlIC0gcmVnaXN0ZXJTYXZlTG9jYXRpb25z
LT5nZXRJbmRleEZvcihyZWcpIC0gMSkgPSB2bS0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlclt2
bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCgpLT5nZXRJbmRleEZvcihyZWcpXTsKKyAg
ICAvLyA2KSBDb3B5IG91ciBjYWxsZWUgc2F2ZXMgdG8gYnVmZmVyLgorICAgIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KiByZWdpc3RlclNhdmVMb2NhdGlvbnMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSB2
bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOworCisgICAgdW5zaWduZWQgcmVn
aXN0ZXJDb3VudCA9IHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucy0+c2l6ZSgpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJB
dE9mZnNldCBjdXJyZW50RW50cnkgPSByZWdpc3RlclNhdmVMb2NhdGlvbnMtPmF0KGkpOworICAg
ICAgICBpZiAoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KGN1cnJlbnRFbnRyeS5y
ZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCog
dm1DYWxsZWVTYXZlc0VudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmZpbmQoY3VycmVudEVudHJ5LnJl
ZygpKTsKKyAgICAgICAgCisgICAgICAgICooYml0d2lzZV9jYXN0PGludHB0cl90Kj4ocGl2b3Qg
LSAxKSAtIGN1cnJlbnRFbnRyeS5vZmZzZXRBc0luZGV4KCkpID0gdm0tPmNhbGxlZVNhdmVSZWdp
c3RlcnNCdWZmZXJbdm1DYWxsZWVTYXZlc0VudHJ5LT5vZmZzZXRBc0luZGV4KCldOwogICAgIH0K
ICAgICAKLSAgICAvLyA2KSBGaXggdGhlIGNhbGwgZnJhbWUgdG8gaGF2ZSB0aGUgcmlnaHQgY29k
ZSBibG9jay4KKyAgICAvLyA3KSBGaXggdGhlIGNhbGwgZnJhbWUgdG8gaGF2ZSB0aGUgcmlnaHQg
Y29kZSBibG9jay4KICAgICAKICAgICAqYml0d2lzZV9jYXN0PENvZGVCbG9jayoqPihwaXZvdCAt
IDEgLSBKU1N0YWNrOjpDb2RlQmxvY2spID0gY29kZUJsb2NrOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxODg1NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MTMsMTMgKzgxMywxNCBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6
OlJlCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYm9vbCBkaWRTZWVVbndpbmRJbmZvID0g
c3RhdGUuaml0Q29kZS0+dW53aW5kSW5mby5wYXJzZSgKKyAgICBib29sIGRpZFNlZVVud2luZElu
Zm8gPSBwYXJzZVVud2luZEluZm8oCisgICAgICAgIHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLAog
ICAgICAgICBzdGF0ZS51bndpbmREYXRhU2VjdGlvbiwgc3RhdGUudW53aW5kRGF0YVNlY3Rpb25T
aXplLAogICAgICAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgaWYgKHNob3VsZFNo
b3dEaXNhc3NlbWJseSgpKSB7CiAgICAgICAgIGRhdGFMb2coIlVud2luZCBpbmZvIGZvciAiLCBD
b2RlQmxvY2tXaXRoSklUVHlwZShzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6RlRM
SklUKSwgIjpcbiIpOwogICAgICAgICBpZiAoZGlkU2VlVW53aW5kSW5mbykKLSAgICAgICAgICAg
IGRhdGFMb2coIiAgICAiLCBzdGF0ZS5qaXRDb2RlLT51bndpbmRJbmZvLCAiXG4iKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIiAgICAiLCAqc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKSwgIlxuIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICA8bm8gdW53aW5kIGluZm8+XG4iKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVENvZGUuaAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDYgQEAg
cHVibGljOgogICAgIERGRzo6Q29tbW9uRGF0YSBjb21tb247CiAgICAgU2VnbWVudGVkVmVjdG9y
PE9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgU3RhY2tNYXBzIHN0YWNrbWFwczsKLSAgICBVbndp
bmRJbmZvIHVud2luZEluZm87CiAgICAgCiBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8RGF0
YVNlY3Rpb24+PiBtX2RhdGFTZWN0aW9uczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAg
ICBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogKAogICAgICAgICAgICAgZXhpdC5tX3ZhbHVlcy5z
aXplKCkgKyBudW1NYXRlcmlhbGl6YXRpb25zICsgbWF4TWF0ZXJpYWxpemF0aW9uTnVtQXJndW1l
bnRzKSArCiAgICAgICAgIHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkgKwotICAg
ICAgICBqaXRDb2RlLT51bndpbmRJbmZvLm1fcmVnaXN0ZXJzLnNpemUoKSAqIHNpemVvZih1aW50
NjRfdCkpOworICAgICAgICBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgp
ICogc2l6ZW9mKHVpbnQ2NF90KSk7CiAgICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBzY3Jh
dGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5k
YXRhQnVmZmVyKCkpIDogMDsKICAgICBFbmNvZGVkSlNWYWx1ZSogbWF0ZXJpYWxpemF0aW9uUG9p
bnRlcnMgPSBzY3JhdGNoICsgZXhpdC5tX3ZhbHVlcy5zaXplKCk7CiAgICAgRW5jb2RlZEpTVmFs
dWUqIG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cyA9IG1hdGVyaWFsaXphdGlvblBvaW50ZXJzICsg
bnVtTWF0ZXJpYWxpemF0aW9uczsKQEAgLTMwNSw4ICszMDUsOCBAQCBzdGF0aWMgdm9pZCBjb21w
aWxlU3R1YigKICAgICAKICAgICAvLyBCZWZvcmUgd2Ugc3RhcnQgbWVzc2luZyB3aXRoIHRoZSBm
cmFtZSwgd2UgbmVlZCB0byBzZXQgYXNpZGUgYW55IHJlZ2lzdGVycyB0aGF0IHRoZQogICAgIC8v
IEZUTCBjb2RlIHdhcyBwcmVzZXJ2aW5nLgotICAgIGZvciAodW5zaWduZWQgaSA9IGppdENvZGUt
PnVud2luZEluZm8ubV9yZWdpc3RlcnMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQgZW50cnkgPSBqaXRDb2RlLT51bndpbmRJbmZvLm1fcmVnaXN0ZXJzW2ldOworICAg
IGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNvZGVCbG9jay0+
Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5hdChpKTsKICAgICAgICAgaml0LmxvYWQ2NCgKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50
ZXJSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLAogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAp
OwpAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICBp
ZiAoIXRvU2F2ZS5nZXQocmVnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjdXJy
ZW50T2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7Ci0gICAgICAgIHVuc2lnbmVkIHVud2luZElu
ZGV4ID0gaml0Q29kZS0+dW53aW5kSW5mby5pbmRleE9mKHJlZyk7CisgICAgICAgIHVuc2lnbmVk
IHVud2luZEluZGV4ID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPmluZGV4T2Yo
cmVnKTsKICAgICAgICAgaWYgKHVud2luZEluZGV4ID09IFVJTlRfTUFYKSB7CiAgICAgICAgICAg
ICAvLyBUaGUgRlRMIGNvbXBpbGF0aW9uIGRpZG4ndCBwcmVzZXJ2ZSB0aGlzIHJlZ2lzdGVyLiBU
aGlzIG1lYW5zIHRoYXQgaXQgYWxzbwogICAgICAgICAgICAgLy8gZGlkbid0IHVzZSB0aGUgcmVn
aXN0ZXIuIFNvIGl0cyB2YWx1ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIE9TUiBleGl0IHNob3VsZCBi
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRP
ZmZzZXQuY3BwCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZUTFJlZ2lzdGVyQXRPZmZzZXQuaCIKLQotI2lm
IEVOQUJMRShGVExfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7Ci0KLXZv
aWQgUmVnaXN0ZXJBdE9mZnNldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAg
IG91dC5wcmludChyZWcoKSwgIiBhdCAiLCBvZmZzZXQoKSk7Ci19Ci0KLX0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpGVEwKLQotI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQotCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuaAkocmV2aXNpb24g
MTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZUTFJlZ2lzdGVyQXRPZmZz
ZXRfaAotI2RlZmluZSBGVExSZWdpc3RlckF0T2Zmc2V0X2gKLQotI2lmIEVOQUJMRShGVExfSklU
KQotCi0jaW5jbHVkZSAiUmVnLmgiCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKLQotY2xhc3MgUmVnaXN0ZXJBdE9mZnNldCB7
Ci1wdWJsaWM6Ci0gICAgUmVnaXN0ZXJBdE9mZnNldCgpCi0gICAgICAgIDogbV9vZmZzZXQoMCkK
LSAgICB7Ci0gICAgfQotICAgIAotICAgIFJlZ2lzdGVyQXRPZmZzZXQoUmVnIHJlZywgcHRyZGlm
Zl90IG9mZnNldCkKLSAgICAgICAgOiBtX3JlZyhyZWcpCi0gICAgICAgICwgbV9vZmZzZXQob2Zm
c2V0KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJl
dHVybiAhbV9yZWc7IH0KLSAgICAKLSAgICBSZWcgcmVnKCkgY29uc3QgeyByZXR1cm4gbV9yZWc7
IH0KLSAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KLSAg
ICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmVnKCkgPT0gb3RoZXIucmVnKCkgJiYgb2Zmc2V0
KCkgPT0gb3RoZXIub2Zmc2V0KCk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFJlZ2lzdGVyQXRPZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKHJl
ZygpICE9IG90aGVyLnJlZygpKQotICAgICAgICAgICAgcmV0dXJuIHJlZygpIDwgb3RoZXIucmVn
KCk7Ci0gICAgICAgIHJldHVybiBvZmZzZXQoKSA8IG90aGVyLm9mZnNldCgpOwotICAgIH0KLSAg
ICAKLSAgICBzdGF0aWMgUmVnIGdldFJlZyhSZWdpc3RlckF0T2Zmc2V0KiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUtPnJlZygpOyB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0OwotCi1wcml2YXRlOgotICAgIFJlZyBtX3JlZzsKLSAgICBwdHJkaWZmX3QgbV9vZmZz
ZXQ7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCi0KLSNlbmRpZiAvLyBFTkFCTEUo
RlRMX0pJVCkKLQotI2VuZGlmIC8vIEZUTFJlZ2lzdGVyQXRPZmZzZXRfaAotCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZEluZm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5jcHAJKHJldmlzaW9uIDE4ODU2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk0LDYgKzk0LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJGVExVbndpbmRJbmZvLmgiCiAKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJS
ZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgorCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKICNpZiBPUyhE
QVJXSU4pCkBAIC0xMDMsMTAgKzEwNiw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RlRMIHsKIAotVW53aW5kSW5mbzo6VW53aW5kSW5mbygpIHsgfQotVW53aW5kSW5mbzo6flVud2lu
ZEluZm8oKSB7IH0KLQotCiBuYW1lc3BhY2UgewogI2lmIE9TKERBUldJTikKIHN0cnVjdCBDb21w
YWN0VW53aW5kIHsKQEAgLTY1NCwxMyArNjUzLDE0IEBAIHN0YXRpYyB2b2lkIHBhcnNlRkRFSW5z
dHJ1Y3Rpb25zKGNvbnN0IEYKICNlbmRpZgogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLWJv
b2wgVW53aW5kSW5mbzo6cGFyc2Uodm9pZCogc2VjdGlvbiwgc2l6ZV90IHNpemUsIEdlbmVyYXRl
ZEZ1bmN0aW9uIGdlbmVyYXRlZEZ1bmN0aW9uKQorYm9vbCBwYXJzZVVud2luZEluZm8oQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIHZvaWQqIHNlY3Rpb24sIHNpemVfdCBzaXplLCBHZW5lcmF0ZWRGdW5j
dGlvbiBnZW5lcmF0ZWRGdW5jdGlvbikKIHsKLSAgICBtX3JlZ2lzdGVycy5jbGVhcigpOwogICAg
IFJFTEVBU0VfQVNTRVJUKCEhc2VjdGlvbik7CiAgICAgaWYgKCFzZWN0aW9uKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
IHJlZ2lzdGVyT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KCk7CisKICNpZiBPUyhEQVJXSU4pCiAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA+PSBzaXplb2Yo
Q29tcGFjdFVud2luZCkpOwogICAgIApAQCAtNjg5LDI3ICs2ODksMjcgQEAgYm9vbCBVbndpbmRJ
bmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBVTldJTkRfWDg2XzY0X1JFR19SQlg6Ci0gICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OmVieCwgb2Zm
c2V0KSk7CisgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KFg4NlJlZ2lzdGVyczo6ZWJ4LCBvZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUjEyOgotICAgICAgICAg
ICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTIs
IG9mZnNldCkpOworICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChYODZSZWdpc3RlcnM6OnIxMiwgb2Zmc2V0KSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVOV0lORF9YODZfNjRfUkVHX1IxMzoKLSAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6
cjEzLCBvZmZzZXQpKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTMsIG9mZnNldCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVTldJTkRfWDg2XzY0X1JFR19SMTQ6Ci0g
ICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3Rl
cnM6OnIxNCwgb2Zmc2V0KSk7CisgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE0LCBvZmZzZXQpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUjE1
OgotICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVn
aXN0ZXJzOjpyMTUsIG9mZnNldCkpOworICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxNSwgb2Zmc2V0KSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVOV0lORF9YODZfNjRfUkVH
X1JCUDoKLSAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4
NlJlZ2lzdGVyczo6ZWJwLCBvZmZzZXQpKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYnAsIG9mZnNldCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKQEAgLTcyMSw0
NCArNzIxLDQ0IEBAIGJvb2wgVW53aW5kSW5mbzo6cGFyc2Uodm9pZCogc2VjdGlvbiwgc2kKICNl
bGlmIENQVShBUk02NCkKICAgICBSRUxFQVNFX0FTU0VSVCgoZW5jb2RpbmcgJiBVTldJTkRfQVJN
NjRfTU9ERV9NQVNLKSA9PSBVTldJTkRfQVJNNjRfTU9ERV9GUkFNRSk7CiAgICAgCi0gICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OmZwLCAwKSk7
CisgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6ZnAsIDApKTsKICAgICAKICAgICBpbnQzMl90IG9mZnNldCA9IDA7CiAgICAgaWYgKGVu
Y29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX1gxOV9YMjBfUEFJUikgewotICAgICAgICBtX3Jl
Z2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE5LCBvZmZz
ZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6eDIwLCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTksIG9mZnNldCAt
PSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OngyMCwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29k
aW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX1gyMV9YMjJfUEFJUikgewotICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIxLCBvZmZzZXQg
LT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6eDIyLCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMt
PmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIG9mZnNldCAtPSA4
KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OngyMiwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5n
ICYgVU5XSU5EX0FSTTY0X0ZSQU1FX1gyM19YMjRfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIzLCBvZmZzZXQgLT0g
OCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDI0LCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjMsIG9mZnNldCAtPSA4KSk7
CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OngyNCwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYg
VU5XSU5EX0FSTTY0X0ZSQU1FX1gyNV9YMjZfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI1LCBvZmZzZXQgLT0gOCkp
OwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6eDI2LCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjUsIG9mZnNldCAtPSA4KSk7Cisg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OngyNiwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5X
SU5EX0FSTTY0X0ZSQU1FX1gyN19YMjhfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI3LCBvZmZzZXQgLT0gOCkpOwot
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDI4LCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIG9mZnNldCAtPSA4KSk7CisgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OngyOCwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5E
X0FSTTY0X0ZSQU1FX0Q4X0Q5X1BBSVIpIHsKLSAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE4LCBvZmZzZXQgLT0gOCkpOwotICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTks
IG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE4LCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwg
b2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZS
QU1FX0QxMF9EMTFfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEwLCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3Jl
Z2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTExLCBvZmZz
ZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTAsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVy
T2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMSwgb2Zm
c2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1F
X0QxMl9EMTNfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTEyLCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEzLCBvZmZzZXQg
LT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMTIsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zm
c2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMywgb2Zmc2V0
IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX0Qx
NF9EMTVfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTE0LCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE1LCBvZmZzZXQgLT0g
OCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjpxMTQsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNSwgb2Zmc2V0IC09
IDgpKTsKICAgICB9CiAjZWxzZQogI2Vycm9yICJVbnJlY29nbml6ZWQgYXJjaGl0ZWN0dXJlIgpA
QCAtNzgyLDIyICs3ODIsMjIgQEAgYm9vbCBVbndpbmRJbmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9u
LCBzaQogICAgICAgICBpZiAocHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLnNhdmVkKSB7CiAgICAg
ICAgICAgICBzd2l0Y2ggKGkpIHsKICAgICAgICAgICAgIGNhc2UgVU5XX1g4Nl82NF9yYng6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVn
aXN0ZXJzOjplYngsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6ZWJ4LCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19YODZfNjRfcjEyOgotICAgICAgICAgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjEy
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChYODZSZWdpc3RlcnM6OnIxMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNl
dCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBVTldfWDg2XzY0X3IxMzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxMywgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2
UmVnaXN0ZXJzOjpyMTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX1g4Nl82NF9yMTQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6
cjE0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19Y
ODZfNjRfcjE1OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJP
ZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxNSwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfWDg2XzY0X3JicDoK
LSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZS
ZWdpc3RlcnM6OmVicCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYnAsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRFdfWDg2XzY0X1JFVF9hZGRyOgogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtODE2LDE5NiArODE2LDE5NiBAQCBib29sIFVud2luZEluZm86
OnBhcnNlKHZvaWQqIHNlY3Rpb24sIHNpCiAgICAgICAgIGlmIChwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0uc2F2ZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAoaSkgewogICAgICAgICAgICAgY2Fz
ZSBVTldfQVJNNjRfeDA6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVn
aXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDAs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3gxOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjp4MSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxLCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjoKLSAgICAg
ICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6eDIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDM6Ci0gICAgICAgICAgICAgICAg
bV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngzLCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6eDMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3g0OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4NCwgcHJvbG9nLnNhdmVk
UmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6Ong0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFVOV19BUk02NF94NToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tp
XS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBy
ZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4
NSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJN
NjRfeDY6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6Ong2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDYsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3g3OgotICAg
ICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4NywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFS
ZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong3LCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94ODoKLSAgICAgICAgICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDgs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4OCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNl
dCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDk6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3Rl
cnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong5LCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6eDksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX0FSTTY0X3gxMDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDEwLCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDEwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF94MTE6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxMSwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
eDEyOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjp4MTIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTIsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxMzoKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDEzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDEzLCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MTQ6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OngxNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDE1OgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTUsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxNjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE2LCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6eDE2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF94MTc6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNywgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OngxNywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfeDE4OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTgs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3gxOToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6eDE5LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE5LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjA6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OngyMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMCwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDIxOgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4MjEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tp
XS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyMjoKLSAgICAgICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIyLCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6eDIyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjM6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3Rl
cnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMywgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OngyMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVTldfQVJNNjRfeDI0OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjQsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjp4MjQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VU5XX0FSTTY0X3gyNToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVn
aXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI1
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02
NF94MjY6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OngyNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zm
c2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNiwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDI3Ogot
ICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4MjcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyODoKLSAgICAgICAg
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDI4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF9mcDoKLSAgICAgICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6ZnAsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpmcCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDMwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MzAsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4MzAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX0FSTTY0X3NwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpzcCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAg
IHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OnNwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19B
Uk02NF92MDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMCwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjE6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyOgotICAgICAgICAgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpx
MiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTMsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAg
ICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjpxMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVTldfQVJNNjRfdjQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE0LCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5X
X0FSTTY0X3Y1OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxNSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNl
dCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVy
T2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE1LCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92NjoK
LSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxNiwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjc6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OnE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3Y4OgotICAgICAgICAgICAgICAgIG1fcmVn
aXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOCwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwor
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OnE4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJv
bG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFVOV19BUk02NF92OToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTksIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjpxOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfdjEwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTAs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3YxMToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTExLCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTI6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnExMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMiwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjEzOgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxMTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tp
XS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxNDoKLSAgICAgICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE0LCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTE0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTU6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3Rl
cnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNSwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OnExNSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVTldfQVJNNjRfdjE2OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTYsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjpxMTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VU5XX0FSTTY0X3YxNzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVn
aXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE3
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02
NF92MTg6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OnExOCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zm
c2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExOCwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjE5Ogot
ICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMTksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTksIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyMDoKLSAgICAgICAg
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTIwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjE6Ci0gICAgICAgICAgICAgICAg
bV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyMSwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOworICAgICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjpxMjEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VU5XX0FSTTY0X3YyMjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVn
aXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIy
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02
NF92MjM6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OnEyMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zm
c2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyMywgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjI0Ogot
ICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMjQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjQsIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyNToKLSAgICAgICAg
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTI1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjY6Ci0gICAgICAgICAgICAgICAg
bV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNiwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNl
dCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjI3OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0
ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjcsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAg
ICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjpxMjcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9s
b2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVU5XX0FSTTY0X3YyODoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI4LCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAg
ICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6cTI4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJl
Z2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVOV19BUk02NF92Mjk6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEy
OSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJN
NjRfdjMwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxMzAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMzAsIHByb2xv
Zy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YzMToK
LSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTMxLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTMxLCBwcm9sb2cuc2F2ZWRS
ZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIG5vbi1zdGFuZGFyZCByZWdpc3RlciBiZWlu
ZyBzYXZlZCBpbiBwcm9sb2cKQEAgLTEwMTcsMjcgKzEwMTcsMTEgQEAgYm9vbCBVbndpbmRJbmZv
OjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaQogI2VuZGlmCiAKICNlbmRpZgotICAgIHN0ZDo6c29y
dChtX3JlZ2lzdGVycy5iZWdpbigpLCBtX3JlZ2lzdGVycy5lbmQoKSk7CisgICAgcmVnaXN0ZXJP
ZmZzZXRzLT5zb3J0KCk7CisgICAgY29kZUJsb2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFdU
Rjo6bW92ZShyZWdpc3Rlck9mZnNldHMpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBV
bndpbmRJbmZvOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50
KGxpc3REdW1wKG1fcmVnaXN0ZXJzKSk7Ci19Ci0KLVJlZ2lzdGVyQXRPZmZzZXQqIFVud2luZElu
Zm86OmZpbmQoUmVnIHJlZykgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPFJl
Z2lzdGVyQXRPZmZzZXQsIFJlZz4obV9yZWdpc3RlcnMsIG1fcmVnaXN0ZXJzLnNpemUoKSwgcmVn
LCBSZWdpc3RlckF0T2Zmc2V0OjpnZXRSZWcpOwotfQotCi11bnNpZ25lZCBVbndpbmRJbmZvOjpp
bmRleE9mKFJlZyByZWcpIGNvbnN0Ci17Ci0gICAgaWYgKFJlZ2lzdGVyQXRPZmZzZXQqIHBvaW50
ZXIgPSBmaW5kKHJlZykpCi0gICAgICAgIHJldHVybiBwb2ludGVyIC0gbV9yZWdpc3RlcnMuYmVn
aW4oKTsKLSAgICByZXR1cm4gVUlOVF9NQVg7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpG
VEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExVbndpbmRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExVbndpbmRJbmZvLmgJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMyAr
MzEsMTAgQEAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAogI2luY2x1ZGUgIkZUTEdlbmVyYXRlZEZ1
bmN0aW9uLmgiCi0jaW5jbHVkZSAiRlRMUmVnaXN0ZXJBdE9mZnNldC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXN0cnVjdCBVbndpbmRJbmZvIHsKLSAgICBVbndpbmRJ
bmZvKCk7Ci0gICAgflVud2luZEluZm8oKTsKLSAgICAKLSAgICBib29sIHBhcnNlKHZvaWQqLCBz
aXplX3QsIEdlbmVyYXRlZEZ1bmN0aW9uKTsKLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKLSAgICAKLSAgICBSZWdpc3RlckF0T2Zmc2V0KiBmaW5kKFJlZykgY29uc3Q7
Ci0gICAgdW5zaWduZWQgaW5kZXhPZihSZWcpIGNvbnN0OyAvLyBSZXR1cm5zIFVJTlRfTUFYIGlm
IG5vdCBmb3VuZC4KLSAgICAKLSAgICBWZWN0b3I8UmVnaXN0ZXJBdE9mZnNldD4gbV9yZWdpc3Rl
cnM7Ci19OworYm9vbCBwYXJzZVVud2luZEluZm8oQ29kZUJsb2NrKiwgdm9pZCosIHNpemVfdCwg
R2VuZXJhdGVkRnVuY3Rpb24pOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU4LDIwICs2NTgsMjMgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKHZpc2l0b3ItPmlubGluZUNhbGxGcmFtZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCi0gICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogY3VycmVudENhbGxl
ZVNhdmVzID0gbV9jb2RlQmxvY2sgPyBtX2NvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygp
IDogbnVsbHB0cjsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGN1cnJlbnRDYWxsZWVT
YXZlcyA9IG1fY29kZUJsb2NrID8gbV9jb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSA6
IG51bGxwdHI7CiAKICAgICAgICAgaWYgKCFjdXJyZW50Q2FsbGVlU2F2ZXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgVk0mIHZtID0gbV9jYWxsRnJhbWUtPnZtKCk7Ci0gICAgICAg
IFJlZ2lzdGVyU2F2ZU1hcCogYWxsQ2FsbGVlU2F2ZXNNYXAgPSB2bS5nZXRBbGxDYWxsZWVTYXZl
UmVnaXN0ZXJzTWFwKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVTYXZlQmFzZSA9
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoKSAtIDEpOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxs
Q2FsbGVlU2F2ZXMgPSB2bS5nZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAg
ICAgIGludHB0cl90KiBmcmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3QqPihtX2NhbGxG
cmFtZS0+cmVnaXN0ZXJzKCkpOwogCi0gICAgICAgIGludHB0cl90KiBjYWxsZWVTYXZlcyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3QqPihtX2NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpICsgY2Fs
bGVlU2F2ZUJhc2Uub2Zmc2V0KCk7Ci0KLSAgICAgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJz
dCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKLSAgICAgICAgICAg
IGlmIChjdXJyZW50Q2FsbGVlU2F2ZXMtPmhhcyhyZWcpKQotICAgICAgICAgICAgICAgIHZtLmNh
bGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJbYWxsQ2FsbGVlU2F2ZXNNYXAtPmdldEluZGV4Rm9yKHJl
ZyldID0gY2FsbGVlU2F2ZXNbY3VycmVudENhbGxlZVNhdmVzLT5nZXRJbmRleEZvcihyZWcpXTsK
KyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGN1cnJlbnRDYWxsZWVTYXZlcy0+c2l6
ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsr
KSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGN1cnJlbnRFbnRyeSA9IGN1cnJlbnRD
YWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgICAgICBpZiAoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCkuZ2V0KGN1cnJlbnRFbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiB2bUNhbGxlZVNhdmVzRW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+ZmluZChjdXJyZW50RW50cnkucmVnKCkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICB2bS5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW3ZtQ2FsbGVlU2F2ZXNFbnRy
eS0+b2Zmc2V0QXNJbmRleCgpXSA9ICooZnJhbWUgKyBjdXJyZW50RW50cnkub2Zmc2V0QXNJbmRl
eCgpKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotI2luY2x1ZGUgIlJlZ2lzdGVyU2F2ZU1hcC5o
IgorI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJT
ZXQuaCIKICNpbmNsdWRlICJUeXBlb2ZUeXBlLmgiCiAjaW5jbHVkZSAiVk0uaCIKQEAgLTE4MCwx
NiArMTgwLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOwog
Ci0gICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogY2FsbGVlU2F2ZXNNYXAgPSBjb2RlQmxvY2stPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxl
ZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIHVuc2ln
bmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOwogCi0gICAgICAgIGlmICgh
Y2FsbGVlU2F2ZXNNYXAtPnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZVZpcnR1YWxSZWdpc3RlciA9IHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgLSAxKSAr
IG9mZnNldFZpcnR1YWxSZWdpc3RlcjsKLQotICAgICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZp
cnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgewotICAgICAgICAg
ICAgaWYgKGNhbGxlZVNhdmVzTWFwLT5oYXMocmVnKSAmJiByZWcuaXNHUFIoKSkKLSAgICAgICAg
ICAgICAgICBzdG9yZVB0cihyZWcuZ3ByKCksIEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGJhc2VWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0SW5CeXRlcygpICsgY2FsbGVlU2F2ZXNNYXAtPmdl
dE9mZnNldEZvcihyZWcpKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBj
YWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgICAgICBpZiAoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCkuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBBZGRyZXNzKGZyYW1lUG9pbnRl
clJlZ2lzdGVyLCBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0SW5CeXRlcygpICsgZW50cnku
b2Zmc2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTk3LDE2ICsxOTUsMTQgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAKLSAgICAgICAgUmVnaXN0
ZXJTYXZlTWFwKiBjYWxsZWVTYXZlc01hcCA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOwotCi0gICAgICAgIGlmICghY2FsbGVlU2F2ZXNNYXAtPnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZpcnR1YWxSZWdpc3RlciA9
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzKCkgLSAxKTsKLQotICAgICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0
KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgewotICAgICAgICAgICAg
aWYgKGNhbGxlZVNhdmVzTWFwLT5oYXMocmVnKSAmJiByZWcuaXNHUFIoKSkKLSAgICAgICAgICAg
ICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGJhc2VWaXJ0dWFsUmVn
aXN0ZXIub2Zmc2V0SW5CeXRlcygpICsgY2FsbGVlU2F2ZXNNYXAtPmdldE9mZnNldEZvcihyZWcp
KSwgcmVnLmdwcigpKTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVz
ID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIHVuc2lnbmVkIHJl
Z2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgICAgICAKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICAgICAg
UmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgICAg
IGlmIChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQoZW50cnkucmVnKCkpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBlbnRyeS5vZmZzZXQoKSksIGVudHJ5LnJlZygpLmdwcigpKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMjI2LDExICsyMjIsMTQgQEAgcHVibGljOgogCiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyKSwgdGVt
cDEpOwogCi0gICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogYWxsQ2FsbGVlU2F2ZXNNYXAgPSBtX3Zt
LT5nZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJzTWFwKCk7Ci0KLSAgICAgICAgZm9yIChSZWcgcmVn
ID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsK
LSAgICAgICAgICAgIGlmIChhbGxDYWxsZWVTYXZlc01hcC0+aGFzKHJlZykgJiYgcmVnLmlzR1BS
KCkpCi0gICAgICAgICAgICAgICAgc3RvcmVQdHIocmVnLmdwcigpLCBBZGRyZXNzKHRlbXAxLCBh
bGxDYWxsZWVTYXZlc01hcC0+Z2V0T2Zmc2V0Rm9yKHJlZykpKTsKKyAgICAgICAgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gbV92bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lz
dGVyT2Zmc2V0cygpOworICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVl
U2F2ZXMtPnNpemUoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50
cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgICAgICBpZiAoUmVnaXN0ZXJTZXQ6
OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBBZGRyZXNzKHRl
bXAxLCBlbnRyeS5vZmZzZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNDAsNDYgKzIz
OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV92
bS0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlciksIHRlbXAxKTsKIAotICAgICAgICBSZWdpc3Rl
clNhdmVNYXAqIGFsbENhbGxlZVNhdmVzTWFwID0gbV92bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lz
dGVyc01hcCgpOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMg
PSBtX3ZtLT5nZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgICAgIHVuc2ln
bmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOwogICAgICAgICAKLSAg
ICAgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJl
ZyA9IHJlZy5uZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChhbGxDYWxsZWVTYXZlc01hcC0+aGFz
KHJlZykgJiYgcmVnLmlzR1BSKCkpCi0gICAgICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHRl
bXAxLCBhbGxDYWxsZWVTYXZlc01hcC0+Z2V0T2Zmc2V0Rm9yKHJlZykpLCByZWcuZ3ByKCkpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Cisg
ICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkp
OworICAgICAgICAgICAgaWYgKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChlbnRy
eS5yZWcoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBsb2FkUHRy
KEFkZHJlc3ModGVtcDEsIGVudHJ5Lm9mZnNldCgpKSwgZW50cnkucmVnKCkuZ3ByKCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY29weUNhbGxlZVNhdmVzRnJvbUZyYW1lVG9W
TUNhbGxlZVNhdmVzQnVmZmVyKGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9
IHsgUmVnaXN0ZXJTZXQ6Om5vblRlbXBSZWdpc3RlcnMoKSB9KQotICAgIHsKLSAgICAgICAgR1BS
UmVnIHRlbXAxID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDApOwotICAgICAgICBHUFJSZWcg
dGVtcDIgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMSk7Ci0gICAgICAgIEFTU0VSVCh0ZW1w
MiAhPSBJbnZhbGlkR1BSUmVnKTsKLQotICAgICAgICBBU1NFUlQoY29kZUJsb2NrKCkpOwotCi0g
ICAgICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sgb3IgdW5zYXZlZCBjYWxs
ZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZlcgotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIobV92bS0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlciksIHRlbXAxKTsK
LQotICAgICAgICBSZWdpc3RlclNhdmVNYXAqIGFsbENhbGxlZVNhdmVzTWFwID0gbV92bS0+Z2V0
QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCgpOwotICAgICAgICBSZWdpc3RlclNhdmVNYXAqIGN1
cnJlbnRDYWxsZWVTYXZlcyA9IGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0g
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVTYXZlQmFzZSA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSAt
IDEpOwotCi0gICAgICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6
bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7Ci0gICAgICAgICAgICBHUFJSZWcgcmVnVG9TdG9y
ZTsKLQotICAgICAgICAgICAgaWYgKGFsbENhbGxlZVNhdmVzTWFwLT5oYXMocmVnKSAmJiByZWcu
aXNHUFIoKSkgewotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2FsbGVlU2F2ZXMtPmhhcyhy
ZWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIExvYWQgY2FsbGVlU2F2ZSBmcm9tIHN0YWNr
IGludG8gdGVtcCByZWdpc3RlcgotICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVt
cDI7Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdp
c3RlciwgIGNhbGxlZVNhdmVCYXNlLm9mZnNldEluQnl0ZXMoKSArIGN1cnJlbnRDYWxsZWVTYXZl
cy0+Z2V0T2Zmc2V0Rm9yKHJlZykpLCByZWdUb1N0b3JlKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCBzdG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3Rs
eQotICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVnLmdwcigpOwotCi0gICAgICAg
ICAgICAgICAgc3RvcmVQdHIocmVnVG9TdG9yZSwgQWRkcmVzcyh0ZW1wMSwgYWxsQ2FsbGVlU2F2
ZXNNYXAtPmdldE9mZnNldEZvcihyZWcpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb1ZNQ2Fs
bGVlU2F2ZXNCdWZmZXIoY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzID0geyBS
ZWdpc3RlclNldDo6bm9uVGVtcFJlZ2lzdGVycygpIH0pCiAgICAgewogICAgICAgICBHUFJSZWcg
dGVtcDEgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMCk7CkBAIC0yOTEsMjQgKzI2MSwyNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sgb3Ig
dW5zYXZlZCBjYWxsZWVTYXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZlcgog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV92bS0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZl
ciksIHRlbXAxKTsKIAotICAgICAgICBSZWdpc3RlclNhdmVNYXAqIGFsbENhbGxlZVNhdmVzTWFw
ID0gbV92bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCgpOwotICAgICAgICBSZWdpc3Rl
clNhdmVNYXAqIGN1cnJlbnRDYWxsZWVTYXZlcyA9IGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlUmVn
aXN0ZXJzKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVTYXZlQmFzZSA9IHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMoKSAtIDEpOwotCi0gICAgICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsg
cmVnIDw9IFJlZzo6bGFzdCgpOyByZWcgPSByZWcubmV4dCgpKSB7CisgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IG1fdm0tPmdldEFsbENhbGxlZVNhdmVSZWdp
c3Rlck9mZnNldHMoKTsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGN1cnJlbnRDYWxs
ZWVTYXZlcyA9IGNvZGVCbG9jaygpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIHVu
c2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgICAgICAK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewog
ICAgICAgICAgICAgR1BSUmVnIHJlZ1RvU3RvcmU7Ci0KLSAgICAgICAgICAgIGlmIChhbGxDYWxs
ZWVTYXZlc01hcC0+aGFzKHJlZykgJiYgcmVnLmlzR1BSKCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoY3VycmVudENhbGxlZVNhdmVzLT5oYXMocmVnKSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRlbXAgcmVnaXN0ZXIKLSAgICAgICAg
ICAgICAgICAgICAgcmVnVG9TdG9yZSA9IHRlbXAyOwotICAgICAgICAgICAgICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsICBjYWxsZWVTYXZlQmFzZS5vZmZzZXRJ
bkJ5dGVzKCkgKyBjdXJyZW50Q2FsbGVlU2F2ZXMtPmdldE9mZnNldEZvcihyZWcpKSwgcmVnVG9T
dG9yZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIC8vIEp1
c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgcmVnVG9T
dG9yZSA9IHJlZy5ncHIoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzdG9y
ZVB0cihyZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCBhbGxDYWxsZWVTYXZlc01hcC0+Z2V0T2Zm
c2V0Rm9yKHJlZykpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
UmVnaXN0ZXJBdE9mZnNldCB2bUVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAg
ICAgICAgaWYgKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldCh2bUVudHJ5LnJlZygp
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZz
ZXQqIGN1cnJlbnRGcmFtZUVudHJ5ID0gY3VycmVudENhbGxlZVNhdmVzLT5maW5kKHZtRW50cnku
cmVnKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY3VycmVudEZyYW1lRW50cnkp
IHsKKyAgICAgICAgICAgICAgICAvLyBMb2FkIGNhbGxlZVNhdmUgZnJvbSBzdGFjayBpbnRvIHRl
bXAgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDI7CisgICAgICAg
ICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBjdXJyZW50RnJh
bWVFbnRyeS0+b2Zmc2V0KCkpLCByZWdUb1N0b3JlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIC8vIEp1c3Qgc3RvcmUgY2FsbGVlIHNhdmUgZGlyZWN0bHkKKyAgICAgICAg
ICAgICAgICByZWdUb1N0b3JlID0gdm1FbnRyeS5yZWcoKS5ncHIoKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgc3RvcmVQdHIocmVnVG9TdG9yZSwgQWRkcmVzcyh0ZW1wMSwgdm1FbnRyeS5v
ZmZzZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5jcHAJKHJldmlzaW9uIDE4ODU2OCkJKGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmNwcDoxODg1Njgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZU
TFJlZ2lzdGVyQXRPZmZzZXQuaCIKKworI2lmIEVOQUJMRShGVExfSklUKQorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CisKK3ZvaWQgUmVnaXN0ZXJBdE9mZnNldDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChyZWcoKSwgIiBhdCAiLCBvZmZz
ZXQoKSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRP
ZmZzZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJBdE9mZnNldC5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVnaXN0ZXJBdE9mZnNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMTggKzI0LDE4
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZUTFJlZ2lzdGVyQXRP
ZmZzZXQuaCIKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0LmgiCiAKLSNpZiBFTkFCTEUoRlRM
X0pJVCkKKyNpZiBFTkFCTEUoSklUKQogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7
CituYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBSZWdpc3RlckF0T2Zmc2V0OjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KHJlZygpLCAiIGF0ICIsIG9mZnNldCgp
KTsKIH0KIAotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAorfSAvLyBuYW1lc3BhY2UgSlNDCiAK
LSNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuaAkocmV2aXNp
b24gMTg4NTY4KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRP
ZmZzZXQuaDoxODg1NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRP
ZmZzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRlRMUmVnaXN0ZXJB
dE9mZnNldF9oCisjZGVmaW5lIEZUTFJlZ2lzdGVyQXRPZmZzZXRfaAorCisjaWYgRU5BQkxFKEZU
TF9KSVQpCisKKyNpbmNsdWRlICJSZWcuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitjbGFzcyBSZWdpc3RlckF0T2Zm
c2V0IHsKK3B1YmxpYzoKKyAgICBSZWdpc3RlckF0T2Zmc2V0KCkKKyAgICAgICAgOiBtX29mZnNl
dCgwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgUmVnaXN0ZXJBdE9mZnNldChSZWcgcmVnLCBw
dHJkaWZmX3Qgb2Zmc2V0KQorICAgICAgICA6IG1fcmVnKHJlZykKKyAgICAgICAgLCBtX29mZnNl
dChvZmZzZXQpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3JlZzsgfQorICAgIAorICAgIFJlZyByZWcoKSBjb25zdCB7IHJldHVybiBt
X3JlZzsgfQorICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiByZWcoKSA9PSBvdGhlci5yZWcoKSAmJiBv
ZmZzZXQoKSA9PSBvdGhlci5vZmZzZXQoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRv
cjwoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAocmVnKCkgIT0gb3RoZXIucmVnKCkpCisgICAgICAgICAgICByZXR1cm4gcmVnKCkgPCBvdGhl
ci5yZWcoKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldCgpIDwgb3RoZXIub2Zmc2V0KCk7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBSZWcgZ2V0UmVnKFJlZ2lzdGVyQXRPZmZzZXQqIHZhbHVlKSB7
IHJldHVybiB2YWx1ZS0+cmVnKCk7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVnIG1fcmVnOworICAgIHB0cmRpZmZfdCBt
X29mZnNldDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8vIEVO
QUJMRShGVExfSklUKQorCisjZW5kaWYgLy8gRlRMUmVnaXN0ZXJBdE9mZnNldF9oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCSh3b3JraW5n
IGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywxNSArMjMsMTUgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgRlRMUmVnaXN0ZXJBdE9mZnNldF9oCi0jZGVmaW5lIEZUTFJlZ2lzdGVyQXRP
ZmZzZXRfaAorI2lmbmRlZiBSZWdpc3RlckF0T2Zmc2V0X2gKKyNkZWZpbmUgUmVnaXN0ZXJBdE9m
ZnNldF9oCiAKLSNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiUmVnLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKK25hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBSZWdpc3RlckF0T2Zm
c2V0IHsKIHB1YmxpYzoKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIAogICAgIFJlZyBy
ZWcoKSBjb25zdCB7IHJldHVybiBtX3JlZzsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIGludCBvZmZzZXRBc0luZGV4KCkgY29uc3QgeyBy
ZXR1cm4gb2Zmc2V0KCkgLyBzaXplb2Yodm9pZCopOyB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTcyLDkg
KzczLDkgQEAgcHJpdmF0ZToKICAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7CiB9OwogCi19IH0gLy8g
bmFtZXNwYWNlIEpTQzo6RlRMCit9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKLSNlbmRpZiAvLyBGVExSZWdpc3Rl
ckF0T2Zmc2V0X2gKKyNlbmRpZiAvLyBSZWdpc3RlckF0T2Zmc2V0X2gKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRM
aXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1
ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKK1JlZ2lzdGVyQXRP
ZmZzZXRMaXN0OjpSZWdpc3RlckF0T2Zmc2V0TGlzdCgpIHsgfQorCitSZWdpc3RlckF0T2Zmc2V0
TGlzdDo6UmVnaXN0ZXJBdE9mZnNldExpc3QoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJTZXQsIE9mZnNl
dEJhc2VUeXBlIG9mZnNldEJhc2VUeXBlKQoreworICAgIHNpemVfdCBudW1iZXJPZlJlZ2lzdGVy
cyA9IHJlZ2lzdGVyU2V0Lm51bWJlck9mU2V0R1BScygpOworICAgIHB0cmRpZmZfdCBvZmZzZXQg
PSAwOworICAgIAorICAgIGlmIChvZmZzZXRCYXNlVHlwZSA9PSBGcmFtZVBvaW50ZXJCYXNlZCkK
KyAgICAgICAgb2Zmc2V0ID0gLShzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KG51bWJlck9mUmVnaXN0
ZXJzKSAqIHNpemVvZih2b2lkKikpOworCisgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgp
OyByZWcgPD0gUmVnOjpsYXN0KCk7cmVnID0gcmVnLm5leHQoKSkgeworICAgICAgICBpZiAocmVn
aXN0ZXJTZXQuZ2V0KHJlZykgJiYgcmVnLmlzR1BSKCkpIHsKKyAgICAgICAgICAgIGFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KHJlZywgb2Zmc2V0KSk7CisgICAgICAgICAgICBvZmZzZXQgKz0gc2l6
ZW9mKHZvaWQqKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNvcnQoKTsKK30KKwordm9pZCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdDo6c29ydCgpCit7CisgICAgc3RkOjpzb3J0KG1fcmVnaXN0ZXJz
LmJlZ2luKCksIG1fcmVnaXN0ZXJzLmVuZCgpKTsKK30KKwordm9pZCBSZWdpc3RlckF0T2Zmc2V0
TGlzdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludChsaXN0
RHVtcChtX3JlZ2lzdGVycykpOworfQorCitSZWdpc3RlckF0T2Zmc2V0KiBSZWdpc3RlckF0T2Zm
c2V0TGlzdDo6ZmluZChSZWcgcmVnKSBjb25zdAoreworICAgIHJldHVybiB0cnlCaW5hcnlTZWFy
Y2g8UmVnaXN0ZXJBdE9mZnNldCwgUmVnPihtX3JlZ2lzdGVycywgbV9yZWdpc3RlcnMuc2l6ZSgp
LCByZWcsIFJlZ2lzdGVyQXRPZmZzZXQ6OmdldFJlZyk7Cit9CisKK3Vuc2lnbmVkIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0OjppbmRleE9mKFJlZyByZWcpIGNvbnN0Cit7CisgICAgaWYgKFJlZ2lzdGVy
QXRPZmZzZXQqIHBvaW50ZXIgPSBmaW5kKHJlZykpCisgICAgICAgIHJldHVybiBwb2ludGVyIC0g
bV9yZWdpc3RlcnMuYmVnaW4oKTsKKyAgICByZXR1cm4gVUlOVF9NQVg7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVnaXN0ZXJBdE9mZnNldExpc3RfaAorI2RlZmlu
ZSBSZWdpc3RlckF0T2Zmc2V0TGlzdF9oCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
UmVnaXN0ZXJBdE9mZnNldC5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdCB7CitwdWJsaWM6CisgICAgZW51
bSBPZmZzZXRCYXNlVHlwZSB7IEZyYW1lUG9pbnRlckJhc2VkLCBaZXJvQmFzZWQgfTsKKworICAg
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QoUmVnaXN0
ZXJTZXQsIE9mZnNldEJhc2VUeXBlID0gRnJhbWVQb2ludGVyQmFzZWQpOworCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAg
ICAgIG1fcmVnaXN0ZXJzLmNsZWFyKCk7CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fcmVnaXN0ZXJzLnNpemUoKTsKKyAgICB9CisKKyAgICBSZWdp
c3RlckF0T2Zmc2V0JiBhdChzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV9y
ZWdpc3RlcnMuYXQoaW5kZXgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0IHJlZ2lzdGVyQXRPZmZzZXQpCisgICAgeworICAgICAgICBtX3JlZ2lzdGVycy5h
cHBlbmQocmVnaXN0ZXJBdE9mZnNldCk7CisgICAgfQorCisgICAgdm9pZCBzb3J0KCk7CisgICAg
UmVnaXN0ZXJBdE9mZnNldCogZmluZChSZWcpIGNvbnN0OworICAgIHVuc2lnbmVkIGluZGV4T2Yo
UmVnKSBjb25zdDsgLy8gUmV0dXJucyBVSU5UX01BWCBpZiBub3QgZm91bmQuCisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFJlZ2lzdGVyQXRPZmZzZXQ+IG1fcmVnaXN0ZXJzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gUmVnaXN0
ZXJBdE9mZnNldExpc3RfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lz
dGVyU2F2ZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclNhdmVNYXAuY3BwCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2F2ZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJTYXZlTWFwLmgiCi0KLSNpZiBFTkFC
TEUoSklUKQotCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLVJlZ2lzdGVyU2F2ZU1hcDo6UmVnaXN0ZXJTYXZlTWFwKFJlZ2lzdGVyU2V0IHJlZ2lzdGVy
cykKLXsKLSAgICBtX251bWJlck9mUmVnaXN0ZXJzID0gMDsKLSAgICBmb3IgKFJlZyByZWcgPSBS
ZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTtyZWcgPSByZWcubmV4dCgpKSB7Ci0gICAg
ICAgIGlmIChyZWdpc3RlcnMuZ2V0KHJlZykgJiYgcmVnLmlzR1BSKCkpIHsKLSAgICAgICAgICAg
IG1faW5kZXhGb3JSZWdpc3Rlci5zZXQocmVnLmluZGV4KCksIG1fbnVtYmVyT2ZSZWdpc3RlcnMp
OwotICAgICAgICAgICAgbV9udW1iZXJPZlJlZ2lzdGVycysrOwotICAgICAgICB9Ci0gICAgfQot
fQotCi11bnNpZ25lZCBSZWdpc3RlclNhdmVNYXA6OmdldEluZGV4Rm9yKFJlZyByZWcpIGNvbnN0
Ci17Ci0gICAgYXV0byBpdGVyID0gbV9pbmRleEZvclJlZ2lzdGVyLmZpbmQocmVnLmluZGV4KCkp
OwotICAgIEFTU0VSVChpdGVyICE9IG1faW5kZXhGb3JSZWdpc3Rlci5lbmQoKSk7Ci0gICAgcmV0
dXJuIGl0ZXItPnZhbHVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVO
QUJMRShKSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTYXZl
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNh
dmVNYXAuaAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclNhdmVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVnaXN0ZXJT
YXZlTWFwX2gKLSNkZWZpbmUgUmVnaXN0ZXJTYXZlTWFwX2gKLQotI2lmIEVOQUJMRShKSVQpCi0K
LSNpbmNsdWRlICJHUFJJbmZvLmgiCi0jaW5jbHVkZSAiUmVnLmgiCi0jaW5jbHVkZSAiUmVnaXN0
ZXJTZXQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
Y2xhc3MgUmVnaXN0ZXJTYXZlTWFwIHsKLXB1YmxpYzoKLSAgICBSZWdpc3RlclNhdmVNYXAoUmVn
aXN0ZXJTZXQgcmVnaXN0ZXJzKTsKLQotICAgIHVuc2lnbmVkIHNpemUoKSB7IHJldHVybiBtX251
bWJlck9mUmVnaXN0ZXJzOyB9Ci0gICAgYm9vbCBoYXMoUmVnIHJlZykgeyByZXR1cm4gbV9pbmRl
eEZvclJlZ2lzdGVyLmNvbnRhaW5zKHJlZy5pbmRleCgpKTsgfQotICAgIHVuc2lnbmVkIG1heE9m
ZnNldCgpIHsgcmV0dXJuIHNpemUoKSAqIGNwdVJlZ2lzdGVyU2l6ZTsgfQotICAgIHVuc2lnbmVk
IGdldEluZGV4Rm9yKFJlZykgY29uc3Q7Ci0gICAgdW5zaWduZWQgZ2V0T2Zmc2V0Rm9yKFJlZyBy
ZWcpIGNvbnN0IHsgcmV0dXJuIGdldEluZGV4Rm9yKHJlZykgKiBjcHVSZWdpc3RlclNpemU7IH0K
LXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNwdVJlZ2lzdGVyU2l6ZSA9IHNp
emVvZihpbnRwdHJfdCk7Ci0KLSAgICB1bnNpZ25lZCBtX251bWJlck9mUmVnaXN0ZXJzOwotICAg
IEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPiA+IG1faW5kZXhGb3JSZWdp
c3RlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkK
LQotI2VuZGlmIC8vIFJlZ2lzdGVyU2F2ZU1hcF9oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDEx
ICsyMjgsNDUgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVT
YXZlUmVnaXN0ZXJzKCkKK3sKKyAgICBSZWdpc3RlclNldCByZXN1bHQ7CisjaWYgRU5BQkxFKEZU
TF9KSVQpCisjaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpCisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzApOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKKyAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTMyA9
PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFTU0VSVChHUFJJbmZvOjpy
ZWdDUzQgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTMyk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOworI2VsaWYgQ1BV
KEFSTTY0KQorICAgIC8vIExMVk0gbWlnaHQgc2F2ZSBhbmQgdXNlIGFsbCBBUk02NCBjYWxsZWUg
c2F2ZXMgc3BlY2lmaWVkIGluIHRoZSBBQkkuCisgICAgcmVzdWx0LnNldChBUk02NFJlZ2lzdGVy
czo6eDE5KTsKKyAgICByZXN1bHQuc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjApOworICAgIHJlc3Vs
dC5zZXQoQVJNNjRSZWdpc3RlcnM6OngyMSk7CisgICAgcmVzdWx0LnNldChBUk02NFJlZ2lzdGVy
czo6eDIyKTsKKyAgICByZXN1bHQuc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjMpOworICAgIHJlc3Vs
dC5zZXQoQVJNNjRSZWdpc3RlcnM6OngyNCk7CisgICAgcmVzdWx0LnNldChBUk02NFJlZ2lzdGVy
czo6eDI1KTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAgQVNTRVJUKEdQ
UkluZm86OnJlZ0NTMSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEFT
U0VSVChHUFJJbmZvOjpyZWdDUzIgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzIpOworI2Vsc2UKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyNlbmRpZgorI2Vu
ZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmFs
bFZNQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiB7CiAgICAgcmV0dXJuIFJlZ2lzdGVyU2V0KGxsaW50
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpLAogICAgICAgICBiYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSwKLSAgICAgICAgZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICAgICAgZGZnQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpLAorICAgICAgICBmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwog
fQogCiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsR1BScygpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYg
KzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdpc3RlclNldCBsbGludENhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBMTEludC4KICAg
ICBzdGF0aWMgUmVnaXN0ZXJTZXQgYmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJl
Z2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgYmFzZWxpbmUgSklULgogICAgIHN0YXRpYyBS
ZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVycyBzYXZlZCBh
bmQgdXNlZCBieSB0aGUgREZHIEpJVC4KKyAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgZnRsQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNl
ZCBieSB0aGUgRlRMIEpJVC4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsVk1DYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlvbiBvZiByZWdpc3RlcnMgc2F2ZWQgYW5kIHVzZWQgYnkg
YW55IFZNLgogICAgIHN0YXRpYyBSZWdpc3RlclNldCBub25UZW1wUmVnaXN0ZXJzKCk7IC8vIFRo
ZSB1bmlvbiBvZiBWTSBjYWxsZWUgc2F2ZSBhbmQgc3BlY2lhbCByZWdpc3RlcnMuCiAgICAgc3Rh
dGljIFJlZ2lzdGVyU2V0IGFsbEdQUnMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQAogI2luY2x1ZGUgIlBy
b3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRl
ICJSZWdFeHBPYmplY3QuaCIKLSNpbmNsdWRlICJSZWdpc3RlclNhdmVNYXAuaCIKKyNpbmNsdWRl
ICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVUeXBlLmgiCiAjaW5j
bHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92
aWRlckNhY2hlLmgiCkBAIC0yNDYsNyArMjQ2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBqaXRTdHVicyA9IHN0ZDo6
bWFrZV91bmlxdWU8SklUVGh1bmtzPigpOwotICAgIGFsbENhbGxlZVNhdmVSZWdpc3RlcnNNYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyU2F2ZU1hcD4oUmVnaXN0ZXJTZXQ6OmFsbFZNQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBhbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzID0g
c3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oUmVnaXN0ZXJTZXQ6OmFsbFZN
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpLCBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6WmVyb0Jhc2VkKTsK
ICNlbmRpZgogICAgIGFyaXR5Q2hlY2tEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDb21tb25TbG93
UGF0aHM6OkFyaXR5Q2hlY2tEYXRhPigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogY2xhc3MgTGVnYWN5UHJvZmlsZXI7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxl
OwogY2xhc3MgUmVnRXhwQ2FjaGU7Ci1jbGFzcyBSZWdpc3RlclNhdmVNYXA7CitjbGFzcyBSZWdp
c3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQ
cm92aWRlcjsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CkBAIC0zNDksOSArMzQ5LDkgQEAg
cHVibGljOgogICAgIH0KICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lz
dGVyU2F2ZU1hcD4gYWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IGFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHM7CiAg
ICAgCi0gICAgUmVnaXN0ZXJTYXZlTWFwKiBnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJzTWFwKCkg
eyByZXR1cm4gYWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcC5nZXQoKTsgfQorICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCkgeyByZXR1cm4g
YWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cy5nZXQoKTsgfQogCiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tbW9uU2xvd1BhdGhzOjpBcml0eUNoZWNrRGF0
YT4gYXJpdHlDaGVja0RhdGE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259408</attachid>
            <date>2015-08-19 14:51:59 -0700</date>
            <delta_ts>2015-09-14 10:59:58 -0700</delta_ts>
            <desc>Patch with more updates</desc>
            <filename>148167-3.patch</filename>
            <type>text/plain</type>
            <size>100431</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDE1LTA4LTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIGpzYy10YWlsY2FsbDogVW5pZnkgUmVnaXN0ZXIgT2Zmc2V0IGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpcyBwcmltYXJpbHkg
YSByZWZhY3RvcmluZyBjaGFuZ2UuCisKKyAgICAgICAgTW92ZWQgZnRsL0ZUTFJlZ2lzdGVyQXRP
ZmZzZXQue2NwcCxofSB0byBqaXQvUmVnaXN0ZXJBdE9mZnNldC57Y3BwLGh9LgorICAgICAgICBG
YWN0b3JlZCBvdXQgdGhlIHZlY3RvciBvZiBSZWdpc3RlckF0T2Zmc2V0cyBpbiBmdGwvRlRMVW53
aW5kSW5mby57Y3BwLGh9IGludG8gYSBuZXcKKyAgICAgICAgY2xhc3MgaW4gaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LntjcHAsaH0uCisgICAgICAgIEVsaW1pbnRlZCBVbndpbmRJbmZvIGFuZCBj
aGFuZ2VkIFVud2luZEluZm86OnBhcnNlKCkgaW50byBhIHN0YW5kYWxvbmUgZnVuY3Rpb24gbmFt
ZWQgcGFyc2VVbndpbmRJbmZvLgorICAgICAgICBUaGF0IHN0YW5kYWxvbmUgZnVuY3Rpb24gbm93
IHJldHVybnMgdGhlIGNhbGxlZSBzYXZlcyBSZWdpc3RlckF0T2Zmc2V0TGlzdC4gIFRoaXMgaXMg
c3RvcmVkIGluIHRoZQorICAgICAgICBjb2RlIGJsb2NrIGFuZCB1c2VkIGluc3RlYWQgb2YgVW53
aW5kSW5mby4KKyAgICAgICAgQWRkZWQgYSBsaXR0bGUgbW9yZSBmdW5jdGlvbmFsaXR5IHRvIFJl
Z2lzdGVyQXRPZmZzZXRMaXN0IHRvIHVzZSBpdCBpbnN0ZWFkIG9mIFJlZ2lzdGVyU2F2ZU1hcCBh
bmQKKyAgICAgICAgcmVwbGFjZWQgYWxsIG9jY3VyYW5jZXMgb2YgUmVnaXN0ZXJTYXZlTWFwLgor
ICAgICAgICBFbGltaW5hdGVkIGppdC9SZWdpc3RlclNhdmVNYXAue2NwcCxofS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y2FsbGVlU2F2
ZVJlZ2lzdGVycyk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjptbUFsbG9jYXRlRGF0YVNlY3Rpb24pOgorICAgICAgICAqIGZ0
bC9GVExKSVRDb2RlLmg6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGZ0bC9GVExSZWdpc3Rl
ckF0T2Zmc2V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmdGwvRlRMUmVnaXN0ZXJBdE9mZnNl
dC5oOiBSZW1vdmVkLgorICAgICAgICAqIGZ0bC9GVExVbndpbmRJbmZvLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpwYXJzZVVud2luZEluZm8pOgorICAgICAgICAoSlNDOjpGVEw6OlVud2luZElu
Zm86OlVud2luZEluZm8pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6OlVud2luZEluZm86
On5VbndpbmRJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpVbndpbmRJbmZvOjpw
YXJzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6VW53aW5kSW5mbzo6ZHVtcCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6VW53aW5kSW5mbzo6ZmluZCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkZUTDo6VW53aW5kSW5mbzo6aW5kZXhPZik6IERlbGV0ZWQuCisgICAgICAg
ICogZnRsL0ZUTFVud2luZEluZm8uaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHA6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6OmNvcHlDYWxsZWVTYXZlc1RvVk1D
YWxsZWVTYXZlc0J1ZmZlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc0Zyb21GcmFtZU9y
UmVnaXN0ZXJUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmNvcHlDYWxsZWVTYXZlc0Zyb21GcmFtZVRvVk1DYWxsZWVTYXZlc0J1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgICogaml0L1JlZ2lzdGVyQXRPZmZzZXQuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwLgorICAgICAg
ICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0OjpkdW1wKToKKyAgICAgICAgKEpTQzo6RlRMOjpSZWdp
c3RlckF0T2Zmc2V0OjpkdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJBdE9m
ZnNldC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVy
QXRPZmZzZXQuaC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6cmVnKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldDo6b2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJBdE9mZnNldDo6b2Zmc2V0QXNJbmRleCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyQXRPZmZz
ZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpGVEw6OlJlZ2lzdGVyQXRPZmZzZXQ6OnJl
Zyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6UmVnaXN0ZXJBdE9mZnNldDo6b2Zmc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpSZWdpc3RlckF0T2Zmc2V0OjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldExpc3Q6OlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldExpc3Q6OnNvcnQpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZHVtcCk6CisgICAgICAgIChKU0M6OlJl
Z2lzdGVyQXRPZmZzZXRMaXN0OjpmaW5kKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNl
dExpc3Q6OmluZGV4T2YpOgorICAgICAgICAqIGppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmNsZWFyKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJBdE9mZnNldExpc3Q6OnNpemUpOgorICAgICAgICAoSlNDOjpSZWdp
c3RlckF0T2Zmc2V0TGlzdDo6YXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlckF0T2Zmc2V0TGlz
dDo6YXBwZW5kKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTYXZlTWFwLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTYXZlTWFwLmg6IFJlbW92ZWQuCisgICAgICAgICogaml0
L1JlZ2lzdGVyU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNh
dmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjphbGxWTUNhbGxlZVNhdmVSZWdp
c3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6YWxsR1BScyk6CisgICAgICAgICog
aml0L1JlZ2lzdGVyU2V0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChK
U0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6
Z2V0Q1RJU3R1Yik6CisgICAgICAgIChKU0M6OlZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJP
ZmZzZXRzKToKKyAgICAgICAgKEpTQzo6Vk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3RlcnNNYXAp
OiBEZWxldGVkLgorCiAyMDE1LTA4LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUu
Y29tPgogCiAgICAgICAgIGpzYy10YWlsY2FsbDogU3RvcCBzYXZpbmcgYW5kIHJlc3RvcmluZyBh
bGwgY2FsbGVlIHNhdmVzIG9uIHZtRW50cnkgLyBleGl0IGZvciBwbGF0Zm9ybXMgd2l0aCBwZXIg
ZnVuY3Rpb24gY2FsbGVlIHNhdmVzIGhhbmRsaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM2OCw4ICszNjgsOSBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5jcHAKICAgICBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCiAgICAg
aml0L1JlZy5jcHAKKyAgICBqaXQvUmVnaXN0ZXJBdE9mZnNldC5jcHAKKyAgICBqaXQvUmVnaXN0
ZXJBdE9mZnNldExpc3QuY3BwCiAgICAgaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdl
bmVyYXRvci5jcHAKLSAgICBqaXQvUmVnaXN0ZXJTYXZlTWFwLmNwcAogICAgIGppdC9SZWdpc3Rl
clNldC5jcHAKICAgICBqaXQvUmVwYXRjaC5jcHAKICAgICBqaXQvU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmNwcApAQCAtODg3LDcgKzg4OCw2IEBAIGlmIChFTkFCTEVfRlRMX0pJVCkKICAgICAg
ICAgZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCiAgICAgICAgIGZ0bC9GVExPdXRwdXQuY3BwCiAgICAg
ICAgIGZ0bC9GVExSZWNvdmVyeU9wY29kZS5jcHAKLSAgICAgICAgZnRsL0ZUTFJlZ2lzdGVyQXRP
ZmZzZXQuY3BwCiAgICAgICAgIGZ0bC9GVExTYXZlUmVzdG9yZS5jcHAKICAgICAgICAgZnRsL0ZU
TFNsb3dQYXRoQ2FsbC5jcHAKICAgICAgICAgZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTg4NTY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw2IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxmdGxcRlRMT3BlcmF0aW9ucy5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxmdGxcRlRMT3V0cHV0LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGZ0bFxGVExSZWNvdmVyeU9wY29kZS5jcHAiIC8+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxmdGxcRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxmdGxcRlRMU2F2ZVJlc3RvcmUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cZnRsXEZUTFNsb3dQYXRoQ2FsbC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxmdGxcRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCIgLz4KQEAgLTYzNCw4ICs2
MzMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFNldHVwVmFyYXJnc0ZyYW1l
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlckF0T2Zmc2V0LmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlckF0T2Zmc2V0TGlz
dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2
YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGppdFxSZWdpc3RlclNhdmVNYXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aml0XFJlZ2lzdGVyU2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxS
ZXBhdGNoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IuY3BwIiAvPgpAQCAtMTI0OSw3ICsxMjQ5LDYgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPcGVyYXRpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxmdGxcRlRMT3V0cHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxmdGxcRlRMUmVjb3ZlcnlPcGNvZGUuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGZ0bFxGVExSZWdpc3RlckF0T2Zmc2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxmdGxcRlRMU2F2ZVJlc3RvcmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0
bFxGVExTbG93UGF0aENhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxG
VExTbG93UGF0aENhbGxLZXkuaCIgLz4KQEAgLTEzOTksOCArMTM5OCw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxqaXRcU2V0dXBWYXJhcmdzRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGppdFxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFJlZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGppdFxSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caml0XFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyU2F2ZU1hcC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyU2V0LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVwYXRjaC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caml0XFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIiAvPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zODEsOCArMzgxLDYgQEAKIAkJMEY2QjFDQkExODYxMjQ0QzAwODQ1RDk3IC8qIFJl
Z2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2QjFDQjgxODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2Vy
dmF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNkIxQ0JEMTg2MTI0NkEwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbldy
YXBwZXJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2QjFDQkIxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9u
V3JhcHBlckdlbmVyYXRvci5jcHAgKi87IH07CiAJCTBGNkIxQ0JFMTg2MTI0NkEwMDg0NUQ5NyAv
KiBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0JDMTg2MTI0NkEwMDg0NUQ5NyAv
KiBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjZCMUNDMzE4NjJDNDc4MDA4NDVE
OTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNCRjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0
ZXJBdE9mZnNldC5jcHAgKi87IH07Ci0JCTBGNkIxQ0M0MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExS
ZWdpc3RlckF0T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjZCMUNDMDE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNkIx
Q0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0MxMTg2MkM0NzgwMDg0NUQ5NyAv
KiBGVExVbndpbmRJbmZvLmNwcCAqLzsgfTsKIAkJMEY2QjFDQzYxODYyQzQ3ODAwODQ1RDk3IC8q
IEZUTFVud2luZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNkIxQ0MyMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2QzczNTAxQUM5
Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkM3MzRFMUFDOUY5OUYwMEJFMTY4
MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgKi87IH07CkBAIC05NzQsOCArOTcyLDgg
QEAKIAkJNjUxMTIzMDcxNDA0NkIwQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMTIyRTUxNDA0NjlCQTAw
MkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovOyB9OwogCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZG
OEIgLyogQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTE0RjIxNzE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjUzMDNENjQxNDQ3QjlF
MTAwRDNGOTA0IC8qIFBhcnNlclRva2Vucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjUzMDNENjMxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNlclRva2Vu
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1
M0Q1MDhBMUI1RDlGOUMwMERENEJDRCAvKiBSZWdpc3RlclNhdmVNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUQ5QjE5MUI1RDlCNzUwMDk4NTU2
RCAvKiBSZWdpc3RlclNhdmVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk2NTNENTA4QjFCNURDMjkwMDBERDRCQ0QgLyogUmVnaXN0ZXJTYXZl
TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
QUQ5QjE4MUI1RDlCNzUwMDk4NTU2RCAvKiBSZWdpc3RlclNhdmVNYXAuY3BwICovOyB9OworCQk2
NTQwQzdBMDFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQwQzc5RTFCODJEOUNFMDAw
RjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgKi87IH07CisJCTY1NDBDN0ExMUI4MkUxQzMw
MDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQwQzc5QzFCODJEOTlEMDAwRjZCNzkgLyogUmVn
aXN0ZXJBdE9mZnNldExpc3QuY3BwICovOyB9OwogCQk2NTQ2RjUyMTFBMzJCMzEzMDA2RjA3RDUg
LyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NDZGNTFGMUEzMkE1OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVu
Y3Rpb24uY3BwICovOyB9OwogCQk2NTUyNUZDNTFBNkREODAxMDA3QjU0OTUgLyogTnVsbFNldHRl
ckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1NTI1RkMzMUE2REQzQjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVyRnVuY3Rpb24uY3BwICov
OyB9OwogCQk2NTUzQTMzMTE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTUzQTMyRjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAg
Ki87IH07CkBAIC0yMTI1LDggKzIxMjMsNiBAQAogCQkwRjZCMUNCODE4NjEyNDRDMDA4NDVEOTcg
LyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25X
cmFwcGVyR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNkIxQ0JDMTg2MTI0NkEwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNl
cnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGNkIxQ0JGMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0
T2Zmc2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFJlZ2lz
dGVyQXRPZmZzZXQuY3BwOyBwYXRoID0gZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjZCMUNDMDE4NjJDNDc4MDA4NDVEOTcgLyogRlRM
UmVnaXN0ZXJBdE9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExS
ZWdpc3RlckF0T2Zmc2V0Lmg7IHBhdGggPSBmdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUNDMTE4NjJDNDc4MDA4NDVEOTcgLyogRlRM
VW53aW5kSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExV
bndpbmRJbmZvLmNwcDsgcGF0aCA9IGZ0bC9GVExVbndpbmRJbmZvLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMVW53aW5kSW5mby5oOyBw
YXRoID0gZnRsL0ZUTFVud2luZEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY2QzczNEUxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZhcmlhYmxlV3JpdGVGaXJlRGV0
YWlsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2OTgsNiArMjY5NCwxMCBA
QAogCQk2NTJBM0EyMzE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9wY29kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBNjRET3Bjb2RlLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIv
QVJNNjQvQTY0RE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTMwM0Q2
MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhcnNlclRva2Vucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5TmFtZUFycmF5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NDBDNzlDMUI4MkQ5OUQwMDBGNkI3OSAvKiBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1
NDBDNzlEMUI4MkQ5OUQwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlckF0T2Zmc2V0TGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2NTQwQzc5RTFCODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0
ZXJBdE9mZnNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdp
c3RlckF0T2Zmc2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0MEM3OUYx
QjgyRDlDRTAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJBdE9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTQ2RjUxRjFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBO
dWxsR2V0dGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdl
U3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNjU0NkY1MjAx
QTMyQTU5QzAwNkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOdWxsR2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjU1MjVGQzMxQTZERDNCMzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOdWxsU2V0dGVyRnVu
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjcxNiw4ICsyNzE2LDYg
QEAKIAkJNjU4RDNBNTUxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNRW50cnlSZWNvcmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlm
aWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCTY1OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAv
KiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0
Q29tcGlsYXRpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTg3RjJG
MTY4MjhBN0UwMDNDMkY4RCAvKiBVbnVzZWRQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVudXNlZFBvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNjVBRDlCMTgxQjVEOUI3NTAwOTg1NTZEIC8qIFJlZ2lzdGVyU2F2ZU1hcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpc3RlclNhdmVNYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NUFEOUIxOTFCNUQ5Qjc1MDA5ODU1NkQgLyogUmVn
aXN0ZXJTYXZlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVy
U2F2ZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUMwMjg0RjE3MTc5NUUy
MDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQVJNdjdEaXNhc3NlbWJsZXIuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVy
L0FSTXY3RGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVD
MDI4NUExNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUk12N0RPcGNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NUMwMjg1QjE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTXY3RE9wY29kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc3Nyw4ICszNzc1LDYgQEAKIAkJCQkwRkVBMEEwNjE3
MDUxM0RCMDBCQjcyMkMgLyogRlRMT3V0cHV0LmggKi8sCiAJCQkJMEY0ODUzMjUxODdERkRFQzAw
ODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCAqLywKIAkJCQkwRjQ4NTMyNjE4N0RGREVD
MDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCAqLywKLQkJCQkwRjZCMUNCRjE4NjJDNDc4
MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAgKi8sCi0JCQkJMEY2QjFDQzAxODYy
QzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCAqLywKIAkJCQkwRkNFRkFBOTE4
MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuY3BwICovLAogCQkJCTBGQ0VGQUFBMTgw
NEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5oICovLAogCQkJCTBGMjVGMUFBMTgxNjM1
RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwICovLApAQCAtMzk2MSwyMiArMzk1Nywy
NCBAQAogCQkJCTBGQzcxMkUxMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oICovLAogCQkJCUE3NkY1NEEyMTNCMjhBQUIwMEVGMkJDRSAvKiBK
SVRXcml0ZUJhcnJpZXIuaCAqLywKIAkJCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJ
bnRlcmZhY2VKSVQuaCAqLywKLQkJCQkwRkVFOTg0MjFBODkyMjc1MDA3NTRFOTMgLyogU2V0dXBW
YXJhcmdzRnJhbWUuY3BwICovLAotCQkJCTBGRUU5ODQwMUE4ODY1QjYwMDc1NEU5MyAvKiBTZXR1
cFZhcmFyZ3NGcmFtZS5oICovLAogCQkJCTBGRTgzNDE1MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAgKi8sCiAJCQkJMEZFODM0MTYxQTZFRjk3QjAwRDA0
ODQ3IC8qIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggKi8sCiAJCQkJMEZBN0E4RTkxOEI0
MTNDODAwNTIzNzFEIC8qIFJlZy5jcHAgKi8sCiAJCQkJMEZBN0E4RUExOEI0MTNDODAwNTIzNzFE
IC8qIFJlZy5oICovLAorCQkJCTY1NDBDNzlFMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0
T2Zmc2V0LmNwcCAqLywKKwkJCQk2NTQwQzc5RjFCODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0ZXJB
dE9mZnNldC5oICovLAorCQkJCTY1NDBDNzlDMUI4MkQ5OUQwMDBGNkI3OSAvKiBSZWdpc3RlckF0
T2Zmc2V0TGlzdC5jcHAgKi8sCisJCQkJNjU0MEM3OUQxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0LmggKi8sCiAJCQkJMEY2QjFDQkIxODYxMjQ2QTAwODQ1RDk3IC8qIFJl
Z2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgKi8sCiAJCQkJMEY2QjFDQkMx
ODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5o
ICovLAotCQkJCTY1QUQ5QjE4MUI1RDlCNzUwMDk4NTU2RCAvKiBSZWdpc3RlclNhdmVNYXAuY3Bw
ICovLAotCQkJCTY1QUQ5QjE5MUI1RDlCNzUwMDk4NTU2RCAvKiBSZWdpc3RlclNhdmVNYXAuaCAq
LywKIAkJCQkwRkMzMTQxNDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovLAog
CQkJCTBGQzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovLAogCQkJCTBG
MjRFNTQ5MTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmNwcCAqLywKIAkJCQkwRjI0RTU0QTE3
RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5oICovLAogCQkJCTBGQTdBOEVEMThDRTRGRDgwMDUy
MzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwICovLAogCQkJCTBGMjRFNTRCMTdF
RTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLywKKwkJCQkwRkVF
OTg0MjFBODkyMjc1MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuY3BwICovLAorCQkJCTBG
RUU5ODQwMUE4ODY1QjYwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5oICovLAogCQkJCUE3
MDlGMkVGMTdBMEFDMDQwMDUxMkU5OCAvKiBTbG93UGF0aENhbGwuaCAqLywKIAkJCQlBNzM4NjU1
MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oICovLAogCQkJCUE3RkY2
NDdBMThDNTJFODUwMEI1NTMwNyAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCAqLywKQEAgLTU2MzEs
NyArNTYyOSw2IEBACiAJCQkJNTI2NzhGOTExQTA0MTc3QzAwNkEzMDZEIC8qIENvbnRyb2xGbG93
UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjc4RjhGMUEwMzEwMDkwMDZBMzA2RCAv
KiBCYXNpY0Jsb2NrTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTBFMTlGNkRG
ODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTY1M0Q1MDhBMUI1RDlGOUMwMERENEJDRCAvKiBSZWdpc3RlclNhdmVN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MEVDMTlGNUIzRUEwMDk4RjVFQyAvKiBnZW5l
cmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVy
cyAqLywKIAkJCQlDNEY0QjZGMzFBMDVDOTQ0MDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvcl90ZW1w
bGF0ZXMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNUVGOUIxNTFBMUQ0M0ZBMDA3MDJFOTAgLyog
Z2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFk
ZXJzICovLApAQCAtNTk5Niw3ICs1OTkzLDYgQEAKIAkJCQkwRkVBMEExMTE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMT3V0cHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAx
QTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkExODdERkRF
QzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjZC
MUNDNDE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI1RjFCMjE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhD
YWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJGMzkgLyogRlRM
U2xvd1BhdGhDYWxsS2V5LmggaW4gSGVhZGVycyAqLywKQEAgLTcwMTEsNyArNzAwNyw2IEBACiAJ
CQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk2NTNENTA4QjFCNURDMjkwMDBERDRCQ0QgLyogUmVn
aXN0ZXJTYXZlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlFQTVDN0EyMTkwRjA4ODcwMDUw
OEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5RUE1QzdB
MTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0aC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUy
QjMxMEZGMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTcyNjYsNyArNzI2MSw2IEBACiAJCQkJMEYyMzVCREYxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTE9TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEyQTE3
MDk2Mjk2MDBCQjcyMkMgLyogRlRMT3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDg1
MzI5MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQkwRjZCMUNDMzE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNFRkFBQjE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2
ZVJlc3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5
IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYz
NUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NzUzMCw2ICs3NTI0LDggQEAKIAkJCQkwRjNFMDFBQTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJl
UG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY2MEFDMzE2NzQwRjg4MDAw
Mjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE3QThF
QjE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1NDBDN0Ex
MUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk2NTQwQzdBMDFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg0MTEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBD
YWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNCMzMgLyog
VmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw3ICs2OSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KIAog
I2lmIEVOQUJMRShKSVQpCi0jaW5jbHVkZSAiUmVnaXN0ZXJTYXZlTWFwLmgiCisjaW5jbHVkZSAi
UmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBA
IC0zMzAzLDkgKzMzMDMsMTQgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyZW9wdGltaXphdGlvblJl
dHJ5QwogI2lmIEVOQUJMRShKSVQpCiB2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lz
dGVycyhSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewotICAgIG1fY2FsbGVlU2F2
ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJTYXZlTWFwPihjYWxsZWVTYXZl
UmVnaXN0ZXJzKTsKKyAgICBtX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKIH0KIAordm9pZCBD
b2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVy
QXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0TGlzdCkKK3sKKyAgICBtX2NhbGxlZVNhdmVS
ZWdpc3RlcnMgPSBXVEY6Om1vdmUocmVnaXN0ZXJBdE9mZnNldExpc3QpOworfQorICAgIAogc3Rh
dGljIHNpemVfdCByb3VuZENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyhzaXplX3Qg
Y2FsbGVlU2F2ZVJlZ2lzdGVycykKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY3B1UmVn
aXN0ZXJTaXplID0gc2l6ZW9mKHZvaWQqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwotY2xhc3MgUmVnaXN0ZXJTYXZlTWFwOworY2xhc3MgUmVnaXN0ZXJBdE9m
ZnNldExpc3Q7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwogY2xhc3MgVHlwZUxvY2F0aW9uOwogCkBA
IC04MjQsOCArODI0LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkUmVvcHRpbWl6ZUZyb21M
b29wTm93KCk7CiAKICAgICB2b2lkIHNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQp
OworICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0
ZXJBdE9mZnNldExpc3Q+KTsKICAgICAKLSAgICBSZWdpc3RlclNhdmVNYXAqIGNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVNhdmVSZWdpc3RlcnMuZ2V0KCk7IH0K
KyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZVJlZ2lzdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoKTsgfQogI2Vsc2UgLy8gTm8gSklUCiAg
ICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mTExJbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIHNpemVfdCBsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkgeyByZXR1cm4gMDsgfTsKQEAgLTEwMjUsNyAr
MTAyNiw3IEBAIHByaXZhdGU6CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJ
bmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdM
TEludENhbGxzOwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJTYXZlTWFwPiBtX2NhbGxlZVNhdmVSZWdp
c3RlcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBtX2NhbGxl
ZVNhdmVSZWdpc3RlcnM7CiAgICAgQmFnPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0dWJJbmZvczsK
ICAgICBWZWN0b3I8QnlWYWxJbmZvPiBtX2J5VmFsSW5mb3M7CiAgICAgQmFnPENhbGxMaW5rSW5m
bz4gbV9jYWxsTGlua0luZm9zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsMTQgKzI1NiwyMiBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgICAgIHBpdm90W2ld
ID0gSlNWYWx1ZSgpOwogICAgIH0KIAotICAgIFJlZ2lzdGVyU2F2ZU1hcCogcmVnaXN0ZXJTYXZl
TG9jYXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgdW5zaWdu
ZWQgbnVtYmVyUmVnaXN0ZXJzVG9TYXZlID0gcmVnaXN0ZXJTYXZlTG9jYXRpb25zLT5zaXplKCk7
Ci0gICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJl
ZyA9IHJlZy5uZXh0KCkpIHsKLSAgICAgICAgaWYgKHJlZ2lzdGVyU2F2ZUxvY2F0aW9ucy0+aGFz
KHJlZykgJiYgcmVnLmlzR1BSKCkpCi0gICAgICAgICAgICAqKGJpdHdpc2VfY2FzdDxpbnRwdHJf
dCo+KHBpdm90KSArIG51bWJlclJlZ2lzdGVyc1RvU2F2ZSAtIHJlZ2lzdGVyU2F2ZUxvY2F0aW9u
cy0+Z2V0SW5kZXhGb3IocmVnKSAtIDEpID0gdm0tPmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJb
dm0tPmdldEFsbENhbGxlZVNhdmVSZWdpc3RlcnNNYXAoKS0+Z2V0SW5kZXhGb3IocmVnKV07Cisg
ICAgLy8gNikgQ29weSBvdXIgY2FsbGVlIHNhdmVzIHRvIGJ1ZmZlci4KKyAgICBSZWdpc3RlckF0
T2Zmc2V0TGlzdCogcmVnaXN0ZXJTYXZlTG9jYXRpb25zID0gY29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0g
dm0tPmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICBSZWdpc3RlclNldCBk
b250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVy
cygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291
bnQgPSByZWdpc3RlclNhdmVMb2NhdGlvbnMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQg
Y3VycmVudEVudHJ5ID0gcmVnaXN0ZXJTYXZlTG9jYXRpb25zLT5hdChpKTsKKyAgICAgICAgaWYg
KGRvbnRTYXZlUmVnaXN0ZXJzLmdldChjdXJyZW50RW50cnkucmVnKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQqIHZtQ2FsbGVlU2F2ZXNFbnRyeSA9
IGFsbENhbGxlZVNhdmVzLT5maW5kKGN1cnJlbnRFbnRyeS5yZWcoKSk7CisgICAgICAgIAorICAg
ICAgICAqKGJpdHdpc2VfY2FzdDxpbnRwdHJfdCo+KHBpdm90IC0gMSkgLSBjdXJyZW50RW50cnku
b2Zmc2V0QXNJbmRleCgpKSA9IHZtLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyW3ZtQ2FsbGVl
U2F2ZXNFbnRyeS0+b2Zmc2V0QXNJbmRleCgpXTsKICAgICB9CiAgICAgCi0gICAgLy8gNikgRml4
IHRoZSBjYWxsIGZyYW1lIHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCisgICAgLy8gNykg
Rml4IHRoZSBjYWxsIGZyYW1lIHRvIGhhdmUgdGhlIHJpZ2h0IGNvZGUgYmxvY2suCiAgICAgCiAg
ICAgKmJpdHdpc2VfY2FzdDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAxIC0gSlNTdGFjazo6Q29kZUJs
b2NrKSA9IGNvZGVCbG9jazsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21waWxlLmNwcAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZv
aWQgYWRqdXN0Q2FsbElDc0ZvclN0YWNrbWFwcyhWZWN0b3I8Q2EKIAogc3RhdGljIHZvaWQgZml4
RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgIFN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVENvZGUqIGppdENvZGUsIEdlbmVyYXRlZEZ1bmN0aW9uIGdlbmVyYXRlZEZ1
bmN0aW9uLAotICAgIFN0YWNrTWFwczo6UmVjb3JkTWFwJiByZWNvcmRNYXAsIGJvb2wgZGlkU2Vl
VW53aW5kSW5mbykKKyAgICBTdGFja01hcHM6OlJlY29yZE1hcCYgcmVjb3JkTWFwKQogewogICAg
IEdyYXBoJiBncmFwaCA9IHN0YXRlLmdyYXBoOwogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07CkBA
IC0zOTMsNyArMzkzLDYgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBz
KAogICAgIGV4aXRUaHVua0dlbmVyYXRvci5lbWl0VGh1bmtzKCk7CiAgICAgaWYgKGV4aXRUaHVu
a0dlbmVyYXRvci5kaWRUaGluZ3MoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0ZS5m
aW5hbGl6ZXItPm9zckV4aXQuc2l6ZSgpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkU2Vl
VW53aW5kSW5mbyk7CiAgICAgICAgIAogICAgICAgICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPExpbmtCdWZmZXI+KAogICAgICAgICAgICAgdm0sIGV4aXRUaHVua0dlbmVyYXRv
ciwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwpAQCAtODEzLDE2ICs4MTIsMTQg
QEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZQogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIGJvb2wgZGlkU2VlVW53aW5kSW5mbyA9IHN0YXRlLmppdENvZGUtPnVu
d2luZEluZm8ucGFyc2UoCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0
PiByZWdpc3Rlck9mZnNldHMgPSBwYXJzZVVud2luZEluZm8oCiAgICAgICAgIHN0YXRlLnVud2lu
ZERhdGFTZWN0aW9uLCBzdGF0ZS51bndpbmREYXRhU2VjdGlvblNpemUsCiAgICAgICAgIHN0YXRl
LmdlbmVyYXRlZEZ1bmN0aW9uKTsKICAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpIHsK
ICAgICAgICAgZGF0YUxvZygiVW53aW5kIGluZm8gZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBl
KHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLCAiOlxuIik7Ci0gICAg
ICAgIGlmIChkaWRTZWVVbndpbmRJbmZvKQotICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIHN0
YXRlLmppdENvZGUtPnVud2luZEluZm8sICJcbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBkYXRhTG9nKCIgICAgPG5vIHVud2luZCBpbmZvPlxuIik7CisgICAgICAgIGRhdGFMb2coIiAg
ICAiLCAqcmVnaXN0ZXJPZmZzZXRzLCAiXG4iKTsKICAgICB9CisgICAgc3RhdGUuZ3JhcGgubV9j
b2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RGOjptb3ZlKHJlZ2lzdGVyT2Zmc2V0
cykpOwogICAgIAogICAgIGlmIChzdGF0ZS5zdGFja21hcHNTZWN0aW9uICYmIHN0YXRlLnN0YWNr
bWFwc1NlY3Rpb24tPnNpemUoKSkgewogICAgICAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5
KCkpIHsKQEAgLTg0NSw3ICs4NDIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZl
cG9pbnQ6OlJlCiAgICAgICAgIFN0YWNrTWFwczo6UmVjb3JkTWFwIHJlY29yZE1hcCA9IHN0YXRl
LmppdENvZGUtPnN0YWNrbWFwcy5jb21wdXRlUmVjb3JkTWFwKCk7CiAgICAgICAgIGZpeEZ1bmN0
aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgICAgIHN0YXRlLCBzdGF0ZS5ncmFwaC5tX2Nv
ZGVCbG9jaywgc3RhdGUuaml0Q29kZS5nZXQoKSwgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24sCi0g
ICAgICAgICAgICByZWNvcmRNYXAsIGRpZFNlZVVud2luZEluZm8pOworICAgICAgICAgICAgcmVj
b3JkTWFwKTsKICAgICAgICAgaWYgKHN0YXRlLmFsbG9jYXRpb25GYWlsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExK
SVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRD
b2RlLmgJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBAIHB1YmxpYzoKICAgICBE
Rkc6OkNvbW1vbkRhdGEgY29tbW9uOwogICAgIFNlZ21lbnRlZFZlY3RvcjxPU1JFeGl0LCA4PiBv
c3JFeGl0OwogICAgIFN0YWNrTWFwcyBzdGFja21hcHM7Ci0gICAgVW53aW5kSW5mbyB1bndpbmRJ
bmZvOwogICAgIAogcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPERhdGFTZWN0aW9uPj4gbV9k
YXRhU2VjdGlvbnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3
ICsxNjEsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSAqICgKICAgICAgICAgICAgIGV4aXQubV92YWx1ZXMuc2l6ZSgpICsgbnVtTWF0
ZXJpYWxpemF0aW9ucyArIG1heE1hdGVyaWFsaXphdGlvbk51bUFyZ3VtZW50cykgKwogICAgICAg
ICByZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpICsKLSAgICAgICAgaml0Q29kZS0+
dW53aW5kSW5mby5tX3JlZ2lzdGVycy5zaXplKCkgKiBzaXplb2YodWludDY0X3QpKTsKKyAgICAg
ICAgY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKSAqIHNpemVvZih1aW50
NjRfdCkpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0
YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6
IDA7CiAgICAgRW5jb2RlZEpTVmFsdWUqIG1hdGVyaWFsaXphdGlvblBvaW50ZXJzID0gc2NyYXRj
aCArIGV4aXQubV92YWx1ZXMuc2l6ZSgpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBtYXRlcmlhbGl6
YXRpb25Bcmd1bWVudHMgPSBtYXRlcmlhbGl6YXRpb25Qb2ludGVycyArIG51bU1hdGVyaWFsaXph
dGlvbnM7CkBAIC0zMDUsOCArMzA1LDggQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAg
CiAgICAgLy8gQmVmb3JlIHdlIHN0YXJ0IG1lc3Npbmcgd2l0aCB0aGUgZnJhbWUsIHdlIG5lZWQg
dG8gc2V0IGFzaWRlIGFueSByZWdpc3RlcnMgdGhhdCB0aGUKICAgICAvLyBGVEwgY29kZSB3YXMg
cHJlc2VydmluZy4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBqaXRDb2RlLT51bndpbmRJbmZvLm1f
cmVnaXN0ZXJzLnNpemUoKTsgaS0tOykgewotICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gaml0Q29kZS0+dW53aW5kSW5mby5tX3JlZ2lzdGVyc1tpXTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdp
c3RlcnMoKS0+YXQoaSk7CiAgICAgICAgIGppdC5sb2FkNjQoCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGVu
dHJ5Lm9mZnNldCgpKSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKQEAgLTM4NSw3ICsz
ODUsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgaWYgKCF0b1NhdmUuZ2V0
KHJlZykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY3VycmVudE9mZnNldCArPSBz
aXplb2YoUmVnaXN0ZXIpOwotICAgICAgICB1bnNpZ25lZCB1bndpbmRJbmRleCA9IGppdENvZGUt
PnVud2luZEluZm8uaW5kZXhPZihyZWcpOworICAgICAgICB1bnNpZ25lZCB1bndpbmRJbmRleCA9
IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLT5pbmRleE9mKHJlZyk7CiAgICAgICAg
IGlmICh1bndpbmRJbmRleCA9PSBVSU5UX01BWCkgewogICAgICAgICAgICAgLy8gVGhlIEZUTCBj
b21waWxhdGlvbiBkaWRuJ3QgcHJlc2VydmUgdGhpcyByZWdpc3Rlci4gVGhpcyBtZWFucyB0aGF0
IGl0IGFsc28KICAgICAgICAgICAgIC8vIGRpZG4ndCB1c2UgdGhlIHJlZ2lzdGVyLiBTbyBpdHMg
dmFsdWUgYXQgdGhlIGJlZ2lubmluZyBvZiBPU1IgZXhpdCBzaG91bGQgYmUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmNwcAkocmV2
aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0
T2Zmc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJGVExSZWdpc3RlckF0T2Zmc2V0LmgiCi0KLSNpZiBFTkFCTEUoRlRMX0pJ
VCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewotCi12b2lkIFJlZ2lzdGVyQXRP
ZmZzZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQocmVn
KCksICIgYXQgIiwgb2Zmc2V0KCkpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmgJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBGVExSZWdpc3RlckF0T2Zmc2V0X2gKLSNkZWZpbmUg
RlRMUmVnaXN0ZXJBdE9mZnNldF9oCi0KLSNpZiBFTkFCTEUoRlRMX0pJVCkKLQotI2luY2x1ZGUg
IlJlZy5oIgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7Ci0KLWNsYXNzIFJlZ2lzdGVyQXRPZmZzZXQgewotcHVibGljOgotICAg
IFJlZ2lzdGVyQXRPZmZzZXQoKQotICAgICAgICA6IG1fb2Zmc2V0KDApCi0gICAgewotICAgIH0K
LSAgICAKLSAgICBSZWdpc3RlckF0T2Zmc2V0KFJlZyByZWcsIHB0cmRpZmZfdCBvZmZzZXQpCi0g
ICAgICAgIDogbV9yZWcocmVnKQotICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICB7Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVnOyB9
Ci0gICAgCi0gICAgUmVnIHJlZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnOyB9Ci0gICAgcHRyZGlm
Zl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAgCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHJlZygpID09IG90aGVyLnJlZygpICYmIG9mZnNldCgpID09IG90aGVyLm9m
ZnNldCgpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdpc3RlckF0
T2Zmc2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChyZWcoKSAhPSBvdGhlci5y
ZWcoKSkKLSAgICAgICAgICAgIHJldHVybiByZWcoKSA8IG90aGVyLnJlZygpOwotICAgICAgICBy
ZXR1cm4gb2Zmc2V0KCkgPCBvdGhlci5vZmZzZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGlj
IFJlZyBnZXRSZWcoUmVnaXN0ZXJBdE9mZnNldCogdmFsdWUpIHsgcmV0dXJuIHZhbHVlLT5yZWco
KTsgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQotcHJp
dmF0ZToKLSAgICBSZWcgbV9yZWc7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OwotfTsKLQotfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAotCi0jZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCi0KLSNl
bmRpZiAvLyBGVExSZWdpc3RlckF0T2Zmc2V0X2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExVbndpbmRJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFVud2luZEluZm8uY3BwCShyZXZpc2lvbiAxODg1NjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZEluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NCw2ICs5NCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRlRMVW53aW5kSW5m
by5oIgogCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNl
dExpc3QuaCIKKwogI2lmIEVOQUJMRShGVExfSklUKQogCiAjaWYgT1MoREFSV0lOKQpAQCAtMTAz
LDEwICsxMDYsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLVVud2lu
ZEluZm86OlVud2luZEluZm8oKSB7IH0KLVVud2luZEluZm86On5VbndpbmRJbmZvKCkgeyB9Ci0K
LQogbmFtZXNwYWNlIHsKICNpZiBPUyhEQVJXSU4pCiBzdHJ1Y3QgQ29tcGFjdFVud2luZCB7CkBA
IC02NTQsMTIgKzY1MywxMSBAQCBzdGF0aWMgdm9pZCBwYXJzZUZERUluc3RydWN0aW9ucyhjb25z
dCBGCiAjZW5kaWYKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1ib29sIFVud2luZEluZm86
OnBhcnNlKHZvaWQqIHNlY3Rpb24sIHNpemVfdCBzaXplLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5l
cmF0ZWRGdW5jdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcGFy
c2VVbndpbmRJbmZvKHZvaWQqIHNlY3Rpb24sIHNpemVfdCBzaXplLCBHZW5lcmF0ZWRGdW5jdGlv
biBnZW5lcmF0ZWRGdW5jdGlvbikKIHsKLSAgICBtX3JlZ2lzdGVycy5jbGVhcigpOwogICAgIFJF
TEVBU0VfQVNTRVJUKCEhc2VjdGlvbik7Ci0gICAgaWYgKCFzZWN0aW9uKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJl
Z2lzdGVyT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KCk7
CiAKICNpZiBPUyhEQVJXSU4pCiAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA+PSBzaXplb2YoQ29t
cGFjdFVud2luZCkpOwpAQCAtNjg5LDI3ICs2ODcsMjcgQEAgYm9vbCBVbndpbmRJbmZvOjpwYXJz
ZSh2b2lkKiBzZWN0aW9uLCBzaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBVTldJTkRfWDg2XzY0X1JFR19SQlg6Ci0gICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OmVieCwgb2Zmc2V0KSk7Cisg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJl
Z2lzdGVyczo6ZWJ4LCBvZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUjEyOgotICAgICAgICAgICAgbV9yZWdp
c3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTIsIG9mZnNldCkp
OworICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChY
ODZSZWdpc3RlcnM6OnIxMiwgb2Zmc2V0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIFVOV0lORF9YODZfNjRfUkVHX1IxMzoKLSAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjEzLCBvZmZz
ZXQpKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoWDg2UmVnaXN0ZXJzOjpyMTMsIG9mZnNldCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBVTldJTkRfWDg2XzY0X1JFR19SMTQ6Ci0gICAgICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxNCwg
b2Zmc2V0KSk7CisgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE0LCBvZmZzZXQpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVU5XSU5EX1g4Nl82NF9SRUdfUjE1OgotICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpy
MTUsIG9mZnNldCkpOworICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxNSwgb2Zmc2V0KSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFVOV0lORF9YODZfNjRfUkVHX1JCUDoKLSAg
ICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVy
czo6ZWJwLCBvZmZzZXQpKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJl
Z2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYnAsIG9mZnNldCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKQEAgLTcyMSw0NCArNzE5LDQ0
IEBAIGJvb2wgVW53aW5kSW5mbzo6cGFyc2Uodm9pZCogc2VjdGlvbiwgc2kKICNlbGlmIENQVShB
Uk02NCkKICAgICBSRUxFQVNFX0FTU0VSVCgoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfTU9ERV9N
QVNLKSA9PSBVTldJTkRfQVJNNjRfTU9ERV9GUkFNRSk7CiAgICAgCi0gICAgbV9yZWdpc3RlcnMu
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OmZwLCAwKSk7CisgICAgcmVn
aXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6ZnAs
IDApKTsKICAgICAKICAgICBpbnQzMl90IG9mZnNldCA9IDA7CiAgICAgaWYgKGVuY29kaW5nICYg
VU5XSU5EX0FSTTY0X0ZSQU1FX1gxOV9YMjBfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE5LCBvZmZzZXQgLT0gOCkp
OwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lz
dGVyczo6eDIwLCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTksIG9mZnNldCAtPSA4KSk7Cisg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OngyMCwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5X
SU5EX0FSTTY0X0ZSQU1FX1gyMV9YMjJfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIxLCBvZmZzZXQgLT0gOCkpOwot
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDIyLCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIG9mZnNldCAtPSA4KSk7CisgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OngyMiwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5E
X0FSTTY0X0ZSQU1FX1gyM19YMjRfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIzLCBvZmZzZXQgLT0gOCkpOwotICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDI0LCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjMsIG9mZnNldCAtPSA4KSk7CisgICAgICAg
IHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OngyNCwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FS
TTY0X0ZSQU1FX1gyNV9YMjZfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI1LCBvZmZzZXQgLT0gOCkpOwotICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI2
LCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjUsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ongy
Niwgb2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0
X0ZSQU1FX1gyN19YMjhfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI3LCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI4LCBv
ZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyOCwg
b2Zmc2V0IC09IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZS
QU1FX0Q4X0Q5X1BBSVIpIHsKLSAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRP
ZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE4LCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTksIG9mZnNldCAt
PSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OnE4LCBvZmZzZXQgLT0gOCkpOworICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwgb2Zmc2V0IC09
IDgpKTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX0QxMF9E
MTFfUEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChB
Uk02NFJlZ2lzdGVyczo6cTEwLCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTExLCBvZmZzZXQgLT0gOCkp
OworICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMTAsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMSwgb2Zmc2V0IC09IDgp
KTsKICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX0QxMl9EMTNf
UEFJUikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTEyLCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEzLCBvZmZzZXQgLT0gOCkpOwor
ICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjpxMTIsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMywgb2Zmc2V0IC09IDgpKTsK
ICAgICB9CiAgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX0QxNF9EMTVfUEFJ
UikgewotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6cTE0LCBvZmZzZXQgLT0gOCkpOwotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE1LCBvZmZzZXQgLT0gOCkpOworICAg
ICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjpxMTQsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNSwgb2Zmc2V0IC09IDgpKTsKICAg
ICB9CiAjZWxzZQogI2Vycm9yICJVbnJlY29nbml6ZWQgYXJjaGl0ZWN0dXJlIgpAQCAtNzgyLDIy
ICs3ODAsMjIgQEAgYm9vbCBVbndpbmRJbmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaQogICAg
ICAgICBpZiAocHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLnNhdmVkKSB7CiAgICAgICAgICAgICBz
d2l0Y2ggKGkpIHsKICAgICAgICAgICAgIGNhc2UgVU5XX1g4Nl82NF9yYng6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpl
YngsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJP
ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6ZWJ4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFVOV19YODZfNjRfcjEyOgotICAgICAgICAgICAgICAgIG1fcmVn
aXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjEyLCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7Cisg
ICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChY
ODZSZWdpc3RlcnM6OnIxMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVTldfWDg2XzY0X3IxMzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxMywgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJz
OjpyMTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5X
X1g4Nl82NF9yMTQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjpyMTQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZz
ZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rl
ck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4NlJlZ2lzdGVyczo6cjE0LCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19YODZfNjRfcjE1
OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KFg4
NlJlZ2lzdGVyczo6cjE1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5h
cHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6OnIxNSwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfWDg2XzY0X3JicDoKLSAgICAgICAg
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChYODZSZWdpc3RlcnM6
OmVicCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoWDg2UmVnaXN0ZXJzOjplYnAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgRFdfWDg2XzY0X1JFVF9hZGRyOgogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtODE2LDE5NiArODE0LDE5NiBAQCBib29sIFVud2luZEluZm86OnBhcnNlKHZv
aWQqIHNlY3Rpb24sIHNpCiAgICAgICAgIGlmIChwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0uc2F2
ZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAoaSkgewogICAgICAgICAgICAgY2FzZSBVTldfQVJN
NjRfeDA6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OngwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDAsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxOgotICAg
ICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4MSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFS
ZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxLCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjoKLSAgICAgICAgICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNl
dCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDM6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3Rl
cnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngzLCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6eDMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX0FSTTY0X3g0OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4NCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJz
W2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAg
IHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
Ong0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19B
Uk02NF94NToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6eDUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9m
ZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4NSwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDY6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6Ong2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDYsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3g3OgotICAgICAgICAgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4
NywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9m
ZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94ODoKLSAgICAgICAgICAgICAgICBtX3JlZ2lz
dGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDgsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAg
ICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjp4OCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVTldfQVJNNjRfeDk6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6Ong5LCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5X
X0FSTTY0X3gxMDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDEwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDEwLCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94
MTE6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OngxMSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHBy
b2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxMSwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDEyOgotICAg
ICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4MTIsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2Zh
UmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTIsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxMzoKLSAgICAgICAgICAg
ICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6
eDEzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDEzLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MTQ6Ci0gICAgICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNCwgcHJv
bG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkp
OworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OngxNCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDE1OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJz
LmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTUsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjp4MTUsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVU5XX0FSTTY0X3gxNjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQo
UmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE2LCBwcm9sb2cuc2F2ZWRSZWdpc3Rl
cnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6eDE2LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVO
V19BUk02NF94MTc6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9m
ZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngxNywg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
eDE4OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjp4MTgsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTgsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gxOToKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDE5LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE5LCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjA6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OngyMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDIxOgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyMjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDIyLCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6eDIyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF94MjM6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMywgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OngyMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfeDI0OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjQs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3gyNToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6eDI1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI1LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF94MjY6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OngyNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNiwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfeDI3OgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4MjcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tp
XS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3gyODoKLSAgICAgICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI4LCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6eDI4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVOV19BUk02NF9mcDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6ZnAsIHByb2xvZy5zYXZl
ZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpmcCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVTldfQVJNNjRfeDMwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MzAsIHByb2xvZy5zYXZlZFJlZ2lzdGVy
c1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAg
ICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
Ojp4MzAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5X
X0FSTTY0X3NwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpzcCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNl
dCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVy
T2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnNwLCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MDoK
LSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMCwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjE6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OnExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVy
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTEsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyOgotICAgICAgICAgICAgICAgIG1fcmVn
aXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMiwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwor
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQo
QVJNNjRSZWdpc3RlcnM6OnEyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJv
bG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFVOV19BUk02NF92MzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTMsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjpxMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfdjQ6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVy
QXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zm
c2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTQsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3Y1
OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFS
TTY0UmVnaXN0ZXJzOjpxNSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+
YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE1LCBwcm9sb2cuc2F2ZWRS
ZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92NjoKLSAgICAgICAg
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjc6Ci0gICAgICAgICAgICAgICAgbV9y
ZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnE3LCBwcm9s
b2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7
CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgVU5XX0FSTTY0X3Y4OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOCwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdp
c3RlcnM6OnE4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJl
Z2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVOV19BUk02NF92OToKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxOSwg
cHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNl
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRf
djEwOgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjpxMTAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBw
cm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNl
dHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTAsIHByb2xvZy5z
YXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxMToKLSAg
ICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6cTExLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNm
YVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBl
bmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTExLCBwcm9sb2cuc2F2ZWRSZWdp
c3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTI6Ci0gICAgICAgICAg
ICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6
OnExMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExMiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ld
Lm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjEzOgotICAgICAgICAgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTMsIHBy
b2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQp
KTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTMsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQg
KyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YxNDoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE0LCBwcm9sb2cuc2F2
ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6cTE0LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9n
LmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFVOV19BUk02NF92MTU6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5k
KFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExNSwgcHJvbG9nLnNhdmVkUmVnaXN0
ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3Rl
cnM6OnExNSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdp
c3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
TldfQVJNNjRfdjE2OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3Rl
ckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTYsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5v
ZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdp
c3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTYs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3YxNzoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTE3LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTE3LCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MTg6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnExOCwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnExOCwgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjE5OgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxMTksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMTksIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tp
XS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyMDoKLSAgICAgICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIwLCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTIwLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjE6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3Rl
cnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyMSwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIGFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjEs
IHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZz
ZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0
X3YyMjoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNl
dChBUk02NFJlZ2lzdGVyczo6cTIyLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsg
cHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZz
ZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTIyLCBwcm9sb2cu
c2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjM6Ci0g
ICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRS
ZWdpc3RlcnM6OnEyMywgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5j
ZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBw
ZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyMywgcHJvbG9nLnNhdmVkUmVn
aXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjI0OgotICAgICAgICAg
ICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJz
OjpxMjQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0
ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdp
c3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjQsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tp
XS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YyNToKLSAgICAgICAgICAgICAgICBt
X3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI1LCBw
cm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0
KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6cTI1LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0
ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVOV19BUk02NF92MjY6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3Rl
cnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyNiwgcHJvbG9nLnNh
dmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OnEyNiwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xv
Zy5jZmFSZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVTldfQVJNNjRfdjI3OgotICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVu
ZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMjcsIHByb2xvZy5zYXZlZFJlZ2lz
dGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICByZWdpc3Rlck9mZnNldHMtPmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjpxMjcsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVn
aXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VU5XX0FSTTY0X3YyODoKLSAgICAgICAgICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0
ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI4LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0u
b2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVn
aXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTI4
LCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVOV19BUk02
NF92Mjk6Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZz
ZXQoQVJNNjRSZWdpc3RlcnM6OnEyOSwgcHJvbG9nLnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCAr
IHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyT2Zm
c2V0cy0+YXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OnEyOSwgcHJvbG9n
LnNhdmVkUmVnaXN0ZXJzW2ldLm9mZnNldCArIHByb2xvZy5jZmFSZWdpc3Rlck9mZnNldCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVTldfQVJNNjRfdjMwOgot
ICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0
UmVnaXN0ZXJzOjpxMzAsIHByb2xvZy5zYXZlZFJlZ2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cu
Y2ZhUmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICByZWdpc3Rlck9mZnNldHMtPmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpxMzAsIHByb2xvZy5zYXZlZFJl
Z2lzdGVyc1tpXS5vZmZzZXQgKyBwcm9sb2cuY2ZhUmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVU5XX0FSTTY0X3YzMToKLSAgICAgICAg
ICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVy
czo6cTMxLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNbaV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lz
dGVyT2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXRzLT5hcHBlbmQoUmVn
aXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6cTMxLCBwcm9sb2cuc2F2ZWRSZWdpc3RlcnNb
aV0ub2Zmc2V0ICsgcHJvbG9nLmNmYVJlZ2lzdGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IC8vIG5vbi1zdGFuZGFyZCByZWdpc3RlciBiZWluZyBzYXZlZCBp
biBwcm9sb2cKQEAgLTEwMTcsMjUgKzEwMTUsOCBAQCBib29sIFVud2luZEluZm86OnBhcnNlKHZv
aWQqIHNlY3Rpb24sIHNpCiAjZW5kaWYKIAogI2VuZGlmCi0gICAgc3RkOjpzb3J0KG1fcmVnaXN0
ZXJzLmJlZ2luKCksIG1fcmVnaXN0ZXJzLmVuZCgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBVbndpbmRJbmZvOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0
LnByaW50KGxpc3REdW1wKG1fcmVnaXN0ZXJzKSk7Ci19Ci0KLVJlZ2lzdGVyQXRPZmZzZXQqIFVu
d2luZEluZm86OmZpbmQoUmVnIHJlZykgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ5QmluYXJ5U2Vh
cmNoPFJlZ2lzdGVyQXRPZmZzZXQsIFJlZz4obV9yZWdpc3RlcnMsIG1fcmVnaXN0ZXJzLnNpemUo
KSwgcmVnLCBSZWdpc3RlckF0T2Zmc2V0OjpnZXRSZWcpOwotfQotCi11bnNpZ25lZCBVbndpbmRJ
bmZvOjppbmRleE9mKFJlZyByZWcpIGNvbnN0Ci17Ci0gICAgaWYgKFJlZ2lzdGVyQXRPZmZzZXQq
IHBvaW50ZXIgPSBmaW5kKHJlZykpCi0gICAgICAgIHJldHVybiBwb2ludGVyIC0gbV9yZWdpc3Rl
cnMuYmVnaW4oKTsKLSAgICByZXR1cm4gVUlOVF9NQVg7CisgICAgcmVnaXN0ZXJPZmZzZXRzLT5z
b3J0KCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShyZWdpc3Rlck9mZnNldHMpOwogfQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFVud2luZEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFVud2luZEluZm8uaAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExVbndpbmRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIzICszMSwxMSBAQAog
I2lmIEVOQUJMRShGVExfSklUKQogCiAjaW5jbHVkZSAiRlRMR2VuZXJhdGVkRnVuY3Rpb24uaCIK
LSNpbmNsdWRlICJGVExSZWdpc3RlckF0T2Zmc2V0LmgiCitjbGFzcyBSZWdpc3RlckF0T2Zmc2V0
TGlzdDsKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi1zdHJ1Y3QgVW53aW5k
SW5mbyB7Ci0gICAgVW53aW5kSW5mbygpOwotICAgIH5VbndpbmRJbmZvKCk7Ci0gICAgCi0gICAg
Ym9vbCBwYXJzZSh2b2lkKiwgc2l6ZV90LCBHZW5lcmF0ZWRGdW5jdGlvbik7Ci0gICAgCi0gICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgUmVnaXN0ZXJBdE9mZnNl
dCogZmluZChSZWcpIGNvbnN0OwotICAgIHVuc2lnbmVkIGluZGV4T2YoUmVnKSBjb25zdDsgLy8g
UmV0dXJucyBVSU5UX01BWCBpZiBub3QgZm91bmQuCi0gICAgCi0gICAgVmVjdG9yPFJlZ2lzdGVy
QXRPZmZzZXQ+IG1fcmVnaXN0ZXJzOwotfTsKK3N0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zm
c2V0TGlzdD4gIHBhcnNlVW53aW5kSW5mbyh2b2lkKiwgc2l6ZV90LCBHZW5lcmF0ZWRGdW5jdGlv
bik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxODg1
NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NTgsMjAgKzY1OCwyNCBAQCBwcml2YXRlOgogICAgICAgICBp
ZiAodmlzaXRvci0+aW5saW5lQ2FsbEZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CiAjZW5k
aWYKLSAgICAgICAgUmVnaXN0ZXJTYXZlTWFwKiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSBtX2NvZGVC
bG9jayA/IG1fY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCkgOiBudWxscHRyOworICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVudENhbGxlZVNhdmVzID0gbV9jb2RlQmxv
Y2sgPyBtX2NvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpIDogbnVsbHB0cjsKIAogICAg
ICAgICBpZiAoIWN1cnJlbnRDYWxsZWVTYXZlcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBWTSYgdm0gPSBtX2NhbGxGcmFtZS0+dm0oKTsKLSAgICAgICAgUmVnaXN0ZXJTYXZlTWFw
KiBhbGxDYWxsZWVTYXZlc01hcCA9IHZtLmdldEFsbENhbGxlZVNhdmVSZWdpc3RlcnNNYXAoKTsK
LSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVNhdmVCYXNlID0gdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwobV9jb2RlQmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygp
IC0gMSk7Ci0KLSAgICAgICAgaW50cHRyX3QqIGNhbGxlZVNhdmVzID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdCo+KG1fY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkgKyBjYWxsZWVTYXZlQmFzZS5v
ZmZzZXQoKTsKLQotICAgICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBS
ZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnRD
YWxsZWVTYXZlcy0+aGFzKHJlZykpCi0gICAgICAgICAgICAgICAgdm0uY2FsbGVlU2F2ZVJlZ2lz
dGVyc0J1ZmZlclthbGxDYWxsZWVTYXZlc01hcC0+Z2V0SW5kZXhGb3IocmVnKV0gPSBjYWxsZWVT
YXZlc1tjdXJyZW50Q2FsbGVlU2F2ZXMtPmdldEluZGV4Rm9yKHJlZyldOworICAgICAgICBSZWdp
c3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSB2bS5nZXRBbGxDYWxsZWVTYXZlUmVn
aXN0ZXJPZmZzZXRzKCk7CisgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0g
UmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIGludHB0cl90KiBmcmFtZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3QqPihtX2NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpOwor
CisgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjdXJyZW50Q2FsbGVlU2F2ZXMtPnNp
emUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgeworICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBjdXJyZW50RW50cnkgPSBjdXJyZW50
Q2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdl
dChjdXJyZW50RW50cnkucmVnKCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgUmVnaXN0ZXJBdE9mZnNldCogdm1DYWxsZWVTYXZlc0VudHJ5ID0gYWxsQ2FsbGVlU2F2
ZXMtPmZpbmQoY3VycmVudEVudHJ5LnJlZygpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
dm0uY2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlclt2bUNhbGxlZVNhdmVzRW50cnktPm9mZnNldEFz
SW5kZXgoKV0gPSAqKGZyYW1lICsgY3VycmVudEVudHJ5Lm9mZnNldEFzSW5kZXgoKSk7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTg4NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKLSNpbmNsdWRlICJSZWdpc3RlclNhdmVNYXAuaCIKKyNpbmNsdWRl
ICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5j
bHVkZSAiVHlwZW9mVHlwZS5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC0xODAsMTYgKzE4MCwxNSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKIAotICAgICAgICBS
ZWdpc3RlclNhdmVNYXAqIGNhbGxlZVNhdmVzTWFwID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVn
aXN0ZXJzKCk7Ci0KLSAgICAgICAgaWYgKCFjYWxsZWVTYXZlc01hcC0+c2l6ZSgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVmlydHVhbFJlZ2lz
dGVyID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSAtIDEpICsgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyOwotCi0gICAg
ICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJlZzo6bGFzdCgpOyByZWcg
PSByZWcubmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoY2FsbGVlU2F2ZXNNYXAtPmhhcyhyZWcp
ICYmIHJlZy5pc0dQUigpKQotICAgICAgICAgICAgICAgIHN0b3JlUHRyKHJlZy5ncHIoKSwgQWRk
cmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgYmFzZVZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5
dGVzKCkgKyBjYWxsZWVTYXZlc01hcC0+Z2V0T2Zmc2V0Rm9yKHJlZykpKTsKKyAgICAgICAgUmVn
aXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVn
aXN0ZXJzKCk7CisgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0
ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJz
KCkpOworICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUo
KTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsr
KSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0
KGkpOworICAgICAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBzdG9yZVB0cihlbnRyeS5y
ZWcoKS5ncHIoKSwgQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3Rlciwgb2Zmc2V0VmlydHVhbFJl
Z2lzdGVyLm9mZnNldEluQnl0ZXMoKSArIGVudHJ5Lm9mZnNldCgpKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTE5NywxNiArMTk2LDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb2RlQmxvY2spOwogCi0gICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogY2FsbGVlU2F2ZXNNYXAg
PSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLQotICAgICAgICBpZiAoIWNhbGxl
ZVNhdmVzTWFwLT5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2VWaXJ0dWFsUmVnaXN0ZXIgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChj
b2RlQmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpIC0gMSk7Ci0KLSAg
ICAgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJl
ZyA9IHJlZy5uZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChjYWxsZWVTYXZlc01hcC0+aGFzKHJl
ZykgJiYgcmVnLmlzR1BSKCkpCi0gICAgICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBiYXNlVmlydHVhbFJlZ2lzdGVyLm9mZnNldEluQnl0ZXMoKSArIGNh
bGxlZVNhdmVzTWFwLT5nZXRPZmZzZXRGb3IocmVnKSksIHJlZy5ncHIoKSk7CisgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJl
Z2lzdGVycygpOworICAgICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5z
aXplKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0
ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2Fs
bGVlU2F2ZXMtPmF0KGkpOworICAgICAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdl
dChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBs
b2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSwgZW50
cnkucmVnKCkuZ3ByKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMjYsMTEgKzIyNCwxNSBA
QCBwdWJsaWM6CiAKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fdm0tPmNhbGxlZVNhdmVS
ZWdpc3RlcnNCdWZmZXIpLCB0ZW1wMSk7CiAKLSAgICAgICAgUmVnaXN0ZXJTYXZlTWFwKiBhbGxD
YWxsZWVTYXZlc01hcCA9IG1fdm0tPmdldEFsbENhbGxlZVNhdmVSZWdpc3RlcnNNYXAoKTsKLQot
ICAgICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsg
cmVnID0gcmVnLm5leHQoKSkgewotICAgICAgICAgICAgaWYgKGFsbENhbGxlZVNhdmVzTWFwLT5o
YXMocmVnKSAmJiByZWcuaXNHUFIoKSkKLSAgICAgICAgICAgICAgICBzdG9yZVB0cihyZWcuZ3By
KCksIEFkZHJlc3ModGVtcDEsIGFsbENhbGxlZVNhdmVzTWFwLT5nZXRPZmZzZXRGb3IocmVnKSkp
OworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBtX3ZtLT5n
ZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgICAgIFJlZ2lzdGVyU2V0IGRv
bnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgICAg
IHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworICAgICAg
ICAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykg
eworICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5h
dChpKTsKKyAgICAgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgc3RvcmVQdHIoZW50cnku
cmVnKCkuZ3ByKCksIEFkZHJlc3ModGVtcDEsIGVudHJ5Lm9mZnNldCgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTI0MCw0NiArMjQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyKSwgdGVt
cDEpOwogCi0gICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogYWxsQ2FsbGVlU2F2ZXNNYXAgPSBtX3Zt
LT5nZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJzTWFwKCk7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IG1fdm0tPmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9m
ZnNldHMoKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdp
c3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3Vu
dCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKFJlZyBy
ZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkg
ewotICAgICAgICAgICAgaWYgKGFsbENhbGxlZVNhdmVzTWFwLT5oYXMocmVnKSAmJiByZWcuaXNH
UFIoKSkKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3ModGVtcDEsIGFsbENhbGxlZVNh
dmVzTWFwLT5nZXRPZmZzZXRGb3IocmVnKSksIHJlZy5ncHIoKSk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgICAgICBp
ZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyh0ZW1wMSwgZW50cnkub2Zm
c2V0KCkpLCBlbnRyeS5yZWcoKS5ncHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
dm9pZCBjb3B5Q2FsbGVlU2F2ZXNGcm9tRnJhbWVUb1ZNQ2FsbGVlU2F2ZXNCdWZmZXIoY29uc3Qg
VGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzID0geyBSZWdpc3RlclNldDo6bm9uVGVtcFJl
Z2lzdGVycygpIH0pCi0gICAgewotICAgICAgICBHUFJSZWcgdGVtcDEgPSB1c2VkUmVnaXN0ZXJz
LmdldEZyZWVHUFIoMCk7Ci0gICAgICAgIEdQUlJlZyB0ZW1wMiA9IHVzZWRSZWdpc3RlcnMuZ2V0
RnJlZUdQUigxKTsKLSAgICAgICAgQVNTRVJUKHRlbXAyICE9IEludmFsaWRHUFJSZWcpOwotCi0g
ICAgICAgIEFTU0VSVChjb2RlQmxvY2soKSk7Ci0KLSAgICAgICAgLy8gQ29weSBzYXZlZCBjYWxs
ZWVTYXZlcyBvbiBzdGFjayBvciB1bnNhdmVkIGNhbGxlZVNhdmVzIGluIHJlZ2lzdGVyIHRvIHZt
IGNhbGxlZVNhdmUgYnVmZmVyCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzQnVmZmVyKSwgdGVtcDEpOwotCi0gICAgICAgIFJlZ2lzdGVyU2F2ZU1h
cCogYWxsQ2FsbGVlU2F2ZXNNYXAgPSBtX3ZtLT5nZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJzTWFw
KCk7Ci0gICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogY3VycmVudENhbGxlZVNhdmVzID0gY29kZUJs
b2NrKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGNh
bGxlZVNhdmVCYXNlID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrKCktPmNhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpIC0gMSk7Ci0KLSAgICAgICAgZm9yIChSZWcg
cmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkp
IHsKLSAgICAgICAgICAgIEdQUlJlZyByZWdUb1N0b3JlOwotCi0gICAgICAgICAgICBpZiAoYWxs
Q2FsbGVlU2F2ZXNNYXAtPmhhcyhyZWcpICYmIHJlZy5pc0dQUigpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGN1cnJlbnRDYWxsZWVTYXZlcy0+aGFzKHJlZykpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gTG9hZCBjYWxsZWVTYXZlIGZyb20gc3RhY2sgaW50byB0ZW1wIHJlZ2lzdGVyCi0gICAg
ICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMjsKLSAgICAgICAgICAgICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCAgY2FsbGVlU2F2ZUJhc2Uub2Zm
c2V0SW5CeXRlcygpICsgY3VycmVudENhbGxlZVNhdmVzLT5nZXRPZmZzZXRGb3IocmVnKSksIHJl
Z1RvU3RvcmUpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAv
LyBKdXN0IHN0b3JlIGNhbGxlZSBzYXZlIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgICAgIHJl
Z1RvU3RvcmUgPSByZWcuZ3ByKCk7Ci0KLSAgICAgICAgICAgICAgICBzdG9yZVB0cihyZWdUb1N0
b3JlLCBBZGRyZXNzKHRlbXAxLCBhbGxDYWxsZWVTYXZlc01hcC0+Z2V0T2Zmc2V0Rm9yKHJlZykp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIHZvaWQgY29weUNhbGxl
ZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvVk1DYWxsZWVTYXZlc0J1ZmZlcihjb25zdCBUZW1w
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7IFJlZ2lzdGVyU2V0Ojpub25UZW1wUmVnaXN0
ZXJzKCkgfSkKICAgICB7CiAgICAgICAgIEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0
RnJlZUdQUigwKTsKQEAgLTI5MSwyNCArMjY1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gQ29w
eSBzYXZlZCBjYWxsZWVTYXZlcyBvbiBzdGFjayBvciB1bnNhdmVkIGNhbGxlZVNhdmVzIGluIHJl
Z2lzdGVyIHRvIHZtIGNhbGxlZVNhdmUgYnVmZmVyCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihtX3ZtLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyKSwgdGVtcDEpOwogCi0gICAgICAgIFJl
Z2lzdGVyU2F2ZU1hcCogYWxsQ2FsbGVlU2F2ZXNNYXAgPSBtX3ZtLT5nZXRBbGxDYWxsZWVTYXZl
UmVnaXN0ZXJzTWFwKCk7Ci0gICAgICAgIFJlZ2lzdGVyU2F2ZU1hcCogY3VycmVudENhbGxlZVNh
dmVzID0gY29kZUJsb2NrKCktPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGNhbGxlZVNhdmVCYXNlID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJs
b2NrKCktPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpIC0gMSk7Ci0KLSAgICAg
ICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0KCk7IHJlZyA9
IHJlZy5uZXh0KCkpIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNh
dmVzID0gbV92bS0+Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOworICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVudENhbGxlZVNhdmVzID0gY29kZUJsb2NrKCktPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZG9udENvcHlSZWdpc3Rl
cnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgdW5zaWduZWQgcmVn
aXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisgICAgICAgIAorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgICAg
ICBHUFJSZWcgcmVnVG9TdG9yZTsKLQotICAgICAgICAgICAgaWYgKGFsbENhbGxlZVNhdmVzTWFw
LT5oYXMocmVnKSAmJiByZWcuaXNHUFIoKSkgewotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
Q2FsbGVlU2F2ZXMtPmhhcyhyZWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIExvYWQgY2Fs
bGVlU2F2ZSBmcm9tIHN0YWNrIGludG8gdGVtcCByZWdpc3RlcgotICAgICAgICAgICAgICAgICAg
ICByZWdUb1N0b3JlID0gdGVtcDI7Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVz
cyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgIGNhbGxlZVNhdmVCYXNlLm9mZnNldEluQnl0ZXMoKSAr
IGN1cnJlbnRDYWxsZWVTYXZlcy0+Z2V0T2Zmc2V0Rm9yKHJlZykpLCByZWdUb1N0b3JlKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCBzdG9yZSBj
YWxsZWUgc2F2ZSBkaXJlY3RseQotICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlID0gcmVn
LmdwcigpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1Rv
U3RvcmUsIEFkZHJlc3ModGVtcDEsIGFsbENhbGxlZVNhdmVzTWFwLT5nZXRPZmZzZXRGb3IocmVn
KSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBSZWdpc3RlckF0
T2Zmc2V0IHZtRW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgICAgICBpZiAo
ZG9udENvcHlSZWdpc3RlcnMuZ2V0KHZtRW50cnkucmVnKCkpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogY3VycmVudEZyYW1lRW50cnkg
PSBjdXJyZW50Q2FsbGVlU2F2ZXMtPmZpbmQodm1FbnRyeS5yZWcoKSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVFbnRyeSkgeworICAgICAgICAgICAgICAgIC8v
IExvYWQgY2FsbGVlU2F2ZSBmcm9tIHN0YWNrIGludG8gdGVtcCByZWdpc3RlcgorICAgICAgICAg
ICAgICAgIHJlZ1RvU3RvcmUgPSB0ZW1wMjsKKyAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSksIHJl
Z1RvU3RvcmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgLy8gSnVzdCBz
dG9yZSBjYWxsZWUgc2F2ZSBkaXJlY3RseQorICAgICAgICAgICAgICAgIHJlZ1RvU3RvcmUgPSB2
bUVudHJ5LnJlZygpLmdwcigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzdG9yZVB0cihy
ZWdUb1N0b3JlLCBBZGRyZXNzKHRlbXAxLCB2bUVudHJ5Lm9mZnNldCgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0
T2Zmc2V0LmNwcAkocmV2aXNpb24gMTg4NTY4KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwOjE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRlRMUmVnaXN0ZXJBdE9mZnNldC5oIgor
CisjaWYgRU5BQkxFKEZUTF9KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
Kwordm9pZCBSZWdpc3RlckF0T2Zmc2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgb3V0LnByaW50KHJlZygpLCAiIGF0ICIsIG9mZnNldCgpKTsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0LmNwcAkod29ya2lu
ZyBjb3B5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwxOCArMjQsMTggQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRlRMUmVnaXN0ZXJBdE9mZnNldC5oIgorI2luY2x1ZGUgIlJl
Z2lzdGVyQXRPZmZzZXQuaCIKIAotI2lmIEVOQUJMRShGVExfSklUKQorI2lmIEVOQUJMRShKSVQp
CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKK25hbWVzcGFjZSBKU0MgewogCiB2
b2lkIFJlZ2lzdGVyQXRPZmZzZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQocmVnKCksICIgYXQgIiwgb2Zmc2V0KCkpOwogfQogCi19IH0gLy8gbmFtZXNw
YWNlIEpTQzo6RlRMCit9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIEVOQUJMRShGVExf
SklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCShyZXZpc2lvbiAxODg1NjgpCShmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oOjE4ODU2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBGVExSZWdpc3RlckF0T2Zmc2V0X2gKKyNkZWZpbmUgRlRM
UmVnaXN0ZXJBdE9mZnNldF9oCisKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKworI2luY2x1ZGUgIlJl
Zy5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CisKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXQgeworcHVibGljOgorICAgIFJl
Z2lzdGVyQXRPZmZzZXQoKQorICAgICAgICA6IG1fb2Zmc2V0KDApCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBSZWdpc3RlckF0T2Zmc2V0KFJlZyByZWcsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAg
ICAgIDogbV9yZWcocmVnKQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICB7CisgICAg
fQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVnOyB9Cisg
ICAgCisgICAgUmVnIHJlZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnOyB9CisgICAgcHRyZGlmZl90
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJlZygpID09IG90aGVyLnJlZygpICYmIG9mZnNldCgpID09IG90aGVyLm9mZnNl
dCgpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdpc3RlckF0T2Zm
c2V0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChyZWcoKSAhPSBvdGhlci5yZWco
KSkKKyAgICAgICAgICAgIHJldHVybiByZWcoKSA8IG90aGVyLnJlZygpOworICAgICAgICByZXR1
cm4gb2Zmc2V0KCkgPCBvdGhlci5vZmZzZXQoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIFJl
ZyBnZXRSZWcoUmVnaXN0ZXJBdE9mZnNldCogdmFsdWUpIHsgcmV0dXJuIHZhbHVlLT5yZWcoKTsg
fQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSZWcgbV9yZWc7CisgICAgcHRyZGlmZl90IG1fb2Zmc2V0OworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKKyNlbmRp
ZiAvLyBGVExSZWdpc3RlckF0T2Zmc2V0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlckF0T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE1ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBGVExSZWdpc3Rl
ckF0T2Zmc2V0X2gKLSNkZWZpbmUgRlRMUmVnaXN0ZXJBdE9mZnNldF9oCisjaWZuZGVmIFJlZ2lz
dGVyQXRPZmZzZXRfaAorI2RlZmluZSBSZWdpc3RlckF0T2Zmc2V0X2gKIAotI2lmIEVOQUJMRShG
VExfSklUKQorI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJSZWcuaCIKICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXQgewogcHVibGljOgpAQCAtNTAs
NiArNTAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgUmVnIHJlZygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnOyB9CiAgICAgcHRyZGlmZl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9
CisgICAgaW50IG9mZnNldEFzSW5kZXgoKSBjb25zdCB7IHJldHVybiBvZmZzZXQoKSAvIHNpemVv
Zih2b2lkKik7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJBdE9m
ZnNldCYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNzIsOSArNzMsOSBAQCBwcml2YXRlOgogICAg
IHB0cmRpZmZfdCBtX29mZnNldDsKIH07CiAKLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKK30g
Ly8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKIAotI2VuZGlmIC8vIEZUTFJlZ2lzdGVyQXRPZmZzZXRfaAorI2VuZGlmIC8v
IFJlZ2lzdGVyQXRPZmZzZXRfaAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyQXRPZmZzZXRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRM
aXN0LmgiCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisK
K25hbWVzcGFjZSBKU0MgeworICAgIAorUmVnaXN0ZXJBdE9mZnNldExpc3Q6OlJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KCkgeyB9CisKK1JlZ2lzdGVyQXRPZmZzZXRMaXN0OjpSZWdpc3RlckF0T2Zmc2V0
TGlzdChSZWdpc3RlclNldCByZWdpc3RlclNldCwgT2Zmc2V0QmFzZVR5cGUgb2Zmc2V0QmFzZVR5
cGUpCit7CisgICAgc2l6ZV90IG51bWJlck9mUmVnaXN0ZXJzID0gcmVnaXN0ZXJTZXQubnVtYmVy
T2ZTZXRHUFJzKCk7CisgICAgcHRyZGlmZl90IG9mZnNldCA9IDA7CisgICAgCisgICAgaWYgKG9m
ZnNldEJhc2VUeXBlID09IEZyYW1lUG9pbnRlckJhc2VkKQorICAgICAgICBvZmZzZXQgPSAtKHN0
YXRpY19jYXN0PHB0cmRpZmZfdD4obnVtYmVyT2ZSZWdpc3RlcnMpICogc2l6ZW9mKHZvaWQqKSk7
CisKKyAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTty
ZWcgPSByZWcubmV4dCgpKSB7CisgICAgICAgIGlmIChyZWdpc3RlclNldC5nZXQocmVnKSAmJiBy
ZWcuaXNHUFIoKSkgeworICAgICAgICAgICAgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQocmVnLCBv
ZmZzZXQpKTsKKyAgICAgICAgICAgIG9mZnNldCArPSBzaXplb2Yodm9pZCopOworICAgICAgICB9
CisgICAgfQorCisgICAgc29ydCgpOworfQorCit2b2lkIFJlZ2lzdGVyQXRPZmZzZXRMaXN0Ojpz
b3J0KCkKK3sKKyAgICBzdGQ6OnNvcnQobV9yZWdpc3RlcnMuYmVnaW4oKSwgbV9yZWdpc3RlcnMu
ZW5kKCkpOworfQorCit2b2lkIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGxpc3REdW1wKG1fcmVnaXN0ZXJzKSk7Cit9
CisKK1JlZ2lzdGVyQXRPZmZzZXQqIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpmaW5kKFJlZyByZWcp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxSZWdpc3RlckF0T2Zmc2V0LCBS
ZWc+KG1fcmVnaXN0ZXJzLCBtX3JlZ2lzdGVycy5zaXplKCksIHJlZywgUmVnaXN0ZXJBdE9mZnNl
dDo6Z2V0UmVnKTsKK30KKwordW5zaWduZWQgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmluZGV4T2Yo
UmVnIHJlZykgY29uc3QKK3sKKyAgICBpZiAoUmVnaXN0ZXJBdE9mZnNldCogcG9pbnRlciA9IGZp
bmQocmVnKSkKKyAgICAgICAgcmV0dXJuIHBvaW50ZXIgLSBtX3JlZ2lzdGVycy5iZWdpbigpOwor
ICAgIHJldHVybiBVSU5UX01BWDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
QXRPZmZzZXRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlckF0T2Zmc2V0TGlzdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBSZWdpc3RlckF0T2Zmc2V0TGlzdF9oCisjZGVmaW5lIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
X2gKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0LmgiCisj
aW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0IHsKK3B1YmxpYzoKKyAgICBlbnVtIE9mZnNldEJhc2VUeXBlIHsgRnJh
bWVQb2ludGVyQmFzZWQsIFplcm9CYXNlZCB9OworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qo
KTsKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdChSZWdpc3RlclNldCwgT2Zmc2V0QmFzZVR5cGUg
PSBGcmFtZVBvaW50ZXJCYXNlZCk7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9yZWdpc3RlcnMuY2xlYXIo
KTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9y
ZWdpc3RlcnMuc2l6ZSgpOworICAgIH0KKworICAgIFJlZ2lzdGVyQXRPZmZzZXQmIGF0KHNpemVf
dCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3JlZ2lzdGVycy5hdChpbmRleCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQgcmVnaXN0ZXJBdE9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChyZWdpc3RlckF0T2Zmc2V0
KTsKKyAgICB9CisKKyAgICB2b2lkIHNvcnQoKTsKKyAgICBSZWdpc3RlckF0T2Zmc2V0KiBmaW5k
KFJlZykgY29uc3Q7CisgICAgdW5zaWduZWQgaW5kZXhPZihSZWcpIGNvbnN0OyAvLyBSZXR1cm5z
IFVJTlRfTUFYIGlmIG5vdCBmb3VuZC4KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8UmVnaXN0ZXJB
dE9mZnNldD4gbV9yZWdpc3RlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBSZWdpc3RlckF0T2Zmc2V0TGlzdF9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTYXZlTWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2F2ZU1hcC5jcHAJKHJl
dmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTYXZl
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJSZWdpc3RlclNhdmVNYXAuaCIKLQotI2lmIEVOQUJMRShKSVQpCi0KLSNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotUmVnaXN0ZXJTYXZlTWFwOjpS
ZWdpc3RlclNhdmVNYXAoUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzKQotewotICAgIG1fbnVtYmVyT2ZS
ZWdpc3RlcnMgPSAwOwotICAgIGZvciAoUmVnIHJlZyA9IFJlZzo6Zmlyc3QoKTsgcmVnIDw9IFJl
Zzo6bGFzdCgpO3JlZyA9IHJlZy5uZXh0KCkpIHsKLSAgICAgICAgaWYgKHJlZ2lzdGVycy5nZXQo
cmVnKSAmJiByZWcuaXNHUFIoKSkgewotICAgICAgICAgICAgbV9pbmRleEZvclJlZ2lzdGVyLnNl
dChyZWcuaW5kZXgoKSwgbV9udW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAgICAgICBtX251bWJl
ck9mUmVnaXN0ZXJzKys7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXVuc2lnbmVkIFJlZ2lzdGVy
U2F2ZU1hcDo6Z2V0SW5kZXhGb3IoUmVnIHJlZykgY29uc3QKLXsKLSAgICBhdXRvIGl0ZXIgPSBt
X2luZGV4Rm9yUmVnaXN0ZXIuZmluZChyZWcuaW5kZXgoKSk7Ci0gICAgQVNTRVJUKGl0ZXIgIT0g
bV9pbmRleEZvclJlZ2lzdGVyLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlci0+dmFsdWU7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKLQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNhdmVNYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2F2ZU1hcC5oCShyZXZpc2lvbiAxODg1
NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2F2ZU1hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZWdpc3RlclNhdmVNYXBfaAotI2RlZmluZSBSZWdp
c3RlclNhdmVNYXBfaAotCi0jaWYgRU5BQkxFKEpJVCkKLQotI2luY2x1ZGUgIkdQUkluZm8uaCIK
LSNpbmNsdWRlICJSZWcuaCIKLSNpbmNsdWRlICJSZWdpc3RlclNldC5oIgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBSZWdpc3RlclNhdmVNYXAg
ewotcHVibGljOgotICAgIFJlZ2lzdGVyU2F2ZU1hcChSZWdpc3RlclNldCByZWdpc3RlcnMpOwot
Ci0gICAgdW5zaWduZWQgc2l6ZSgpIHsgcmV0dXJuIG1fbnVtYmVyT2ZSZWdpc3RlcnM7IH0KLSAg
ICBib29sIGhhcyhSZWcgcmVnKSB7IHJldHVybiBtX2luZGV4Rm9yUmVnaXN0ZXIuY29udGFpbnMo
cmVnLmluZGV4KCkpOyB9Ci0gICAgdW5zaWduZWQgbWF4T2Zmc2V0KCkgeyByZXR1cm4gc2l6ZSgp
ICogY3B1UmVnaXN0ZXJTaXplOyB9Ci0gICAgdW5zaWduZWQgZ2V0SW5kZXhGb3IoUmVnKSBjb25z
dDsKLSAgICB1bnNpZ25lZCBnZXRPZmZzZXRGb3IoUmVnIHJlZykgY29uc3QgeyByZXR1cm4gZ2V0
SW5kZXhGb3IocmVnKSAqIGNwdVJlZ2lzdGVyU2l6ZTsgfQotcHJpdmF0ZToKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY3B1UmVnaXN0ZXJTaXplID0gc2l6ZW9mKGludHB0cl90KTsKLQotICAg
IHVuc2lnbmVkIG1fbnVtYmVyT2ZSZWdpc3RlcnM7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5z
aWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+ID4gbV9pbmRleEZvclJlZ2lzdGVyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0jZW5kaWYgLy8gUmVnaXN0ZXJT
YXZlTWFwX2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5j
cHAJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMTEgKzIyOCw0NSBAQCBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAg
IFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiBDUFUoWDg2XzY0
KSAmJiAhT1MoV0lORE9XUykKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CisgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MyKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgLy8gTExWTSBt
aWdodCBzYXZlIGFuZCB1c2UgYWxsIEFSTTY0IGNhbGxlZSBzYXZlcyBzcGVjaWZpZWQgaW4gdGhl
IEFCSS4KKyAgICByZXN1bHQuc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MTkpOworICAgIHJlc3VsdC5z
ZXQoQVJNNjRSZWdpc3RlcnM6OngyMCk7CisgICAgcmVzdWx0LnNldChBUk02NFJlZ2lzdGVyczo6
eDIxKTsKKyAgICByZXN1bHQuc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjIpOworICAgIHJlc3VsdC5z
ZXQoQVJNNjRSZWdpc3RlcnM6OngyMyk7CisgICAgcmVzdWx0LnNldChBUk02NFJlZ2lzdGVyczo6
eDI0KTsKKyAgICByZXN1bHQuc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjUpOworICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MxID09IEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTMiA9
PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MxKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisjZWxzZQorICAgIFVOUkVB
Q0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2VuZGlmCisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6YWxsVk1DYWxsZWVTYXZlUmVnaXN0ZXJz
KCkKIHsKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQobGxpbnRDYWxsZWVTYXZlUmVnaXN0ZXJzKCks
CiAgICAgICAgIGJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpLAotICAgICAgICBkZmdDYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgICAgICBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCksCisg
ICAgICAgIGZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiB9CiAKIFJlZ2lzdGVyU2V0IFJlZ2lz
dGVyU2V0OjphbGxHUFJzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmgJKHJldmlzaW9uIDE4ODU2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVn
aXN0ZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZ2lzdGVyU2V0IGxsaW50Q2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3Rl
cnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIExMSW50LgogICAgIHN0YXRpYyBSZWdpc3RlclNldCBi
YXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2Vk
IGJ5IHRoZSBiYXNlbGluZSBKSVQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGRmZ0NhbGxlZVNh
dmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBERkcgSklU
LgorICAgIHN0YXRpYyBSZWdpc3RlclNldCBmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJl
Z2lzdGVycyB0aGF0IG1pZ2h0IGJlIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBGVEwgSklULgogICAg
IHN0YXRpYyBSZWdpc3RlclNldCBhbGxWTUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gVGhlIHVu
aW9uIG9mIHJlZ2lzdGVycyBzYXZlZCBhbmQgdXNlZCBieSBhbnkgVk0uCiAgICAgc3RhdGljIFJl
Z2lzdGVyU2V0IG5vblRlbXBSZWdpc3RlcnMoKTsgLy8gVGhlIHVuaW9uIG9mIFZNIGNhbGxlZSBz
YXZlIGFuZCBzcGVjaWFsIHJlZ2lzdGVycy4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BS
cygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTg4
NTY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw3ICs3NSw3IEBACiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIK
ICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgotI2lu
Y2x1ZGUgIlJlZ2lzdGVyU2F2ZU1hcC5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0
LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5cGUuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKQEAgLTI0Niw3
ICsyNDYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAKICNp
ZiBFTkFCTEUoSklUKQogICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRUaHVua3M+
KCk7Ci0gICAgYWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVn
aXN0ZXJTYXZlTWFwPihSZWdpc3RlclNldDo6YWxsVk1DYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwor
ICAgIGFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PihSZWdpc3RlclNldDo6YWxsVk1DYWxsZWVTYXZlUmVnaXN0ZXJzKCks
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpaZXJvQmFzZWQpOwogI2VuZGlmCiAgICAgYXJpdHlDaGVj
a0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbW1vblNsb3dQYXRoczo6QXJpdHlDaGVja0RhdGE+
KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTg4NTY4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpA
QCAtOTIsNyArOTIsNyBAQCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBMZWdh
Y3lQcm9maWxlcjsKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDYWNoZTsK
LWNsYXNzIFJlZ2lzdGVyU2F2ZU1hcDsKK2NsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogY2xh
c3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNl
UHJvdmlkZXJDYWNoZTsKQEAgLTM0OSw5ICszNDksOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIE5h
dGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJTYXZlTWFwPiBhbGxDYWxsZWVT
YXZlUmVnaXN0ZXJzTWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gYWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0czsKICAgICAKLSAgICBSZWdpc3RlclNhdmVN
YXAqIGdldEFsbENhbGxlZVNhdmVSZWdpc3RlcnNNYXAoKSB7IHJldHVybiBhbGxDYWxsZWVTYXZl
UmVnaXN0ZXJzTWFwLmdldCgpOyB9CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGdldEFsbENh
bGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKSB7IHJldHVybiBhbGxDYWxsZWVTYXZlUmVnaXN0ZXJP
ZmZzZXRzLmdldCgpOyB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb21tb25TbG93UGF0aHM6OkFyaXR5Q2hlY2tEYXRhPiBhcml0eUNoZWNrRGF0YTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>