<?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>233358</bug_id>
          
          <creation_ts>2021-11-19 04:26:00 -0800</creation_ts>
          <short_desc>[WebGPU] Implement GPU process&apos;s message receivers</short_desc>
          <delta_ts>2021-11-19 18:34:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816800</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-19 04:26:00 -0800</bug_when>
    <thetext>[WebGPU] Implement GPU process&apos;s message receivers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816802</commentid>
    <comment_count>1</comment_count>
      <attachid>444800</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-19 04:34:06 -0800</bug_when>
    <thetext>Created attachment 444800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816903</commentid>
    <comment_count>2</comment_count>
      <attachid>444800</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-19 10:03:15 -0800</bug_when>
    <thetext>Comment on attachment 444800
Patch

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

&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteBuffer.cpp:52
&gt; +    // FIXME: Implement this.

ASSERT_NOT_IMPLEMENTED()?

&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCommandEncoder.cpp:72
&gt; +    auto computePassEncoder = m_backing-&gt;beginComputePass(*convertedDescriptor);

What happens if convertedDescriptor still doesn&apos;t have a value at this point?

&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCommandEncoder.cpp:88
&gt; +    auto convertedSource = m_objectRegistry.convertBufferFromBacking(source);
&gt; +    ASSERT(convertedSource);
&gt; +    auto convertedDestination = m_objectRegistry.convertBufferFromBacking(source);
&gt; +    ASSERT(convertedDestination);
&gt; +    m_backing-&gt;copyBufferToBuffer(*convertedSource, sourceOffset, *convertedDestination, destinationOffset, size);

Should this (and the other similar code) actually test that the converted buffers exist rather than just ASSERT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816974</commentid>
    <comment_count>3</comment_count>
      <attachid>444800</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-19 13:14:32 -0800</bug_when>
    <thetext>Comment on attachment 444800
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCommandEncoder.cpp:72
&gt;&gt; +    auto computePassEncoder = m_backing-&gt;beginComputePass(*convertedDescriptor);
&gt; 
&gt; What happens if convertedDescriptor still doesn&apos;t have a value at this point?

RemoteComputePassEncoder::create takes an optional. If the input was nullopt, we should be passing nullopt to the consumer, but if the input wasn&apos;t nullopt, we should verify that it could be converted successfully.

&gt;&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCommandEncoder.cpp:88
&gt;&gt; +    m_backing-&gt;copyBufferToBuffer(*convertedSource, sourceOffset, *convertedDestination, destinationOffset, size);
&gt; 
&gt; Should this (and the other similar code) actually test that the converted buffers exist rather than just ASSERT?

oh, you mean only call the backing function if the lookup was successful? I&apos;ll update the patch to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817010</commentid>
    <comment_count>4</comment_count>
      <attachid>444858</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-19 14:56:22 -0800</bug_when>
    <thetext>Created attachment 444858
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817012</commentid>
    <comment_count>5</comment_count>
      <attachid>444800</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-19 15:07:19 -0800</bug_when>
    <thetext>Comment on attachment 444800
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteBuffer.cpp:52
&gt;&gt; +    // FIXME: Implement this.
&gt; 
&gt; ASSERT_NOT_IMPLEMENTED()?

It looks like doing this forces adding [[ noreturn ]] to the function signature in the header, which I think is pollution. I&apos;ll just implement this ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817017</commentid>
    <comment_count>6</comment_count>
      <attachid>444862</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-19 15:13:32 -0800</bug_when>
    <thetext>Created attachment 444862
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817041</commentid>
    <comment_count>7</comment_count>
      <attachid>444867</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-19 16:31:35 -0800</bug_when>
    <thetext>Created attachment 444867
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817061</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-19 18:33:50 -0800</bug_when>
    <thetext>Committed r286087 (244474@main): &lt;https://commits.webkit.org/244474@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444867.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817062</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-19 18:34:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/85627098&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444800</attachid>
            <date>2021-11-19 04:34:06 -0800</date>
            <delta_ts>2021-11-19 10:03:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233358-20211119043405.patch</filename>
            <type>text/plain</type>
            <size>186085</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhlMThhZjI5OWM2OTdk
NDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLmUzNWFjYmExY2I1YTRmYTM2NTEzZjZiMmMyODlhMjcx
NjQzMjQ4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc5IEBACisyMDIxLTExLTE5ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW1w
bGVtZW50IEdQVSBwcm9jZXNzJ3MgbWVzc2FnZSByZWNlaXZlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzM1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtZXNzYWdlIHJlY2VpdmVycyBoYXZl
IHR3byBoZWxwZXIgb2JqZWN0czoKKyAgICAgICAgMS4gT2JqZWN0SGVhcCwgd2hpY2ggb3ducyBh
bGwgdGhlIG1lc3NhZ2UgcmVjZWl2ZXJzLiBUaGVyZSBpcyBpbnRlbmRlZCB0byBiZSBvbmx5IG9u
ZSBvZiB0aGVtIHBlciBkb2N1bWVudC4KKyAgICAgICAgMi4gT2JqZWN0UmVnaXN0cnksIHdoaWNo
IGRvZXNuJ3Qgb3duIGFueXRoaW5nLCBidXQgbWFpbnRhaW5zIGEgbWFwcGluZyBmcm9tIFdlYkdQ
VUlkZW50aWZpZXJzIHRvIG9iamVjdHMuIFRoaXMKKyAgICAgICAgICAgICAgIHJlZ2lzdHJ5IGlz
IG5lY2Vzc2FyeSBiZWNhdXNlIHdoZW4gYW4gb2JqZWN0IG5lZWRzIHRvIGJlIGRlc3Ryb3llZCwg
d2UgaGF2ZSB0byBsb29rIHVwIHdoaWNoIG9iamVjdCBpdAorICAgICAgICAgICAgICAgaXMgYnkg
SUQuCisKKyAgICAgICAgQmV5b25kIHRoYXQsIHRoaXMgcGF0Y2gganVzdCBob29rcyB1cCB0aG9z
ZSB0d28gbWVzc2FnZSByZWNlaXZlcnMsIGFuZCB0aGVuIGZvcndhcmRzIGFsbCByZWNlaXZlZCBt
ZXNzYWdlcyB0bworICAgICAgICB0aGUgdmlydHVhbCBpbnRlcmZhY2UgdGhhdCBpbXBsZW1lbnRz
IFdlYkdQVS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhh
dmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQWRhcHRlcjo6UmVtb3RlQWRh
cHRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6On5SZW1vdGVBZGFwdGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQWRhcHRlcjo6cmVxdWVzdERldmljZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUJpbmRHcm91cDo6UmVtb3RlQmluZEdyb3VwKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQmluZEdyb3VwOjp+UmVtb3RlQmluZEdyb3VwKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQmluZEdyb3VwOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQmluZEdyb3VwTGF5b3V0OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6On5SZW1vdGVCaW5kR3JvdXBMYXlvdXQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OnNldExhYmVsKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVCdWZmZXI6OlJlbW90ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6flJlbW90ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUJ1ZmZlcjo6bWFwQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVCdWZmZXI6OnVu
bWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQnVmZmVyOjpkZXN0cm95KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQnVmZmVyOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUNvbW1hbmRCdWZmZXI6OlJlbW90ZUNvbW1hbmRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDb21tYW5kQnVmZmVyOjp+UmVtb3RlQ29tbWFuZEJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNvbW1hbmRCdWZmZXI6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6UmVtb3RlQ29tbWFuZEVuY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6flJlbW90ZUNvbW1hbmRFbmNv
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OmJlZ2luUmVuZGVy
UGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1
dGVQYXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZm
ZXJUb0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5
QnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6
OmNvcHlUZXh0dXJlVG9CdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpwdXNoRGVidWdHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVu
Y29kZXI6Omluc2VydERlYnVnTWFya2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFu
ZEVuY29kZXI6OndyaXRlVGltZXN0YW1wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFu
ZEVuY29kZXI6OnJlc29sdmVRdWVyeVNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1h
bmRFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbW1hbmRFbmNvZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6On5SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5l
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJbmRp
cmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6YmVnaW5Q
aXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmVuZFBhc3MpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRMYWJlbCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpSZW1v
dGVDb21wdXRlUGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGlwZWxp
bmU6On5SZW1vdGVDb21wdXRlUGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21w
dXRlUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNvbXB1dGVQaXBlbGluZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZURldmljZTo6UmVtb3RlRGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjp+
UmVtb3RlRGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpkZXN0cm95KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZp
Y2U6OmltcG9ydEV4dGVybmFsVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmlj
ZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNl
OjpjcmVhdGVQaXBlbGluZUxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6
Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVT
aGFkZXJNb2R1bGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbXB1
dGVQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQ
aXBlbGluZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5k
ZXJQaXBlbGluZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVD
b21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUmVu
ZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRl
UXVlcnlTZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OnB1c2hFcnJvclNjb3Bl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpwb3BFcnJvclNjb3BlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpSZW1vdGVFeHRlcm5hbFRleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVFeHRlcm5hbFRleHR1cmU6On5SZW1vdGVFeHRlcm5hbFRleHR1cmUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVFeHRlcm5hbFRleHR1cmU6OnNldExhYmVsKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OlJlbW90ZUdQVSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdQVTo6flJlbW90ZUdQVSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6cmVx
dWVzdEFkYXB0ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQ
aXBlbGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0
OjpSZW1vdGVQaXBlbGluZUxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVBpcGVsaW5l
TGF5b3V0Ojp+UmVtb3RlUGlwZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVQ
aXBlbGluZUxheW91dDo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVR
dWVyeVNldDo6UmVtb3RlUXVlcnlTZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVRdWVyeVNl
dDo6flJlbW90ZVF1ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVlcnlTZXQ6OmRl
c3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVRdWVyeVNldDo6c2V0TGFiZWwpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVRdWV1ZTo6UmVtb3RlUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVRdWV1ZTo6flJlbW90ZVF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVldWU6
OnN1Ym1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjpvblN1Ym1pdHRlZFdvcmtE
b25lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVldWU6OndyaXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUXVldWU6OndyaXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVF1ZXVlOjpjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVF1ZXVlOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVldWUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJCdW5kbGU6OlJlbW90ZVJlbmRlckJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlckJ1bmRsZTo6flJlbW90ZVJlbmRlckJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlckJ1bmRsZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6flJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpzZXRQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXI6OnNldEluZGV4QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhdyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEJpbmRHcm91cCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6cG9wRGVidWdHcm91cCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6Omluc2VydERlYnVnTWFya2Vy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZmluaXNoKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0TGFiZWwpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjp+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnBvcERlYnVnR3JvdXAp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdN
YXJrZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmll
d3BvcnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Np
c3NvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0
QmxlbmRDb25zdGFudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRTdGVuY2lsUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI6OmJlZ2luT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0YXRp
c3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpl
eGVjdXRlQnVuZGxlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
OjplbmRQYXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNl
dExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlclBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGlw
ZWxpbmU6OlJlbW90ZVJlbmRlclBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyUGlwZWxpbmU6On5SZW1vdGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlclBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJQaXBlbGluZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNhbXBsZXI6OlJlbW90ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
YW1wbGVyOjp+UmVtb3RlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZXI6
OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
YW1wbGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hh
ZGVyTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjpSZW1v
dGVTaGFkZXJNb2R1bGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTaGFkZXJNb2R1bGU6On5S
ZW1vdGVTaGFkZXJNb2R1bGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTaGFkZXJNb2R1bGU6
OmNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNoYWRlck1vZHVsZTo6
c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNo
YWRlck1vZHVsZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0dXJlOjpSZW1vdGVUZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6flJlbW90ZVRleHR1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVGV4dHVyZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRl
eHR1cmU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVUZXh0dXJlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0dXJlVmlldzo6
UmVtb3RlVGV4dHVyZVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0dXJlVmlldzo6
flJlbW90ZVRleHR1cmVWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZVZpZXc6
OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlVmlldy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VU9iamVjdEhlYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmFk
ZE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6cmVtb3ZlT2Jq
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0QWRhcHRl
ckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RI
ZWFwOjpjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2lu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVy
dEJ1ZmZlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpP
YmplY3RIZWFwOjpjb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0Q29tbWFuZEVuY29kZXJG
cm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVh
cDo6Y29udmVydENvbXB1dGVQYXNzRW5jb2RlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJv
bUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6
OmNvbnZlcnREZXZpY2VGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEV4dGVybmFsVGV4dHVyZUZyb21CYWNraW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0R1BVRnJv
bUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6
OmNvbnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydFF1ZXVl
RnJvbUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhl
YXA6OmNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJCdW5kbGVGcm9t
QmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6
Y29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNr
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252
ZXJ0U2FtcGxlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpPYmplY3RIZWFwOjpjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRUZXh0dXJlRnJvbUJh
Y2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNv
bnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0cnkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6T2JqZWN0UmVnaXN0cnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Ojp+T2JqZWN0UmVnaXN0cnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5OjpyZW1vdmVPYmplY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QWRhcHRlckZy
b21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29u
dmVydEJpbmRHcm91cEZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeTo6Y29udmVydEJpbmRHcm91cExheW91dEZyb21CYWNraW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydEJ1ZmZlckZyb21CYWNraW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbW1h
bmRCdWZmZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVn
aXN0cnk6OmNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbXB1dGVQYXNzRW5jb2RlckZyb21C
YWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVy
dENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpP
YmplY3RSZWdpc3RyeTo6Y29udmVydERldmljZUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydEV4dGVybmFsVGV4dHVyZUZyb21CYWNr
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydEdQ
VUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6
Y29udmVydFBpcGVsaW5lTGF5b3V0RnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydFJlbmRl
ckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZy
b21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29u
dmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0U2FtcGxlckZyb21CYWNraW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNr
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydFRl
eHR1cmVGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0
cnk6OmNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaC4K
KyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94
Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lOgorCiAyMDIxLTExLTE4ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gYWRkIHN1cHBvcnQgZm9yIHBh
dXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuY3BwCmluZGV4IGUw
NDA5YTljNDYxNGE1NDYyNGFmZGZhYWEwZTJmMTM5NWY0NzYzNTguLjZlYTY0ODhiNWQ4MmRiMjc4
ZDFlODQyNDdhNzVkNWU0OGUyZjI1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcApAQCAtMjgsMjkg
KzI4LDcxIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVE
ZXZpY2UuaCIKICNpbmNsdWRlICJXZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJHUFVTdXBw
b3J0ZWRMaW1pdHMuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUFkYXB0
ZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURldmljZS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQWRhcHRlcjo6UmVtb3RlQWRhcHRlcihQQUw6Oldl
YkdQVTo6QWRhcHRlciYgYWRhcHRlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQor
UmVtb3RlQWRhcHRlcjo6UmVtb3RlQWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRl
ciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9i
YWNraW5nKGFkYXB0ZXIpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQog
ICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1f
YmFja2luZyk7CiB9CiAKIFJlbW90ZUFkYXB0ZXI6On5SZW1vdGVBZGFwdGVyKCkKIHsKKyAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZUFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3QgV2ViR1BVOjpEZXZpY2VEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9y
dGVkTGltaXRzJiYpPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9y
KTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxi
YWNrKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CisgICAgbV9iYWNraW5nLT5yZXF1ZXN0RGV2aWNlKCpjb252ZXJ0ZWREZXNjcmlwdG9y
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRy
PFdlYkdQVTo6T2JqZWN0SGVhcD4obV9vYmplY3RIZWFwKSwgb2JqZWN0UmVnaXN0cnkgPSBtX29i
amVjdFJlZ2lzdHJ5LCBpZGVudGlmaWVyXSAoUmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+JiYgZGV2
aWNlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgYXV0byByZW1vdGVEZXZpY2UgPSBSZW1vdGVEZXZpY2U6OmNyZWF0
ZShkZXZpY2UsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAsIGlkZW50aWZpZXIpOwor
ICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZURldmljZSk7CisgICAgICAg
IGNvbnN0IGF1dG8mIGZlYXR1cmVzID0gZGV2aWNlLT5mZWF0dXJlcygpOworICAgICAgICBjb25z
dCBhdXRvJiBsaW1pdHMgPSBkZXZpY2UtPmxpbWl0cygpOworICAgICAgICBjYWxsYmFjayhXZWJH
UFU6OlN1cHBvcnRlZEZlYXR1cmVzIHsgZmVhdHVyZXMuZmVhdHVyZXMoKSB9LCBXZWJHUFU6OlN1
cHBvcnRlZExpbWl0cyB7CisgICAgICAgICAgICBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFE
KCksCisgICAgICAgICAgICBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJEKCksCisgICAgICAg
ICAgICBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEKCksCisgICAgICAgICAgICBsaW1pdHMu
bWF4VGV4dHVyZUFycmF5TGF5ZXJzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4QmluZEdyb3Vw
cygpLAorICAgICAgICAgICAgbGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVs
aW5lTGF5b3V0KCksCisgICAgICAgICAgICBsaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJz
UGVyUGlwZWxpbmVMYXlvdXQoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTYW1wbGVkVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFNhbXBsZXJzUGVyU2hh
ZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRl
clN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVy
U3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0
YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplKCks
CisgICAgICAgICAgICBsaW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplKCksCisgICAg
ICAgICAgICBsaW1pdHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCgpLAorICAgICAg
ICAgICAgbGltaXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAgICAgICAg
ICAgIGxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4VmVy
dGV4QXR0cmlidXRlcygpLAorICAgICAgICAgICAgbGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5
U3RyaWRlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVu
dHMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUo
KSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAo
KSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgoKSwKKyAgICAg
ICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkoKSwKKyAgICAgICAgICAgIGxp
bWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVooKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhD
b21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbigpLAorICAgICAgICB9KTsKKyAgICB9KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oCmluZGV4IDUwZjM3ZTdlNDY3
MDk4YTE3NmZlNGM0MDc4MzE0OWEwYzFkMzc3ZTEuLjFlYTJjMTAxODZlMWI2Zjg4YjBhMzJjZTA0
Mjc4NWJmYzI4YWYzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oCkBAIC00MSwyMyArNDEsMjQgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsKIHN0cnVjdCBEZXZpY2VEZXNjcmlw
dG9yOwogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5Owogc3RydWN0IFN1
cHBvcnRlZEZlYXR1cmVzOwogc3RydWN0IFN1cHBvcnRlZExpbWl0czsKIH0KIAogY2xhc3MgUmVt
b3RlQWRhcHRlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVBZGFwdGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZUFkYXB0ZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRh
cHRlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQWRhcHRlcihhZGFwdGVyLCBvYmpl
Y3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0ZXIoYWRh
cHRlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIH5SZW1vdGVBZGFwdGVyKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAg
UmVtb3RlQWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYp
OworICAgIFJlbW90ZUFkYXB0ZXIoUEFMOjpXZWJHUFU6OkFkYXB0ZXImLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVBZGFwdGVyKGNvbnN0IFJlbW90ZUFkYXB0ZXImKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVBZGFwdGVyKFJlbW90ZUFkYXB0ZXImJikgPSBkZWxldGU7CkBAIC02OSw3ICs3MCw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0RGV2aWNlKGNvbnN0IFdlYkdQVTo6RGV2aWNlRGVzY3Jp
cHRvciYsIFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJH
UFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiYpPiYmKTsK
IAogICAgIFJlZjxQQUw6OldlYkdQVTo6QWRhcHRlcj4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJH
UFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFw
OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAKaW5kZXggNDcxMGE1NDU5NWU2YjRiNDIw
YWIxMDkyODMzZjcxOGM0OTEyMzBiNC4uMDg1ZjQ5NTM4NGUzZWYzY2M0NGE1MzJjNTY4ODViNDE5
ZmY0MTc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNwcApAQCAtMjksMjMgKzI5LDI4IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgor
I2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVCaW5kR3JvdXAuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90
ZUJpbmRHcm91cDo6UmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRH
cm91cCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlQmluZEdyb3VwOjpS
ZW1vdGVCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoYmlu
ZEdyb3VwKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1f
b2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7
CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcp
OwogfQogCiBSZW1vdGVCaW5kR3JvdXA6On5SZW1vdGVCaW5kR3JvdXAoKQogeworICAgIG1fb2Jq
ZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3Rl
QmluZEdyb3VwOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
bGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oCmluZGV4IDAzZDEwZGY0MTUy
OGFkMTIyYWFhMDNiZTc2YTc4MDNhYmQ4YWI4MWIuLmNlMTQwOGM2N2Q1NDgxMmQ5ZGQ0YzE3ZTYz
ZGQwYjBiMjQ2NzBmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuaApAQCAtNDAsMjEgKzQwLDIyIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhl
YXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwIGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAm
IGJpbmRHcm91cCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlQmluZEdyb3VwPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdy
b3VwLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXAoYmluZEdyb3VwLCBv
YmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91
cChiaW5kR3JvdXAsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQmluZEdyb3VwKCk7CiAKIHByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5
OwogCi0gICAgUmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkJpbmRHcm91
cCYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUJpbmRHcm91cChjb25zdCBSZW1vdGVCaW5kR3JvdXAm
KSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCaW5kR3JvdXAoUmVtb3RlQmluZEdyb3VwJiYpID0gZGVs
ZXRlOwpAQCAtNjYsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5n
JiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXA+IG1fYmFja2luZzsKLSAgICBS
ZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2Jq
ZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuY3BwCmluZGV4
IDhjMGYwZTExZTc3NDllOTk5ZjE0MTY3MWIyNWM4MGMzZDU4NjhjYjkuLjBiMTZmZjI5ODdkMTU0
MmEzYWFhMmFlZDA2NDJlZWFmMmU3ZDUxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExh
eW91dC5jcHAKQEAgLTI5LDIzICsyOSwyOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdp
c3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5
b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OlJl
bW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3Jv
dXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZUJpbmRHcm91
cExheW91dDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlv
dXQmIGJpbmRHcm91cExheW91dCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0
cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIDogbV9iYWNraW5nKGJpbmRHcm91cExheW91dCkKKyAgICAsIG1fb2JqZWN0
UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkK
KyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
YWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQmluZEdyb3Vw
TGF5b3V0Ojp+UmVtb3RlQmluZEdyb3VwTGF5b3V0KCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUJpbmRHcm91cExh
eW91dDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVs
KTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaAppbmRleCBkMGZk
YWNhZWEyYTU0MzlkMWNiZTcxYzZhOGZiM2UxOWM4MTg1ODU1Li4yOGQwYmU0YmI0MzkwODc1NWJi
Zjg5MzhlZDIwOGU2N2ZkZmNmYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgK
QEAgLTQwLDIxICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQ
VSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNz
IFJlbW90ZUJpbmRHcm91cExheW91dCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VS
ZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+
IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRH
cm91cExheW91dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91
cExheW91dCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGJp
bmRHcm91cExheW91dCwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0LCBvYmplY3RSZWdpc3RyeSwg
b2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJp
bmRHcm91cExheW91dCgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFw
OworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZUJpbmRHcm91
cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RIZWFw
Jik7CisgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlv
dXQmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BV
SWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KFJlbW90
ZUJpbmRHcm91cExheW91dCYmKSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwTGF5b3V0PiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9v
YmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7
CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVm
ZmVyLmNwcAppbmRleCAwZmMyNmU0YjU4ODllMDgzMTNkNmE3YjkzZjdlZDE2NGRmNTZlYTk4Li44
YTVkMjhiNmRlZDYzOWU1MmViNTgzZGI3MjJjYTUwMTM3Mzg0ZjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIu
Y3BwCkBAIC0yOSwyMSArMjksMjcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnku
aCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBB
TDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
KQorUmVtb3RlQnVmZmVyOjpSZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVy
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2Jh
Y2tpbmcoYnVmZmVyKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAg
ICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2Jh
Y2tpbmcpOwogfQogCiBSZW1vdGVCdWZmZXI6On5SZW1vdGVCdWZmZXIoKQogeworICAgIG1fb2Jq
ZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3Rl
QnVmZmVyOjptYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFncywg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3Rvcjx1aW50OF90PiYmKT4mJiBjYWxsYmFjaykKIHsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCiAgICAgVU5VU0VEX1BBUkFNKG1hcE1vZGVGbGFncyk7CiAgICAgVU5VU0VEX1BBUkFN
KG9mZnNldCk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKQEAgLTUxLDE2ICs1NywxOCBA
QCB2b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBt
YXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYQogCiB2b2lkIFJlbW90ZUJ1ZmZlcjo6dW5tYXAoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiAg
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOwogfQogCiB2b2lkIFJlbW90ZUJ1ZmZlcjo6ZGVzdHJveSgp
CiB7CisgICAgbV9iYWNraW5nLT5kZXN0cm95KCk7CiB9CiAKIHZvaWQgUmVtb3RlQnVmZmVyOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAg
IG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUJ1ZmZlci5oCmluZGV4IDE0YTQ1YTdkZGFlN2Q0MzE4Njc1NDBkZTA5Mjg5
MjIxMGQzNDE1MmQuLmQyMjQ4ZGMyYzkxNWZlNTNiNGYzM2E2MTlhZTQwYTg1NTMxMTBjNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCdWZmZXIuaApAQCAtNDUsMjEgKzQ1LDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIH0KIAogY2xhc3MgUmVtb3RlQnVmZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlcj4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQnVmZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OkJ1ZmZlciYgYnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCdWZmZXIoYnVm
ZmVyLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1
ZmZlcihidWZmZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQnVmZmVyKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5Owog
Ci0gICAgUmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImLCBXZWJHUFU6Ok9iamVjdEhl
YXAmKTsKKyAgICBSZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZlciYsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAog
ICAgIFJlbW90ZUJ1ZmZlcihjb25zdCBSZW1vdGVCdWZmZXImKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVCdWZmZXIoUmVtb3RlQnVmZmVyJiYpID0gZGVsZXRlOwpAQCAtNzYsNyArNzcsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BV
OjpCdWZmZXI+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVj
dEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAg
ICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggNDRhOWQ1OTEzZmQzZThjMWZlYzY5NjFhNWFjZjI4YTAy
ZDgyMGIzOS4uYTljNmEyYjZlNjAzZjQwNzgwY2FlYTAwN2I1NzNiMmU0ZDZkNGEzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21t
YW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwCkBAIC0yOSwyMyArMjksMjggQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUNvbW1hbmRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUNv
bW1hbmRCdWZmZXI6OlJlbW90ZUNvbW1hbmRCdWZmZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZm
ZXImIGNvbW1hbmRCdWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90
ZUNvbW1hbmRCdWZmZXI6OlJlbW90ZUNvbW1hbmRCdWZmZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRC
dWZmZXImIGNvbW1hbmRCdWZmZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lz
dHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICA6IG1fYmFja2luZyhjb21tYW5kQnVmZmVyKQorICAgICwgbV9vYmplY3RS
ZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5h
ZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVDb21tYW5kQnVm
ZmVyOjp+UmVtb3RlQ29tbWFuZEJ1ZmZlcigpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1v
dmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kQnVmZmVyOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAg
IG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmgKaW5kZXggZGE1NmZiYTZhOGMzNjNi
NjYyMjU5ZTZiNmI1MDNkZTViY2E1NjAwNy4uMTQwYzFhNDhhMTFkZWY5Y2FiYWM5YTUxYzg0YTFj
ZGRjNzQyZDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmgKQEAgLTQwLDIxICs0MCwy
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmpl
Y3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRC
dWZmZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUEFMOjpX
ZWJHUFU6OkNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZUNvbW1hbmRCdWZmZXIoY29tbWFuZEJ1ZmZlciwgb2JqZWN0SGVhcCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZm
ZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZEJ1ZmZlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVu
ZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAot
ICAgIFJlbW90ZUNvbW1hbmRCdWZmZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXImLCBXZWJH
UFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpD
b21tYW5kQnVmZmVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihjb25zdCBS
ZW1vdGVDb21tYW5kQnVmZmVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihS
ZW1vdGVDb21tYW5kQnVmZmVyJiYpID0gZGVsZXRlOwpAQCAtNjYsNyArNjcsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpD
b21tYW5kQnVmZmVyPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9v
YmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7
CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21tYW5kRW5jb2Rlci5jcHAKaW5kZXggNTY4ZDAxMmFmYWRjZWZhODEyOGFjNjkzYzE3
YzcyNzQ0YTRlZDVjNS4uNzA5MjEwODY4NDE4NDYwZjBmNTNlYjY2MmFmMTMwYWE0MDgxMjgyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21tYW5kRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5jcHAKQEAgLTI4LDMyICsyOCw1MCBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEJ1ZmZl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oIgorI2luY2x1ZGUgIlJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBhc3NEZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQ
VU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVD
b21tYW5kRW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQ29tbWFuZEVu
Y29kZXI6OlJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYg
Y29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZUNv
bW1hbmRFbmNvZGVyOjpSZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tbWFuZEVu
Y29kZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdp
c3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29tbWFuZEVuY29kZXIpCisgICAgLCBtX29iamVj
dFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXAp
CisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5
LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZUNvbW1hbmRF
bmNvZGVyOjp+UmVtb3RlQ29tbWFuZEVuY29kZXIoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
cmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29k
ZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBXZWJHUFU6OlJlbmRlclBhc3NEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRv
IGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
ZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0
byByZW5kZXJQYXNzRW5jb2RlciA9IG1fYmFja2luZy0+YmVnaW5SZW5kZXJQYXNzKCpjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyID0gUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShyZW5kZXJQYXNzRW5jb2RlciwgbV9vYmplY3RSZWdp
c3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6Q29tcHV0
ZVBhc3NEZXNjcmlwdG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRl
bnRpZmllcik7CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNj
cmlwdG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOworICAgIGlmIChkZXNjcmlwdG9yKSB7CisgICAg
ICAgIGF1dG8gcmVzdWx0RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21C
YWNraW5nKCpkZXNjcmlwdG9yKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdERlc2NyaXB0b3IpOwor
ICAgICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gV1RGTW92ZShyZXN1bHREZXNjcmlwdG9yKTsK
KyAgICB9CisgICAgYXV0byBjb21wdXRlUGFzc0VuY29kZXIgPSBtX2JhY2tpbmctPmJlZ2luQ29t
cHV0ZVBhc3MoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gY29tcHV0ZVJlbmRlclBh
c3NFbmNvZGVyID0gUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUoY29tcHV0ZVBhc3NF
bmNvZGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAg
IG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoY29tcHV0ZVJlbmRlclBhc3NFbmNvZGVyKTsKIH0KIAog
dm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKApAQCAtNjMsMTEg
KzgxLDExIEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigK
ICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAogICAgIFBBTDo6V2Vi
R1BVOjpTaXplNjQgc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVT
RURfUEFSQU0oc291cmNlT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNp
emUpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
QnVmZmVyRnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
QnVmZmVyRnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRp
b24pOworICAgIG1fYmFja2luZy0+Y29weUJ1ZmZlclRvQnVmZmVyKCpjb252ZXJ0ZWRTb3VyY2Us
IHNvdXJjZU9mZnNldCwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCwg
c2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1
cmUoCkBAIC03NSw5ICs5MywxMyBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVm
ZmVyVG9UZXh0dXJlKAogICAgIGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGlu
YXRpb24sCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oY29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVy
dGVkU291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0
ZWREZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsKKyAgICBBU1NFUlQoY29udmVydGVk
Q29weVNpemUpOworICAgIG1fYmFja2luZy0+Y29weUJ1ZmZlclRvVGV4dHVyZSgqY29udmVydGVk
U291cmNlLCAqY29udmVydGVkRGVzdGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSk7CiB9CiAK
IHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoCkBAIC04NSw5
ICsxMDcsMTMgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZl
cigKICAgICBjb25zdCBXZWJHUFU6OkltYWdlQ29weUJ1ZmZlciYgZGVzdGluYXRpb24sCiAgICAg
Y29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNv
dXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0o
Y29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlv
bik7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEZyb21CYWNraW5nKGNvcHlTaXplKTsKKyAgICBBU1NFUlQoY29udmVydGVkQ29weVNpemUpOwor
ICAgIG1fYmFja2luZy0+Y29weVRleHR1cmVUb0J1ZmZlcigqY29udmVydGVkU291cmNlLCAqY29u
dmVydGVkRGVzdGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKApAQCAtOTUsOSArMTIxLDEzIEBA
IHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAgIGNv
bnN0IFdlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCiAgICAgY29uc3QgV2Vi
R1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oY29weVNpemUp
OworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJv
bUJhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKKyAgICBhdXRv
IGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tp
bmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAg
YXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKGNvcHlTaXplKTsKKyAgICBBU1NFUlQoY29udmVydGVkQ29weVNpemUpOworICAgIG1fYmFj
a2luZy0+Y29weVRleHR1cmVUb1RleHR1cmUoKmNvbnZlcnRlZFNvdXJjZSwgKmNvbnZlcnRlZERl
c3RpbmF0aW9uLCAqY29udmVydGVkQ29weVNpemUpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpmaWxsQnVmZmVyKApAQCAtMTA1LDI5ICsxMzUsMzEgQEAgdm9pZCBSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0
aW9uT2Zmc2V0LAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgc2l6ZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24g
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7
CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBtX2JhY2tpbmctPmZpbGxC
dWZmZXIoKmNvbnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSk7CiB9
CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdy
b3VwTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOworICAgIG1fYmFja2lu
Zy0+cHVzaERlYnVnR3JvdXAoV1RGTW92ZShncm91cExhYmVsKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29tbWFuZEVuY29kZXI6OnBvcERlYnVnR3JvdXAoKQogeworICAgIG1fYmFja2luZy0+cG9wRGVi
dWdHcm91cCgpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjppbnNlcnREZWJ1Z01h
cmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFi
ZWwpOworICAgIG1fYmFja2luZy0+aW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJl
bCkpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjp3cml0ZVRpbWVzdGFtcChXZWJH
UFVJZGVudGlmaWVyIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRl
eCk7CisgICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQpOworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVy
eVNldCk7CisgICAgbV9iYWNraW5nLT53cml0ZVRpbWVzdGFtcCgqY29udmVydGVkUXVlcnlTZXQs
IHF1ZXJ5SW5kZXgpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpyZXNvbHZlUXVl
cnlTZXQoCkBAIC0xMzcsMjIgKzE2OSwyNSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpy
ZXNvbHZlUXVlcnlTZXQoCiAgICAgV2ViR1BVSWRlbnRpZmllciBkZXN0aW5hdGlvbiwKICAgICBQ
QUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJB
TShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0UXVlcnkpOwotICAgIFVOVVNFRF9Q
QVJBTShxdWVyeUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNl
dCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQp
OworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0
aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGRlc3Rp
bmF0aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIG1fYmFja2lu
Zy0+cmVzb2x2ZVF1ZXJ5U2V0KCpjb252ZXJ0ZWRRdWVyeVNldCwgZmlyc3RRdWVyeSwgcXVlcnlD
b3VudCwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCk7CiB9CiAKIHZv
aWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmZpbmlzaChjb25zdCBXZWJHUFU6OkNvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlm
aWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CisgICAgYXV0byBjb21tYW5kQnVmZmVyID0gbV9iYWNraW5nLT5maW5pc2goKmNvbnZl
cnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlQ29tbWFuZEJ1ZmZlciA9IFJlbW90ZUNv
bW1hbmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29i
amVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3Rl
Q29tbWFuZEJ1ZmZlcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OnNldExhYmVs
KFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNr
aW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oCmluZGV4IGNiNjBlNGIxMzg2YTJlM2UwY2Rk
NTliNzZiZjJmOGY2NjRlYjM4MDQuLmJiNjA0YWE3YzhhZGRiNGMxZjBiOWUwMDBkY2JiYWFmNDk4
NzIyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmgKQEAgLTQ2LDIyICs0NiwyMyBA
QCBzdHJ1Y3QgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yOwogc3RydWN0IEltYWdlQ29weUJ1ZmZlcjsK
IHN0cnVjdCBJbWFnZUNvcHlUZXh0dXJlOwogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVj
dFJlZ2lzdHJ5Owogc3RydWN0IFJlbmRlclBhc3NEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBSZW1v
dGVDb21tYW5kRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5jb2Rlcj4gY3JlYXRl
KFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRFbmNvZGVy
PiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlciwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEVuY29kZXIoY29tbWFuZEVuY29kZXIs
IG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFu
ZEVuY29kZXIoY29tbWFuZEVuY29kZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVu
dGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZEVuY29kZXIoKTsK
IAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xh
c3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQ
VTo6Q29tbWFuZEVuY29kZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVDb21t
YW5kRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVDb21tYW5kRW5jb2Rlcihjb25zdCBSZW1vdGVDb21tYW5kRW5jb2RlciYpID0gZGVsZXRl
OwogICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyKFJlbW90ZUNvbW1hbmRFbmNvZGVyJiYpID0gZGVs
ZXRlOwpAQCAtMTE4LDcgKzExOSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJp
bmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPiBtX2JhY2tpbmc7
Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyLmNwcAppbmRleCA0MzUwYTlmNmRmMDBmNDVjMWMyMTU5ZmM2MWIzN2M3YmUyMWVmOTA0Li41
OGEwMGU4OGI2MDFmMmFmZmQyYTg0YzE3MGYxOTc0M2JlYWNhOTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3BwCkBAIC0yOSw3NyArMjksODcgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoUEFMOjpXZWJH
UFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFz
c0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICA6IG1fYmFja2luZyhjb21wdXRlUGFzc0VuY29kZXIpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5
KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVj
dChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
cjo6flJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcigpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5y
ZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXI6OnNldFBpcGVsaW5lKFdlYkdQVUlkZW50aWZpZXIgY29tcHV0ZVBpcGVsaW5lKQogewot
ICAgIFVOVVNFRF9QQVJBTShjb21wdXRlUGlwZWxpbmUpOworICAgIGF1dG8gY29udmVydGVkQ29t
cHV0ZVBpcGVsaW5lID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJv
bUJhY2tpbmcoY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBBU1NFUlQoY29udmVydGVkQ29tcHV0ZVBp
cGVsaW5lKTsKKyAgICBtX2JhY2tpbmctPnNldFBpcGVsaW5lKCpjb252ZXJ0ZWRDb21wdXRlUGlw
ZWxpbmUpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2goUEFM
OjpXZWJHUFU6OlNpemUzMiB4LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+IHks
IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUzMj4geikKIHsKLSAgICBVTlVTRURfUEFS
QU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh6KTsKKyAgICBt
X2JhY2tpbmctPmRpc3BhdGNoKHgsIHksIHopOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2Rlcjo6ZGlzcGF0Y2hJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVy
LCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJB
TShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAg
ICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJ
bmRpcmVjdEJ1ZmZlcik7CisgICAgbV9iYWNraW5nLT5kaXNwYXRjaEluZGlyZWN0KCpjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlcjo6YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJHUFVJZGVudGlm
aWVyIHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHF1ZXJ5U2V0KTsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAg
YXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFF1ZXJ5U2V0
RnJvbUJhY2tpbmcocXVlcnlTZXQpOworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7Cisg
ICAgbV9iYWNraW5nLT5iZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCpjb252ZXJ0ZWRRdWVy
eVNldCwgcXVlcnlJbmRleCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpl
bmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCiB7CisgICAgbV9iYWNraW5nLT5lbmRQaXBlbGlu
ZVN0YXRpc3RpY3NRdWVyeSgpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6
ZW5kUGFzcygpCiB7CisgICAgbV9iYWNraW5nLT5lbmRQYXNzKCk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5k
ZXgsIFdlYkdQVUlkZW50aWZpZXIgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBvZmZzZXRzKQogewotICAgIFVO
VVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5V
U0VEX1BBUkFNKG9mZnNldHMpOworICAgIGF1dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBB
U1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsKKyAgICBtX2JhY2tpbmctPnNldEJpbmRHcm91cChp
bmRleCwgKmNvbnZlcnRlZEJpbmRHcm91cCwgV1RGTW92ZShvZmZzZXRzKSk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExh
YmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAgICBtX2JhY2tpbmctPnB1
c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCiB7CisgICAgbV9iYWNraW5nLT5wb3BEZWJ1
Z0dyb3VwKCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjppbnNlcnREZWJ1
Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2Vy
TGFiZWwpOworICAgIG1fYmFja2luZy0+aW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJM
YWJlbCkpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoU3Ry
aW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmct
PnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaAppbmRleCA3N2FmYmQ4ZTljNTRlZjYy
NDcxZmQwODRkMzEyNmY4MWYxMjhlYzUzLi4wMGY5ZGQzMGQ3MTY1ZWJmOThkM2JhNWE3ZmVhOGEw
MWI2MGU5OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTQx
LDIxICs0MSwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBj
bGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29k
ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29k
ZXImIGNvbXB1dGVQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyKGNvbXB1dGVQYXNzRW5jb2Rlciwgb2JqZWN0SGVhcCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29tcHV0ZVBh
c3NFbmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcigpOwogCiBwcml2YXRl
OgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RS
ZWdpc3RyeTsKIAotICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAK
ICAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29uc3QgUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlciYmKSA9IGRlbGV0ZTsKQEAgLTgzLDcgKzg0LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0
ZVBhc3NFbmNvZGVyPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9v
YmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7
CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0
ZVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmNwcAppbmRleCA5YjlkOTA5NDgxOTJjNGJmMDAzNDFjZjhi
ZTY4ZjQ2ZmRlNGNmZGFjLi43MDE2YTFmOTc5MDllYzJiNGI2ZmZkMGYxYjhiMzRiZjRmMTFlNjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuY3BwCkBAIC0yOCwzMCArMjgsMzgg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91
cExheW91dC5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJH
UFVPYmplY3RSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
QmluZEdyb3VwTGF5b3V0Lmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVD
b21wdXRlUGlwZWxpbmUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUNvbXB1dGVQ
aXBlbGluZTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxp
bmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lOjpSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNv
bXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBv
YmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29tcHV0ZVBpcGVsaW5lKQorICAg
ICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChv
YmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmpl
Y3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1v
dGVDb21wdXRlUGlwZWxpbmU6On5SZW1vdGVDb21wdXRlUGlwZWxpbmUoKQogeworICAgIG1fb2Jq
ZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgaW5kZXgsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAg
IFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGJpbmRHcm91cExheW91dCA9IG1f
YmFja2luZy0+Z2V0QmluZEdyb3VwTGF5b3V0KGluZGV4KTsKKyAgICBhdXRvIHJlbW90ZUJpbmRH
cm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91cExheW91
dCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29i
amVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJpbmRHcm91cExheW91dCk7CiB9CiAKIHZvaWQgUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGlu
ZS5oCmluZGV4IGViMzQwNDNkNzQ4ZmJmN2VmNmJlYTJiMzJkNTA5ZTZmMGNmMmIwMjMuLjg0ZGFh
Yjg2Y2M2OWRiNGYzMzUxZTFmYzEwZWYzNDYzYmE3NzdkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21w
dXRlUGlwZWxpbmUuaApAQCAtNDAsMjEgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIH0KIAogY2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIElQQzo6
U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNv
bXB1dGVQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1
dGVQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZSYgY29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdp
c3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21w
dXRlUGlwZWxpbmUoY29tcHV0ZVBpcGVsaW5lLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmUsIG9i
amVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAg
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmLCBXZWJH
UFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6
OkNvbXB1dGVQaXBlbGluZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVj
dEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZShj
b25zdCBSZW1vdGVDb21wdXRlUGlwZWxpbmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVDb21wdXRl
UGlwZWxpbmUoUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJiYpID0gZGVsZXRlOwpAQCAtNjgsNyArNjks
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBB
TDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpP
YmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9v
YmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAg
ICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVEZXZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVEZXZpY2UuY3BwCmluZGV4IGI0MDEyYWE3ODY1ODdhNDEyNzRmMDhkYmZhZTVh
MmNkOWY2MDUyOWIuLjVkYzE3MDk5NjBlNmYzZjcwMmRjMGQ0MjUzMzg3ZjdmZTQ4ZDY1NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
RGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZURldmljZS5jcHAKQEAgLTI4LDEzMSArMjgsMjQ2IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXAuaCIKKyNpbmNsdWRlICJSZW1v
dGVCaW5kR3JvdXBMYXlvdXQuaCIKKyNpbmNsdWRlICJSZW1vdGVCdWZmZXIuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDb21tYW5kRW5jb2Rlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGlu
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUV4dGVybmFsVGV4dHVyZS5oIgorI2luY2x1ZGUgIlJlbW90
ZVBpcGVsaW5lTGF5b3V0LmgiCisjaW5jbHVkZSAiUmVtb3RlUXVlcnlTZXQuaCIKKyNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGlw
ZWxpbmUuaCIKKyNpbmNsdWRlICJSZW1vdGVTYW1wbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlU2hh
ZGVyTW9kdWxlLmgiCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdQ
VUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkdQVU91
dE9mTWVtb3J5RXJyb3IuaCIKKyNpbmNsdWRlICJXZWJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKKyNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgorI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oPgorI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmg+
CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIuaD4KKyNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuaD4KKyNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+CisjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaD4KKyNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+CisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4KKyNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3Iu
aD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+
CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+
CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3Iu
aD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29k
ZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVu
Y29kZXJEZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVTYW1wbGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1w
bGVyRGVzY3JpcHRvci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVU
ZXh0dXJlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5oPgorCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVEZXZpY2U6OlJlbW90
ZURldmljZShQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCkKK1JlbW90ZURldmljZTo6UmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZp
Y2UmIGRldmljZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIDogbV9iYWNraW5nKGRldmljZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVn
aXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRp
ZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlRGV2aWNlOjp+UmVtb3RlRGV2aWNlKCkKIHsK
KyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2
b2lkIFJlbW90ZURldmljZTo6ZGVzdHJveSgpCiB7CisgICAgbV9iYWNraW5nLT5kZXN0cm95KCk7
CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29uc3QgV2ViR1BVOjpCdWZm
ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlm
aWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CisgICAgYXV0byBidWZmZXIgPSBtX2JhY2tpbmctPmNyZWF0ZUJ1ZmZlcigqY29udmVy
dGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVCdWZmZXIgPSBSZW1vdGVCdWZmZXI6OmNy
ZWF0ZShidWZmZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7
CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVCdWZmZXIpOwogfQogCiB2b2lkIFJl
bW90ZURldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXZWJHUFU6OlRleHR1cmVEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBh
dXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFj
a2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAg
YXV0byB0ZXh0dXJlID0gbV9iYWNraW5nLT5jcmVhdGVUZXh0dXJlKCpjb252ZXJ0ZWREZXNjcmlw
dG9yKTsKKyAgICBhdXRvIHJlbW90ZVRleHR1cmUgPSBSZW1vdGVUZXh0dXJlOjpjcmVhdGUodGV4
dHVyZSwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBt
X29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVRleHR1cmUpOwogfQogCiB2b2lkIFJlbW90ZURl
dmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNv
bnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhk
ZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byBz
YW1wbGVyID0gbV9iYWNraW5nLT5jcmVhdGVTYW1wbGVyKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsK
KyAgICBhdXRvIHJlbW90ZVNhbXBsZXIgPSBSZW1vdGVTYW1wbGVyOjpjcmVhdGUoc2FtcGxlciwg
bV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVj
dEhlYXAuYWRkT2JqZWN0KHJlbW90ZVNhbXBsZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6
aW1wb3J0RXh0ZXJuYWxUZXh0dXJlKGNvbnN0IFdlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlRGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJv
bUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwor
ICAgIGF1dG8gZXh0ZXJuYWxUZXh0dXJlID0gbV9iYWNraW5nLT5pbXBvcnRFeHRlcm5hbFRleHR1
cmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlRXh0ZXJuYWxUZXh0dXJl
ID0gUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpjcmVhdGUoZXh0ZXJuYWxUZXh0dXJlLCBtX29iamVj
dFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5h
ZGRPYmplY3QocmVtb3RlRXh0ZXJuYWxUZXh0dXJlKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6
OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXZWJHUFU6OkJpbmRHcm91cExheW91dERlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBV
TlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwor
ICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsK
KyAgICBhdXRvIGJpbmRHcm91cExheW91dCA9IG1fYmFja2luZy0+Y3JlYXRlQmluZEdyb3VwTGF5
b3V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91
dCA9IFJlbW90ZUJpbmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmpl
Y3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAu
YWRkT2JqZWN0KHJlbW90ZUJpbmRHcm91cExheW91dCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNl
OjpjcmVhdGVQaXBlbGluZUxheW91dChjb25zdCBXZWJHUFU6OlBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJv
bUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwor
ICAgIGF1dG8gcGlwZWxpbmVMYXlvdXQgPSBtX2JhY2tpbmctPmNyZWF0ZVBpcGVsaW5lTGF5b3V0
KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0g
UmVtb3RlUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShwaXBlbGluZUxheW91dCwgbV9vYmplY3RSZWdp
c3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KHJlbW90ZVBpcGVsaW5lTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0
ZUJpbmRHcm91cChjb25zdCBXZWJHUFU6OkJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3Jp
cHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0
b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIGJpbmRHcm91
cCA9IG1fYmFja2luZy0+Y3JlYXRlQmluZEdyb3VwKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAg
ICBhdXRvIHJlbW90ZUJpbmRHcm91cCA9IFJlbW90ZUJpbmRHcm91cDo6Y3JlYXRlKGJpbmRHcm91
cCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29i
amVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJpbmRHcm91cCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2
aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7Cisg
ICAgYXV0byBzaGFkZXJNb2R1bGUgPSBtX2JhY2tpbmctPmNyZWF0ZVNoYWRlck1vZHVsZSgqY29u
dmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVTaGFkZXJNb2R1bGUgPSBSZW1vdGVT
aGFkZXJNb2R1bGU6OmNyZWF0ZShzaGFkZXJNb2R1bGUsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVT
aGFkZXJNb2R1bGUpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVs
aW5lKGNvbnN0IFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlw
dG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0byBjb252ZXJ0ZWRE
ZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRv
cik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gY29tcHV0ZVBp
cGVsaW5lID0gbV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKmNvbnZlcnRlZERlc2Ny
aXB0b3IpOworICAgIGF1dG8gcmVtb3RlQ29tcHV0ZVBpcGVsaW5lID0gUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVsaW5lLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVj
dEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQ29t
cHV0ZVBpcGVsaW5lKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVs
aW5lKGNvbnN0IFdlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0
b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERl
c2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9y
KTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW5kZXJQaXBl
bGluZSA9IG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoKmNvbnZlcnRlZERlc2NyaXB0
b3IpOworICAgIGF1dG8gcmVtb3RlUmVuZGVyUGlwZWxpbmUgPSBSZW1vdGVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKHJlbmRlclBpcGVsaW5lLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAs
IGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUmVuZGVyUGlw
ZWxpbmUpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5
bmMoY29uc3QgV2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVT
RURfUEFSQU0oaWRlbnRpZmllcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBh
dXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFj
a2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAg
bV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygqY29udmVydGVkRGVzY3JpcHRv
ciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0
cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0gbV9v
YmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVs
aW5lPiYmIGNvbXB1dGVQaXBlbGluZSkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha09iamVj
dEhlYXApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gcmVtb3RlQ29tcHV0ZVBp
cGVsaW5lID0gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVsaW5lLCBv
YmplY3RSZWdpc3RyeSwgKndlYWtPYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICAgICAgd2Vh
a09iamVjdEhlYXAtPmFkZE9iamVjdChyZW1vdGVDb21wdXRlUGlwZWxpbmUpOworICAgICAgICBj
YWxsYmFjaygpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyhjb25zdCBXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7
Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFj
ayk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0
b3IpOworICAgIG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqY29udmVydGVk
RGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFw
ID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lz
dHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQVTo6UmVu
ZGVyUGlwZWxpbmU+JiYgcmVuZGVyUGlwZWxpbmUpIG11dGFibGUgeworICAgICAgICBpZiAoIXdl
YWtPYmplY3RIZWFwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHJlbW90ZVJl
bmRlclBpcGVsaW5lID0gUmVtb3RlUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShyZW5kZXJQaXBlbGlu
ZSwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgICAg
IHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3RlUmVuZGVyUGlwZWxpbmUpOworICAgICAg
ICBjYWxsYmFjaygpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQ29t
bWFuZEVuY29kZXIoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OkNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIp
OworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyRGVzY3JpcHRv
cj4gY29udmVydGVkRGVzY3JpcHRvcjsKKyAgICBpZiAoZGVzY3JpcHRvcikgeworICAgICAgICBh
dXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
ZygqZGVzY3JpcHRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHREZXNjcmlwdG9yKTsKKyAgICAg
ICAgY29udmVydGVkRGVzY3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVzY3JpcHRvcik7CisgICAg
fQorICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbW1hbmRFbmNv
ZGVyID0gbV9iYWNraW5nLT5jcmVhdGVDb21tYW5kRW5jb2RlcigqY29udmVydGVkRGVzY3JpcHRv
cik7CisgICAgYXV0byByZW1vdGVDb21tYW5kRW5jb2RlciA9IFJlbW90ZUNvbW1hbmRFbmNvZGVy
OjpjcmVhdGUoY29tbWFuZEVuY29kZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVDb21tYW5kRW5j
b2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVy
KGNvbnN0IFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3Jp
cHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0
b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbmRlckJ1
bmRsZUVuY29kZXIgPSBtX2JhY2tpbmctPmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoKmNvbnZl
cnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciA9IFJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0ZShyZW5kZXJCdW5kbGVFbmNvZGVyLCBtX29i
amVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVh
cC5hZGRPYmplY3QocmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3Rl
RGV2aWNlOjpjcmVhdGVRdWVyeVNldChjb25zdCBXZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVOVVNFRF9Q
QVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tp
bmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1
dG8gcXVlcnlTZXQgPSBtX2JhY2tpbmctPmNyZWF0ZVF1ZXJ5U2V0KCpjb252ZXJ0ZWREZXNjcmlw
dG9yKTsKKyAgICBhdXRvIHJlbW90ZVF1ZXJ5U2V0ID0gUmVtb3RlUXVlcnlTZXQ6OmNyZWF0ZShx
dWVyeVNldCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAg
ICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVF1ZXJ5U2V0KTsKIH0KIAogdm9pZCBSZW1v
dGVEZXZpY2U6OnB1c2hFcnJvclNjb3BlKFBBTDo6V2ViR1BVOjpFcnJvckZpbHRlciBlcnJvckZp
bHRlcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3JGaWx0ZXIpOworICAgIG1fYmFja2luZy0+
cHVzaEVycm9yU2NvcGUoZXJyb3JGaWx0ZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6cG9w
RXJyb3JTY29wZShXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJH
UFU6OkVycm9yPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2sp
OworICAgIG1fYmFja2luZy0+cG9wRXJyb3JTY29wZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkVycm9yPiYmIGVycm9yKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6c3dp
dGNoT24oKmVycm9yLCBbJl0gKFJlZjxQQUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvcj4gb3V0
T2ZNZW1vcnlFcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2soeyBXZWJHUFU6Ok91dE9mTWVt
b3J5RXJyb3IgeyB9IH0pOworICAgICAgICB9LCBbJl0gKFJlZjxQQUw6OldlYkdQVTo6VmFsaWRh
dGlvbkVycm9yPiB2YWxpZGF0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgV2Vi
R1BVOjpWYWxpZGF0aW9uRXJyb3IgeyB2YWxpZGF0aW9uRXJyb3ItPm1lc3NhZ2UoKSB9IH0pOwor
ICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OnNldExhYmVsKFN0
cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5n
LT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVEZXZpY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlRGV2aWNlLmgKaW5kZXggOWVhMjBhNzNiYmJlNWQwNzYzODFmODcxZGYyNjJmMmQxODQ1Yzgz
YS4uNDk3Y2RhMDk2MTRlZTQ2YWQwYzE1NzkyOGQxNmEyMmFiNjBiZTc2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmlj
ZS5oCkBAIC00OSw2ICs0OSw3IEBAIHN0cnVjdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I7CiBz
dHJ1Y3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKIHN0cnVjdCBFeHRlcm5hbFRleHR1cmVE
ZXNjcmlwdG9yOwogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5Owogc3Ry
dWN0IFBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKIHN0cnVjdCBRdWVyeVNldERlc2NyaXB0b3I7
CiBzdHJ1Y3QgUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I7CkBAIC02MCwxNyArNjEsMTcg
QEAgc3RydWN0IFRleHR1cmVEZXNjcmlwdG9yOwogCiBjbGFzcyBSZW1vdGVEZXZpY2UgZmluYWwg
OiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlRGV2aWNlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2aWNlLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVEZXZp
Y2U+IGNyZWF0ZShQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZURldmljZShkZXZpY2UsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlRGV2aWNlKGRldmljZSwgb2JqZWN0UmVnaXN0cnksIG9iamVj
dEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3RlRGV2aWNlKCk7CiAKIHBy
aXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9i
amVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZpY2UmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRldmlj
ZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZURldmljZShjb25zdCBSZW1vdGVEZXZpY2UmKSA9IGRl
bGV0ZTsKICAgICBSZW1vdGVEZXZpY2UoUmVtb3RlRGV2aWNlJiYpID0gZGVsZXRlOwpAQCAtMTA3
LDcgKzEwOCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAg
ICBSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9i
amVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29i
amVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAKaW5kZXggNjhiYzRkOTdiNWYw
Yjg3ZmU5MTZiZDcwNTNjZDQzZDg0NTdhNjk3Yy4uOTUzZDBlNGQ4MGE2ZWY4ZmRiM2Q3NjE1N2Q3
MmNhNDQ5ZTg0MDJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcApAQCAt
MjksMjMgKzI5LDI4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUV4dGVybmFsVGV4dHVyZTo6UmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpSZW1v
dGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxU
ZXh0dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
OiBtX2JhY2tpbmcoZXh0ZXJuYWxUZXh0dXJlKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmpl
Y3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9p
ZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVFeHRlcm5hbFRleHR1cmU6On5SZW1v
dGVFeHRlcm5hbFRleHR1cmUoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0
KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpzZXRMYWJl
bChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFj
a2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oCmluZGV4IGRmY2RlM2Q3OGRkMjNkNWRk
ODAzZWU1M2NiNjk0NGM4ZjhhODVjM2QuLjMxZDFjNTQzOTkyYmJiYmVmMTM0NjJiZDEwM2JiODI4
ZTFmZjk2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaApAQCAtNDAsMjEgKzQw
LDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9i
amVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlRXh0ZXJu
YWxUZXh0dXJlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVybmFsVGV4dHVyZT4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPiBj
cmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlLCBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVFeHRlcm5hbFRleHR1cmUoZXh0ZXJuYWxUZXh0dXJl
LCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUV4dGVy
bmFsVGV4dHVyZShleHRlcm5hbFRleHR1cmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlRXh0ZXJuYWxUZXh0dXJl
KCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5k
IGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFBBTDo6
V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1v
dGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYsIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsK
IAogICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZShjb25zdCBSZW1vdGVFeHRlcm5hbFRleHR1cmUm
KSA9IGRlbGV0ZTsKICAgICBSZW1vdGVFeHRlcm5hbFRleHR1cmUoUmVtb3RlRXh0ZXJuYWxUZXh0
dXJlJiYpID0gZGVsZXRlOwpAQCAtNjYsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmU+
IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7Cisg
ICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6
Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCmluZGV4IGFkNDBm
NTA1YmNiNDA2MzU2MzRjOTY1ZmRmYWJmYWMxYjA3MjQ4OTYuLjYwYjlkZjA1NDEwYjZkODEwMDM2
ZjczM2IzYjY2MzZkY2YwNzdjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKQEAgLTI4LDI1ICsyOCw3MSBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQWRhcHRlci5oIgog
I2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdp
c3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1SZW1vdGVHUFU6OlJlbW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiBncHUsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZUdQVTo6UmVtb3RlR1BVKFBBTDo6V2Vi
R1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIDogbV9iYWNraW5nKGdwdSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVn
aXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRp
ZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkKIHsKKyAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJl
bW90ZUdQVTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlv
bnMmIG9wdGlvbnMsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2ViR1BV
OjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4mJiBjYWxs
YmFjaykKK3ZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVl
c3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYsIFdlYkdQVTo6U3VwcG9ydGVkRmVh
dHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYgY2FsbGJhY2spCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAg
YXV0byBjb252ZXJ0ZWRPcHRpb25zID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tp
bmcob3B0aW9ucyk7CisgICAgQVNTRVJUKGNvbnZlcnRlZE9wdGlvbnMpOworICAgIG1fYmFja2lu
Zy0+cmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BVOjpPYmplY3RIZWFwPiht
X29iamVjdEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0cnksIGlkZW50aWZp
ZXJdIChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlcikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha09iamVjdEhlYXAgfHwgIWFkYXB0ZXIpIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBEZWFsIHdpdGggZmFpbHVyZSBoZXJlLgorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGF1dG8gcmVtb3RlQWRhcHRlciA9IFJlbW90ZUFkYXB0ZXI6OmNyZWF0
ZSgqYWRhcHRlciwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7
CisgICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3RlQWRhcHRlcik7CisgICAg
ICAgIGF1dG8gbmFtZSA9IGFkYXB0ZXItPm5hbWUoKTsKKyAgICAgICAgY29uc3QgYXV0byYgZmVh
dHVyZXMgPSBhZGFwdGVyLT5mZWF0dXJlcygpOworICAgICAgICBjb25zdCBhdXRvJiBsaW1pdHMg
PSBhZGFwdGVyLT5saW1pdHMoKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShuYW1lKSwgV2Vi
R1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2ViR1BVOjpT
dXBwb3J0ZWRMaW1pdHMgeworICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24x
RCgpLAorICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCgpLAorICAgICAg
ICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCgpLAorICAgICAgICAgICAgbGltaXRz
Lm1heFRleHR1cmVBcnJheUxheWVycygpLAorICAgICAgICAgICAgbGltaXRzLm1heEJpbmRHcm91
cHMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBl
bGluZUxheW91dCgpLAorICAgICAgICAgICAgbGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVmZmVy
c1BlclBpcGVsaW5lTGF5b3V0KCksCisgICAgICAgICAgICBsaW1pdHMubWF4U2FtcGxlZFRleHR1
cmVzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTYW1wbGVyc1BlclNo
YWRlclN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFk
ZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRl
clN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJT
dGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSgp
LAorICAgICAgICAgICAgbGltaXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSgpLAorICAg
ICAgICAgICAgbGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAgICAg
ICAgICAgIGxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50KCksCisgICAgICAg
ICAgICBsaW1pdHMubWF4VmVydGV4QnVmZmVycygpLAorICAgICAgICAgICAgbGltaXRzLm1heFZl
cnRleEF0dHJpYnV0ZXMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJh
eVN0cmlkZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25l
bnRzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXpl
KCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3Vw
KCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYKCksCisgICAg
ICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCisgICAgICAgICAgICBs
aW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKCksCisgICAgICAgICAgICBsaW1pdHMubWF4
Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24oKSwKKyAgICAgICAgfSk7CisgICAgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKaW5kZXggZTQ5MmQyOWMyNTZkYjY5MjY4
ZWI4Y2ZjZWNiMTk2NjY1MmJhMzZmMC4uZjA5ZTkyNTA0MmIxZjI4NzdkZDdmYTg0MjA5OGFmZjk4
MWM1YWI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVHUFUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUdQVS5oCkBAIC00MiwyMiArNDIsMjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJl
Z2lzdHJ5Owogc3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9uczsKIH0KIAogY2xhc3MgUmVtb3Rl
R1BVIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpHUFUmIGdwdSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BV
PiBjcmVhdGUoUEFMOjpXZWJHUFU6OkdQVSYgZ3B1LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBv
YmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVHUFUoZ3B1LCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZUdQVShncHUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlR1BVKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5Owog
Ci0gICAgUmVtb3RlR1BVKFBBTDo6V2ViR1BVOjpHUFUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsK
KyAgICBSZW1vdGVHUFUoUEFMOjpXZWJHUFU6OkdQVSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
LCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUdQ
VShjb25zdCBSZW1vdGVHUFUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVHUFUoUmVtb3RlR1BVJiYp
ID0gZGVsZXRlOwpAQCAtNjYsMTAgKzY3LDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKIAotICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BV
OjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYsIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1p
dHMmJik+JiYpOworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0
QWRhcHRlck9wdGlvbnMmLCBXZWJHUFVJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYsIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBw
b3J0ZWRMaW1pdHMmJik+JiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpHUFU+IG1fYmFja2lu
ZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhl
YXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5pbgppbmRl
eCA4NjU4ZTdmNWM3Y2U0MTY3Y2NkMzRkNTkxZDViMmYxMmVlNjE3YTc3Li40NzA5MTBiOTIzNWY0
MTE1M2E2MGU2NDBjODczODQxNGQzMmMzOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5p
bgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMg
LT4gUmVtb3RlR1BVIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKLSAgICB2b2lkIFJlcXVlc3RBZGFw
dGVyKFdlYktpdDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMgb3B0aW9ucykgLT4gKFN0
cmluZyBuYW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVh
dHVyZXMsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzKSBT
eW5jaHJvbm91cworICAgIHZvaWQgUmVxdWVzdEFkYXB0ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVl
c3RBZGFwdGVyT3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikgLT4gKFN0cmluZyBuYW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMg
c3VwcG9ydGVkRmVhdHVyZXMsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9y
dGVkTGltaXRzKSBTeW5jaHJvbm91cwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGlu
ZUxheW91dC5jcHAKaW5kZXggZjEwZmFkZmU2NmM0ODUwNzVlOTE2ZDU4NjI4NjA1Y2ZkNTQ0M2M1
Zi4uNmNkOGI2NzdkNTkxODAyYzYyOWRiNmZkMzQ4NzQ3NmFhM2U2ZTBjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxh
eW91dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVQaXBlbGluZUxheW91dC5jcHAKQEAgLTI5LDIzICsyOSwyOCBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJX
ZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVBpcGVs
aW5lTGF5b3V0OjpSZW1vdGVQaXBlbGluZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlv
dXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1v
dGVQaXBlbGluZUxheW91dDo6UmVtb3RlUGlwZWxpbmVMYXlvdXQoUEFMOjpXZWJHUFU6OlBpcGVs
aW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHBpcGVsaW5lTGF5b3V0KQorICAgICwgbV9v
YmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RI
ZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdp
c3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVQaXBl
bGluZUxheW91dDo6flJlbW90ZVBpcGVsaW5lTGF5b3V0KCkKIHsKKyAgICBtX29iamVjdFJlZ2lz
dHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVBpcGVsaW5l
TGF5b3V0OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFi
ZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuaAppbmRleCBkY2U5
ZGE1MGU5MDQ0MmQxMjMyNDI1ODY4Zjk0OTJkYzA1YmVmZjJhLi4yM2JjYWViNjA2NDEyMGI1MzIw
NzJjNzM2MmE4NmYwZjZjNjdmMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oCkBA
IC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUg
ewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBS
ZW1vdGVQaXBlbGluZUxheW91dCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVQaXBlbGluZUxheW91dD4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVBpcGVsaW5lTGF5
b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlv
dXQsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUGlw
ZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXQsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUGlwZWxpbmVMYXlvdXQo
KTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVQaXBlbGluZUxheW91dChQQUw6Oldl
YkdQVTo6UGlwZWxpbmVMYXlvdXQmLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVQ
aXBlbGluZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVQaXBlbGluZUxheW91dChjb25zdCBSZW1vdGVQaXBlbGluZUxheW91dCYpID0gZGVs
ZXRlOwogICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0KFJlbW90ZVBpcGVsaW5lTGF5b3V0JiYpID0g
ZGVsZXRlOwpAQCAtNjYsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3Ry
aW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dD4gbV9iYWNraW5n
OwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVh
cCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwCmluZGV4IDEwYzNi
OTc4ZTkyOWIzNWM5YjkwNWI5MmI5NDU0YjM3ZTAyYjNlOTQuLmUwY2QxYzVjM2Q3YjE1NDU1NWRk
MTE4OTFkNmFiMjAwN2NhZjRhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwCkBAIC0yOSwyNyAr
MjksMzMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmpl
Y3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1SZW1vdGVRdWVyeVNldDo6UmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0
JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlUXVlcnlT
ZXQ6OlJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhx
dWVyeVNldCkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBt
X29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
eworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5n
KTsKIH0KIAogUmVtb3RlUXVlcnlTZXQ6On5SZW1vdGVRdWVyeVNldCgpCiB7CisgICAgbV9vYmpl
Y3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVR
dWVyeVNldDo6ZGVzdHJveSgpCiB7CisgICAgbV9iYWNraW5nLT5kZXN0cm95KCk7CiB9CiAKIHZv
aWQgUmVtb3RlUXVlcnlTZXQ6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNF
RF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oCmluZGV4IDE2NTAy
ZWI4MTc1NGI1N2NiYWEwNzk0MjljMjhlNGRlNDVlNzY5MDguLmUxN2Q3M2MzMmVmM2VmMGYzN2Q2
YWJlYTU1NTkwZjlkMDUxMjYzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmgKQEAgLTQwLDIxICs0MCwy
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmpl
Y3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVF1ZXJ5U2V0
IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0
JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlUXVlcnlTZXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWVyeVNldChxdWVyeVNldCwgb2JqZWN0
SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWVyeVNldChxdWVy
eVNldCwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIH5SZW1vdGVRdWVyeVNldCgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBj
bGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAg
IFJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYpOworICAgIFJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsK
IAogICAgIFJlbW90ZVF1ZXJ5U2V0KGNvbnN0IFJlbW90ZVF1ZXJ5U2V0JikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlUXVlcnlTZXQoUmVtb3RlUXVlcnlTZXQmJikgPSBkZWxldGU7CkBAIC02OCw3ICs2
OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8
UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0PiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0
SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0
UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2Vi
R1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVRdWV1ZS5jcHAKaW5kZXggZGExMTY1MTgzNTUxM2UwOWNhNjc2ODY0NGI3ODA2Yzg4NjNl
MTQ0Yy4uODhmNzQzZjJkOTY0YTMzZjQ0MmEyZGM5ZWIxZmM0MjJhOGI1MDNlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVR
dWV1ZS5jcHAKQEAgLTI5LDI4ICsyOSw0MCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdp
c3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVF1ZXVlOjpSZW1vdGVRdWV1ZShQQUw6OldlYkdQ
VTo6UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVR
dWV1ZTo6UmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHF1ZXVlKQor
ICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVh
cChvYmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9v
YmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBS
ZW1vdGVRdWV1ZTo6flJlbW90ZVF1ZXVlKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92
ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlOjpzdWJtaXQoVmVj
dG9yPFdlYkdQVUlkZW50aWZpZXI+JiYgY29tbWFuZEJ1ZmZlcnMpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGNvbW1hbmRCdWZmZXJzKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvbW1hbmRCdWZmZXJzID0g
Y29tbWFuZEJ1ZmZlcnMubWFwKFtvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0cnldIChX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpIG11dGFibGUgLT4gc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4geworICAgICAgICBhdXRvIGNvbnZlcnRl
ZENvbW1hbmRCdWZmZXIgPSBvYmplY3RSZWdpc3RyeS5jb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21C
YWNraW5nKGlkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoY29udmVydGVkQ29tbWFuZEJ1ZmZl
cik7CisgICAgICAgIHJldHVybiAqY29udmVydGVkQ29tbWFuZEJ1ZmZlcjsKKyAgICB9KTsKKyAg
ICBtX2JhY2tpbmctPnN1Ym1pdChXVEZNb3ZlKGNvbnZlcnRlZENvbW1hbmRCdWZmZXJzKSk7CiB9
CiAKIHZvaWQgUmVtb3RlUXVldWU6Om9uU3VibWl0dGVkV29ya0RvbmUoV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNr
KTsKKyAgICBtX2JhY2tpbmctPm9uU3VibWl0dGVkV29ya0RvbmUoW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOwog
fQogCiB2b2lkIFJlbW90ZVF1ZXVlOjp3cml0ZUJ1ZmZlcigKQEAgLTU4LDkgKzcwLDkgQEAgdm9p
ZCBSZW1vdGVRdWV1ZTo6d3JpdGVCdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBidWZm
ZXJPZmZzZXQsCiAgICAgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyT2Zmc2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oZGF0YSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRC
dWZmZXIpOworICAgIG1fYmFja2luZy0+d3JpdGVCdWZmZXIoKmNvbnZlcnRlZEJ1ZmZlciwgYnVm
ZmVyT2Zmc2V0LCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDAsIHN0ZDo6bnVsbG9wdCk7CiB9
CiAKIHZvaWQgUmVtb3RlUXVldWU6OndyaXRlVGV4dHVyZSgKQEAgLTY5LDEwICs4MSwxMyBAQCB2
b2lkIFJlbW90ZVF1ZXVlOjp3cml0ZVRleHR1cmUoCiAgICAgY29uc3QgV2ViR1BVOjpJbWFnZURh
dGFMYXlvdXQmIGRhdGFMYXlvdXQsCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgc2l6ZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRh
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YUxheW91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUp
OworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0
aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZERhdGFMYXlvdXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZyhkYXRhTGF5b3V0KTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGlu
YXRpb24pOworICAgIGF1dG8gY29udmVydGVkU2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEZyb21CYWNraW5nKHNpemUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRTaXplKTsKKyAgICBtX2Jh
Y2tpbmctPndyaXRlVGV4dHVyZSgqY29udmVydGVkRGVzdGluYXRpb24sIGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSwgKmNvbnZlcnRlZERhdGFMYXlvdXQsICpjb252ZXJ0ZWRTaXplKTsKIH0KIAog
dm9pZCBSZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoCkBAIC04MCwxNCAr
OTUsMTggQEAgdm9pZCBSZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoCiAg
ICAgY29uc3QgV2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkJiBkZXN0aW5hdGlvbiwKICAg
ICBjb25zdCBXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TShjb3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOworICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2Up
OworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0
aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7
CisgICAgbV9iYWNraW5nLT5jb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgqY29udmVydGVkU291
cmNlLCAqY29udmVydGVkRGVzdGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSk7CiB9CiAKIHZv
aWQgUmVtb3RlUXVldWU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9Q
QVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oCmluZGV4IGRmMzAxZGFkMTU4MzNk
NjE3NzMyM2Q0Y2RjNjI1YTNlMmJkMmFjZWEuLmE1MGFmODI0NTFmYjlmYmVkYTk3YzEwNjVlNjkz
NjVmMzlmN2IzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgKQEAgLTQ5LDIxICs0OSwyMiBAQCBzdHJ1Y3QgSW1h
Z2VDb3B5VGV4dHVyZTsKIHN0cnVjdCBJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkOwogc3RydWN0IElt
YWdlRGF0YUxheW91dDsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsK
IH0KIAogY2xhc3MgUmVtb3RlUXVldWUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVldWU+IGNyZWF0ZShQ
QUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAp
CisgICAgc3RhdGljIFJlZjxSZW1vdGVRdWV1ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWV1ZSYg
cXVldWUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlKHF1ZXVlLCBvYmplY3RI
ZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlKHF1ZXVlLCBv
YmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgflJlbW90ZVF1ZXVlKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVj
dEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlUXVl
dWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3Rl
UXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUXVldWUoY29u
c3QgUmVtb3RlUXVldWUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVRdWV1ZShSZW1vdGVRdWV1ZSYm
KSA9IGRlbGV0ZTsKQEAgLTk1LDcgKzk2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVs
KFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UXVldWU+IG1fYmFja2luZzsKLSAg
ICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1f
b2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwCmluZGV4IDk5
NDA1NzllMmQ5MGU2YWIwMTlmMzVkMGI5NjcxNGU5MTM2ODM4ZTcuLjE3ZTBhY2Y5MDE5YzM0ZDk5
ZjJiMDY3NzI4NDFkMzVkMzhmOGM5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHAK
QEAgLTI5LDIzICsyOSwyOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUg
IldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJCdW5kbGU6OlJlbW90ZVJlbmRlckJ1bmRs
ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZVJlbmRlckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxl
KFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlckJ1bmRs
ZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVj
dEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAg
IG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0K
IAogUmVtb3RlUmVuZGVyQnVuZGxlOjp+UmVtb3RlUmVuZGVyQnVuZGxlKCkKIHsKKyAgICBtX29i
amVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlckJ1bmRsZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaAppbmRleCBj
ZTJhYjA0ZmNiMTQ1NjlmZWEzZGU1Yjk0ZDc5NWE0Y2Q0YmY3Mjg4Li42YjgwZDU5YmE3MjcyODIy
ZGUwNzZhMmE1NzdjNjE3ZTE4OWExY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmgKQEAg
LTQwLDIxICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJl
bW90ZVJlbmRlckJ1bmRsZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGU+IGNyZWF0ZShQ
QUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4gY3JlYXRl
KFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxlKHJlbmRlckJ1bmRsZSwgb2JqZWN0SGVhcCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGUocmVuZGVyQnVu
ZGxlLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlckJ1bmRsZSgpOwogCiBwcml2YXRlOgotICAgIGZyaWVu
ZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAot
ICAgIFJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiwgV2ViR1BV
OjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwg
V2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJCdW5kbGUoY29uc3QgUmVtb3Rl
UmVuZGVyQnVuZGxlJikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlKFJlbW90ZVJl
bmRlckJ1bmRsZSYmKSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVu
ZGxlPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFw
OworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2Vi
R1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwCmluZGV4IGFhNjUyN2YyZmY5OTk0ODM1NTRlNTlkZjhk
NDVmZGJmZWNkY2I5YjMuLjM2YjMwMzM1NjUyYjUzYjdiNTA1ZDliOTdhZDVhNTgxM2UzMzdhNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcApAQCAtMjgsNDkg
KzI4LDUyIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJCdW5kbGUuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJH
UFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRl
ckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICA6IG1fYmFja2luZyhyZW5kZXJCdW5kbGVFbmNvZGVyKQorICAgICwgbV9vYmplY3RS
ZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5h
ZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjp+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpCiB7CisgICAgbV9vYmplY3RS
ZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVs
aW5lKQogewotICAgIFVOVVNFRF9QQVJBTShyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252
ZXJ0ZWRSZW5kZXJQaXBlbGluZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFJlbmRlclBpcGVs
aW5lRnJvbUJhY2tpbmcocmVuZGVyUGlwZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRSZW5k
ZXJQaXBlbGluZSk7CisgICAgbV9iYWNraW5nLT5zZXRQaXBlbGluZSgqY29udmVydGVkUmVuZGVy
UGlwZWxpbmUpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEluZGV4
QnVmZmVyKFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6SW5kZXhGb3JtYXQg
aW5kZXhGb3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGluZGV4Rm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIEFTU0VS
VChjb252ZXJ0ZWRCdWZmZXIpOworICAgIG1fYmFja2luZy0+c2V0SW5kZXhCdWZmZXIoKmNvbnZl
cnRlZEJ1ZmZlciwgaW5kZXhGb3JtYXQsIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMy
IHNsb3QsIFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNl
dCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAgIFVOVVNF
RF9QQVJBTShzbG90KTsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFS
QU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRC
dWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIp
OworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOworICAgIG1fYmFja2luZy0+c2V0VmVydGV4
QnVmZmVyKHNsb3QsICpjb252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhdyhQQUw6OldlYkdQVTo6U2l6ZTMyIHZlcnRl
eENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291bnQsCiAgICAgUEFMOjpXZWJH
UFU6OlNpemUzMiBmaXJzdFZlcnRleCwgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluc3RhbmNl
KQogewotICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
c3RhbmNlQ291bnQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFZlcnRleCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGZpcnN0SW5zdGFuY2UpOworICAgIG1fYmFja2luZy0+ZHJhdyh2ZXJ0ZXhDb3VudCwg
aW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkKFBBTDo6V2ViR1BVOjpTaXplMzIg
aW5kZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUzMiBpbnN0YW5jZUNvdW50LApAQCAtNzgsNTYg
KzgxLDU4IEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWQoUEFM
OjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6CiAgICAgUEFMOjpXZWJHUFU6OlNpZ25l
ZE9mZnNldDMyIGJhc2VWZXJ0ZXgsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluc3Rh
bmNlKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleENvdW50KTsKLSAgICBVTlVTRURfUEFSQU0o
aW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5kZXgpOwotICAgIFVOVVNF
RF9QQVJBTShiYXNlVmVydGV4KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7Cisg
ICAgbV9iYWNraW5nLT5kcmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJz
dEluZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1
ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBVTlVTRURf
UEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNldCk7
CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29u
dmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVy
dGVkSW5kaXJlY3RCdWZmZXIpOworICAgIG1fYmFja2luZy0+ZHJhd0luZGlyZWN0KCpjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRp
cmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBV
TlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9m
ZnNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkSW5kaXJlY3RCdWZmZXIpOworICAgIG1fYmFja2luZy0+ZHJhd0luZGV4ZWRJbmRp
cmVjdCgqY29udmVydGVkSW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6Oklu
ZGV4MzIgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zm
c2V0cykKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShiaW5k
R3JvdXApOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7CisgICAgYXV0byBjb252
ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFj
a2luZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAgIG1f
YmFja2luZy0+c2V0QmluZEdyb3VwKGluZGV4LCAqY29udmVydGVkQmluZEdyb3VwLCBXVEZNb3Zl
KGR5bmFtaWNPZmZzZXRzKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6
cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
Z3JvdXBMYWJlbCk7CisgICAgbV9iYWNraW5nLT5wdXNoRGVidWdHcm91cChXVEZNb3ZlKGdyb3Vw
TGFiZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpwb3BEZWJ1Z0dy
b3VwKCkKIHsKKyAgICBtX2JhY2tpbmctPnBvcERlYnVnR3JvdXAoKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJM
YWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIG1fYmFja2luZy0+
aW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaChjb25zdCBXZWJHUFU6OlJlbmRlckJ1bmRsZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIp
OworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKKyAgICBhdXRvIHJlbmRlckJ1bmRsZSA9IG1fYmFja2luZy0+ZmluaXNoKCpjb252ZXJ0ZWRE
ZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlckJ1bmRsZSA9IFJlbW90ZVJlbmRlckJ1
bmRsZTo6Y3JlYXRlKHJlbmRlckJ1bmRsZSwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFw
LCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVJlbmRlckJ1
bmRsZSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0TGFiZWwoU3Ry
aW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmct
PnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oCmluZGV4IDViZjk4NTIyMTA0Nzc0
NzUyYTBkNTFkNTM3ZTZkNTYyN2M3Yjk5YWMuLmY4N2I3M2UwMWM3YWE0YjFiNjZkNGM1YTc2YWFi
YjU1M2Q3NzE2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oCkBA
IC00MiwyMiArNDIsMjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUg
ewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5Owogc3RydWN0IFJlbmRl
ckJ1bmRsZURlc2NyaXB0b3I7CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIg
ZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyLCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRs
ZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXIocmVuZGVyQnVuZGxlRW5jb2Rlciwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKHJlbmRlckJ1bmRsZUVuY29kZXIs
IG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAg
flJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xh
c3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVy
JiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcihQ
QUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
LCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIoY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYpID0gZGVs
ZXRlOwogICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlciYmKSA9IGRlbGV0ZTsKQEAgLTkzLDcgKzk0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5j
b2Rlcj4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVh
cDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdl
YkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IGUxYzk3MjljZTFhZDA5NTg2M2Y2NTA0MzMwZjlk
NTIxNWU2NDU5MmEuLjc3YTViNWY4NzhkOTU0MDgyNDkzY2Y2MzQ3ODg4NTgxNTFmNzFiMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0yOSw0OCArMjksNTAg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFw
LmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIo
UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlciwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVy
UGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICA6IG1fYmFja2luZyhyZW5kZXJQYXNzRW5jb2RlcikKKyAgICAsIG1fb2JqZWN0UmVnaXN0
cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAs
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2Jq
ZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6On5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlcigpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5y
ZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciByZW5kZXJQaXBlbGluZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0ocmVuZGVyUGlwZWxpbmUpOworICAgIGF1dG8gY29udmVydGVkUmVuZGVy
UGlwZWxpbmUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNr
aW5nKHJlbmRlclBpcGVsaW5lKTsKKyAgICBBU1NFUlQoY29udmVydGVkUmVuZGVyUGlwZWxpbmUp
OworICAgIG1fYmFja2luZy0+c2V0UGlwZWxpbmUoKmNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BV
SWRlbnRpZmllciBidWZmZXIsIFBBTDo6V2ViR1BVOjpJbmRleEZvcm1hdCBpbmRleEZvcm1hdCwg
UEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNp
emU2ND4gc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFS
QU0oaW5kZXhGb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1
ZmZlcik7CisgICAgbV9iYWNraW5nLT5zZXRJbmRleEJ1ZmZlcigqY29udmVydGVkQnVmZmVyLCBp
bmRleEZvcm1hdCwgb2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMyIHNsb3QsIFdlYkdQVUlk
ZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzbG90KTsK
LSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChj
b252ZXJ0ZWRCdWZmZXIpOworICAgIG1fYmFja2luZy0+c2V0VmVydGV4QnVmZmVyKHNsb3QsICpj
b252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI6OmRyYXcoUEFMOjpXZWJHUFU6OlNpemUzMiB2ZXJ0ZXhDb3VudCwgUEFMOjpXZWJH
UFU6OlNpemUzMiBpbnN0YW5jZUNvdW50LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZmlyc3RW
ZXJ0ZXgsIFBBTDo6V2ViR1BVOjpTaXplMzIgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0odmVydGV4Q291bnQpOwotICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKLSAg
ICBVTlVTRURfUEFSQU0oZmlyc3RWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3Rh
bmNlKTsKKyAgICBtX2JhY2tpbmctPmRyYXcodmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZp
cnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6ZHJhd0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6Oldl
YkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291bnQsCkBAIC03OCwxMDkgKzgwLDExMSBAQCB2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGlu
ZGV4Q291bnQsIFBBTDo6VwogICAgIFBBTDo6V2ViR1BVOjpTaWduZWRPZmZzZXQzMiBiYXNlVmVy
dGV4LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oaW5kZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOwot
ICAgIFVOVVNFRF9QQVJBTShmaXJzdEluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZlcnRl
eCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOworICAgIG1fYmFja2luZy0+ZHJh
d0luZGV4ZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RJbmRleCwgYmFzZVZlcnRl
eCwgZmlyc3RJbnN0YW5jZSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRy
YXdJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6
U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZl
cik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tp
bmcoaW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7
CisgICAgbV9iYWNraW5nLT5kcmF3SW5kaXJlY3QoKmNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBp
bmRpcmVjdE9mZnNldCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJ
bmRleGVkSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJH
UFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RC
dWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBjb252
ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21C
YWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZm
ZXIpOworICAgIG1fYmFja2luZy0+ZHJhd0luZGV4ZWRJbmRpcmVjdCgqY29udmVydGVkSW5kaXJl
Y3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBXZWJHUFVJZGVu
dGlmaWVyIGJpbmRHcm91cCwKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6
QnVmZmVyRHluYW1pY09mZnNldD4+JiYgZHluYW1pY09mZnNldHMpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFS
QU0oZHluYW1pY09mZnNldHMpOworICAgIGF1dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBB
U1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsKKyAgICBtX2JhY2tpbmctPnNldEJpbmRHcm91cChp
bmRleCwgKmNvbnZlcnRlZEJpbmRHcm91cCwgV1RGTW92ZShkeW5hbWljT2Zmc2V0cykpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBn
cm91cExhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAgICBtX2JhY2tp
bmctPnB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKIHsKKyAgICBtX2JhY2tpbmctPnBv
cERlYnVnR3JvdXAoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6aW5zZXJ0
RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1h
cmtlckxhYmVsKTsKKyAgICBtX2JhY2tpbmctPmluc2VydERlYnVnTWFya2VyKFdURk1vdmUobWFy
a2VyTGFiZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3Bv
cnQoZmxvYXQgeCwgZmxvYXQgeSwKICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LAogICAg
IGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1pbkRlcHRoKTsKLSAgICBVTlVT
RURfUEFSQU0obWF4RGVwdGgpOworICAgIG1fYmFja2luZy0+c2V0Vmlld3BvcnQoeCwgeSwgd2lk
dGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERlcHRoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QoUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRl
IHgsIFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSB5LAogICAgIFBBTDo6V2ViR1BVOjpJ
bnRlZ2VyQ29vcmRpbmF0ZSB3aWR0aCwgUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIGhl
aWdodCkKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAg
IFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CisgICAgbV9i
YWNraW5nLT5zZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmxlbmRDb25zdGFudChXZWJHUFU6OkNvbG9yIGNv
bG9yKQogewotICAgIFVOVVNFRF9QQVJBTShjb2xvcik7CisgICAgYXV0byBjb252ZXJ0ZWRDb2xv
ciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGNvbG9yKTsKKyAgICBBU1NF
UlQoY29udmVydGVkQ29sb3IpOworICAgIG1fYmFja2luZy0+c2V0QmxlbmRDb25zdGFudCgqY29u
dmVydGVkQ29sb3IpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTdGVu
Y2lsUmVmZXJlbmNlKFBBTDo6V2ViR1BVOjpTdGVuY2lsVmFsdWUgc3RlbmNpbFZhbHVlKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGVuY2lsVmFsdWUpOworICAgIG1fYmFja2luZy0+c2V0U3RlbmNp
bFJlZmVyZW5jZShzdGVuY2lsVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjpiZWdpbk9jY2x1c2lvblF1ZXJ5KFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkK
IHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAgbV9iYWNraW5nLT5iZWdpbk9j
Y2x1c2lvblF1ZXJ5KHF1ZXJ5SW5kZXgpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjplbmRPY2NsdXNpb25RdWVyeSgpCiB7CisgICAgbV9iYWNraW5nLT5lbmRPY2NsdXNpb25R
dWVyeSgpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KFdlYkdQVUlkZW50aWZpZXIgcXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpT
aXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlTZXQpOwotICAgIFVO
VVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CisgICAg
QVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAgICBtX2JhY2tpbmctPmJlZ2luUGlwZWxpbmVT
dGF0aXN0aWNzUXVlcnkoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQog
eworICAgIG1fYmFja2luZy0+ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPFdlYkdQVUlk
ZW50aWZpZXI+JiYgcmVuZGVyQnVuZGxlcykKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVuZGVyQnVu
ZGxlcyk7CisgICAgYXV0byBjb252ZXJ0ZWRCdW5kbGVzID0gcmVuZGVyQnVuZGxlcy5tYXAoW29i
amVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeV0gKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikgbXV0YWJsZSAtPiBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGU+IHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRCdW5kbGUgPSBvYmplY3RSZWdpc3Ry
eS5jb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoaWRlbnRpZmllcik7CisgICAgICAgIEFT
U0VSVChjb252ZXJ0ZWRCdW5kbGUpOworICAgICAgICByZXR1cm4gKmNvbnZlcnRlZEJ1bmRsZTsK
KyAgICB9KTsKKyAgICBtX2JhY2tpbmctPmV4ZWN1dGVCdW5kbGVzKFdURk1vdmUoY29udmVydGVk
QnVuZGxlcykpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjplbmRQYXNzKCkK
IHsKKyAgICBtX2JhY2tpbmctPmVuZFBhc3MoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKaW5k
ZXggYjkzZjY4OWUzMjlmZDY1NjE4OTY1NDhhZDFhMTQ5OGMyMTEwOTkxYS4uZmI2ZDNkYjU5YTkz
MjE0YWQ4ZDQwNGZkYWRjNWRjNzFhOTNlYWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXIuaApAQCAtNDMsMjEgKzQzLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1l
c3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsK
IH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJl
bmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5k
ZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
IG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKHJlbmRlclBhc3NFbmNvZGVyLCBvYmplY3RIZWFwKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKHJl
bmRlclBhc3NFbmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OwogICAgIH0KIAogICAgIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlcigpOwogCiBwcml2YXRlOgot
ICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdp
c3RyeTsKIAotICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQ
YXNzRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyKGNvbnN0IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJikgPSBk
ZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXImJikgPSBkZWxldGU7CkBAIC0xMTAsNyArMTExLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29k
ZXI+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7
CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJH
UFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
clBpcGVsaW5lLmNwcAppbmRleCAzYTQwYTkwMzY0OTkxZWM2NGRkMzBiNDBkZGJlNzZiYmU5N2Yx
NzUyLi41YzFmY2NkMGY0MzdmNTA3ZmIzMzc4NTExMDI4MGZlNjA2MGViMDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBp
cGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcApAQCAtMjgsMzAgKzI4LDM3IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCIKICNp
bmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0
cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5l
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJQaXBlbGluZTo6UmVtb3Rl
UmVuZGVyUGlwZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGlu
ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlUmVuZGVyUGlwZWxpbmU6
OlJlbW90ZVJlbmRlclBpcGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVy
UGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICA6IG1fYmFja2luZyhyZW5kZXJQaXBlbGluZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2Jq
ZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1f
aWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlUmVuZGVyUGlwZWxpbmU6On5SZW1v
dGVSZW5kZXJQaXBlbGluZSgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3Qo
bV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdy
b3VwTGF5b3V0KHVpbnQzMl90IGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7
CisgICAgYXV0byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmdldEJpbmRHcm91cExheW91
dChpbmRleCk7CisgICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVC
aW5kR3JvdXBMYXlvdXQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBpcGVsaW5lOjpzZXRMYWJl
bChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFj
a2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuaAppbmRleCBmZGU4OGZjYWU2OTUxODA1OGMy
NGY5ZDFlZDc3Mjk1MjFjZTk5OGMxLi5iYzZiOTY1NzVkY2NkM2JmOWMwNmMyODkyMWNmOTVkNjBj
ODY2NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCkBAIC00MCwyMSArNDAsMjIg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0
SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVSZW5kZXJQaXBl
bGluZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUEFM
OjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmUsIG9iamVjdEhlYXAp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxpbmUocmVu
ZGVyUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKTsKIAogcHJpdmF0ZToK
LSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVn
aXN0cnk7CiAKLSAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQVTo6UmVuZGVyUGlw
ZWxpbmUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQ
QUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2Vi
R1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQ
aXBlbGluZShjb25zdCBSZW1vdGVSZW5kZXJQaXBlbGluZSYpID0gZGVsZXRlOwogICAgIFJlbW90
ZVJlbmRlclBpcGVsaW5lKFJlbW90ZVJlbmRlclBpcGVsaW5lJiYpID0gZGVsZXRlOwpAQCAtNjgs
NyArNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAg
UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJH
UFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFw
OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmNwcAppbmRleCAwYjI0NmM4YzU2MGE3NzJhYmFlZTgw
NGM2MWQ1NTg4YTA3NjU2ZDFiLi5hNzZiNjk0NWQ1NzgzZmYwMGM4OTc5NWVkNDIzYzUyYjAwYzA0
YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlU2FtcGxlci5jcHAKQEAgLTI5LDIzICsyOSwyOCBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRl
ICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVU2FtcGxlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlU2FtcGxlcjo6
UmVtb3RlU2FtcGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlU2FtcGxlcjo6UmVtb3RlU2FtcGxlcihQQUw6Oldl
YkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHNhbXBsZXIpCisgICAgLCBtX29iamVjdFJlZ2lz
dHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9i
amVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVNhbXBsZXI6On5SZW1v
dGVTYW1wbGVyKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNhbXBsZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVs
KQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChX
VEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIu
aAppbmRleCAwOGM5NzFlMTA2OWExYTY2NzVkOWMzYjI4NWQxNmE2ZmU3MTdlMmM0Li5hYzkwMzhh
NWI5Y2E4N2VjYmY1YmZlNDFmODc0NjA0M2UwMDBjYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaApAQCAt
NDAsMjEgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsK
IGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVt
b3RlU2FtcGxlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZVNhbXBsZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2FtcGxlciYgc2Ft
cGxlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2FtcGxlcihzYW1wbGVyLCBvYmpl
Y3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZXIoc2Ft
cGxlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIH5SZW1vdGVTYW1wbGVyKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAg
UmVtb3RlU2FtcGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYp
OworICAgIFJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVTYW1wbGVyKGNvbnN0IFJlbW90ZVNhbXBsZXImKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVTYW1wbGVyKFJlbW90ZVNhbXBsZXImJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJH
UFU6OlNhbXBsZXI+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29i
amVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsK
KyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJN
b2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IDk3ZWYwOTNkNzc5YWE3NzFkZWRmZWNlODFlNThlZjg0
N2U4ZGM0NGQuLjQ1YWMwZDNmNzM2NWMxOWI1NDg4Y2MxZGQwOTRkMjJhMTQ3ZTAzNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hh
ZGVyTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKQEAgLTI5LDI4ICsyOSw0NyBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRl
ICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVQ29tcGlsYXRpb25JbmZvLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVNoYWRlck1vZHVsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlU2hh
ZGVyTW9kdWxlOjpSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYg
c2hhZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVTaGFk
ZXJNb2R1bGU6OlJlbW90ZVNoYWRlck1vZHVsZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBz
aGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICA6IG1fYmFja2luZyhzaGFkZXJNb2R1bGUpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9i
amVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdCht
X2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVNoYWRlck1vZHVsZTo6flJlbW90
ZVNoYWRlck1vZHVsZSgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9p
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTaGFkZXJNb2R1bGU6OmNvbXBpbGF0aW9uSW5m
byhXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkdQVTo6Q29tcGlsYXRpb25N
ZXNzYWdlPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwor
ICAgIG1fYmFja2luZy0+Y29tcGlsYXRpb25JbmZvKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoUmVmPFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbkluZm8+JiYgY29tcGlsYXRpb25NZXNz
YWdlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRNZXNzYWdlcyA9IGNvbXBpbGF0
aW9uTWVzc2FnZS0+bWVzc2FnZXMoKS5tYXAoW10gKGNvbnN0IFJlZjxQQUw6OldlYkdQVTo6Q29t
cGlsYXRpb25NZXNzYWdlPiYgbWVzc2FnZSkgeworICAgICAgICAgICAgcmV0dXJuIFdlYkdQVTo6
Q29tcGlsYXRpb25NZXNzYWdlIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlLT5tZXNzYWdlKCks
CisgICAgICAgICAgICAgICAgbWVzc2FnZS0+dHlwZSgpLAorICAgICAgICAgICAgICAgIG1lc3Nh
Z2UtPmxpbmVOdW0oKSwKKyAgICAgICAgICAgICAgICBtZXNzYWdlLT5saW5lUG9zKCksCisgICAg
ICAgICAgICAgICAgbWVzc2FnZS0+b2Zmc2V0KCksCisgICAgICAgICAgICAgICAgbWVzc2FnZS0+
bGVuZ3RoKCksCisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjb252ZXJ0ZWRNZXNzYWdlcykpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZVNo
YWRlck1vZHVsZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaAppbmRleCA2YTEy
MGMwYjUzODA5MWJhNzRkZmY0MTAzMGExZmM5NGQ5ZTNiOTQyLi5mOTdmMDE5NmJiMDY3ZWRiY2I5
MjM1Y2RlYzEwNjRlYzM0MTY3MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKQEAgLTQz
LDIxICs0MywyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBj
bGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90
ZVNoYWRlck1vZHVsZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGU+IGNyZWF0ZShQQUw6
OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVsZT4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlU2hhZGVyTW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0SGVhcCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTaGFkZXJNb2R1bGUoc2hhZGVyTW9kdWxl
LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgflJlbW90ZVNoYWRlck1vZHVsZSgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBj
bGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAg
IFJlbW90ZVNoYWRlck1vZHVsZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiwgV2ViR1BVOjpP
YmplY3RIZWFwJik7CisgICAgUmVtb3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJN
b2R1bGUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVTaGFkZXJNb2R1bGUoY29uc3QgUmVtb3RlU2hh
ZGVyTW9kdWxlJikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2hhZGVyTW9kdWxlKFJlbW90ZVNoYWRl
ck1vZHVsZSYmKSA9IGRlbGV0ZTsKQEAgLTcxLDcgKzcyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxl
PiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOwor
ICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BV
OjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCmlu
ZGV4IGY0MTRkMmY5MjY2YjViYzAwZTRiZjU2YTZhN2YxMzEzZTI0MjIwNDQuLmQwMTE0MTJjYTRk
YWNhOTk3NmQxODViYWU2MmIwYmYwZjU1YTY4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcApAQCAt
MjgsMzUgKzI4LDUyIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJS
ZW1vdGVUZXh0dXJlVmlldy5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNs
dWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVy
ZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4K
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVy
ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwKQorUmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6VGV4dHVy
ZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIDogbV9iYWNraW5nKHRleHR1cmUpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJl
Z2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50
aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKCkK
IHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQog
CiB2b2lkIFJlbW90ZVRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJH
UFU6OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VE
X1BBUkFNKGlkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1
cmVWaWV3RGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKKyAgICBpZiAoZGVzY3JpcHRv
cikgeworICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHREZXNj
cmlwdG9yKTsKKyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVz
Y3JpcHRvcik7CisgICAgfQorICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBh
dXRvIHRleHR1cmVWaWV3ID0gbV9iYWNraW5nLT5jcmVhdGVWaWV3KCpjb252ZXJ0ZWREZXNjcmlw
dG9yKTsKKyAgICBhdXRvIHJlbW90ZVRleHR1cmVWaWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNy
ZWF0ZSh0ZXh0dXJlVmlldywgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlm
aWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVRleHR1cmVWaWV3KTsKIH0K
IAogdm9pZCBSZW1vdGVUZXh0dXJlOjpkZXN0cm95KCkKIHsKKyAgICBtX2JhY2tpbmctPmRlc3Ry
b3koKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkK
IHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFiZWwoV1RG
TW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmgK
aW5kZXggOGQzNWVkMjQ4OWY1NzYzYWFmMjhmMDZlNGVmODc0YTVlMDYyZDJlNy4uZGZlY2Y5ZGFm
NzA5MWU4OTgwZTkzZmYwZTZjYWMwZTY1MGFhODVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmgKQEAgLTQw
LDIyICs0MCwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBj
bGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBSZW1vdGVUZXh0dXJlIGZpbmFsIDogcHVibGljIElQ
Qzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90
ZVRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZT4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0ZXh0dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVUZXh0dXJlKHRleHR1cmUsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZSh0ZXh0dXJlLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0
SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVRleHR1cmUo
KTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVUZXh0dXJlKFBBTDo6V2ViR1BVOjpU
ZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlVGV4dHVyZShQQUw6Oldl
YkdQVTo6VGV4dHVyZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVRleHR1cmUoY29uc3QgUmVtb3Rl
VGV4dHVyZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVRleHR1cmUoUmVtb3RlVGV4dHVyZSYmKSA9
IGRlbGV0ZTsKQEAgLTcxLDcgKzcyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZT4gbV9iYWNraW5nOwotICAg
IFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9v
YmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCmluZGV4IDExYTRh
Nzg2MzZhZmJlMWFiYmRiMjYzODViY2Y4ODg4NTExNTJjZjMuLmJlODYzZGY1ZjY0MmI4NGMxMDA3
MjRmODA3YTY2OGIxZjNhZWNjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCkBAIC0y
OSwyMyArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVUZXh0dXJlVmlldzo6UmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpX
ZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldywgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwKQorUmVtb3RlVGV4dHVyZVZpZXc6OlJlbW90ZVRleHR1cmVWaWV3KFBBTDo6V2ViR1BV
OjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVj
dFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyh0ZXh0dXJlVmlldykKKyAgICAsIG1fb2Jq
ZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVh
cCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0
cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlVGV4dHVy
ZVZpZXc6On5SZW1vdGVUZXh0dXJlVmlldygpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1v
dmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlVmlldzo6c2V0
TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBt
X2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmgKaW5kZXggMDAwNWZjYWRiZTQ3NzE4ZGQ5ZDA5
YWQ0Mzk0OTYxZDczNTBkZGQyZi4uNDY4N2MzYjgzMzk5ZjQzNjY0ZDkyMTJmZjNhODc4NDQzOWNi
ZjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaApAQCAtNDAsMjEgKzQwLDIyIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7Citj
bGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXcgZmluYWwg
OiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+IGNyZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcm
IHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGlj
IFJlZjxSZW1vdGVUZXh0dXJlVmlldz4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYg
dGV4dHVyZVZpZXcsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3KHRl
eHR1cmVWaWV3LCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVRleHR1cmVWaWV3KHRleHR1cmVWaWV3LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwg
aWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVRleHR1cmVWaWV3KCk7
CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNs
YXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6
OlRleHR1cmVWaWV3JiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlVGV4dHVyZVZp
ZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdl
YkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlVGV4dHVy
ZVZpZXcoY29uc3QgUmVtb3RlVGV4dHVyZVZpZXcmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVUZXh0
dXJlVmlldyhSZW1vdGVUZXh0dXJlVmlldyYmKSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6Oldl
YkdQVTo6VGV4dHVyZVZpZXc+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFw
PiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdp
c3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVP
YmplY3RIZWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVT2JqZWN0SGVhcC5jcHAKaW5kZXggMDkxMjIxOTRlY2M3ZWY2OTBmMDYyN2M4OGFkMjk0
ZTUzOTNhNzMzNS4uZDBhMGVjMzA5NDI4MDUyNTQ5ZDMyMTIxZDg0OWVmNGM4OWUwZjViMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVP
YmplY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwCkBAIC0yOCwyOCArMjgsMjggQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+
Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+Ci0jaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXAuaD4KLSNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dC5oPgotI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVURldmljZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0
ZXJuYWxUZXh0dXJlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBl
bGluZUxheW91dC5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlT
ZXQuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmg+Ci0jaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUuaD4KLSNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KLSNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg+Ci0jaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgotI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2FtcGxlci5oPgotI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVUZXh0dXJlVmlldy5oPgorI2luY2x1ZGUgIlJlbW90ZUFkYXB0ZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVCaW5kR3JvdXAuaCIKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQu
aCIKKyNpbmNsdWRlICJSZW1vdGVCdWZmZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kQnVm
ZmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEVuY29kZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGlwZWxpbmUu
aCIKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVFeHRlcm5hbFRl
eHR1cmUuaCIKKyNpbmNsdWRlICJSZW1vdGVHUFUuaCIKKyNpbmNsdWRlICJSZW1vdGVQaXBlbGlu
ZUxheW91dC5oIgorI2luY2x1ZGUgIlJlbW90ZVF1ZXJ5U2V0LmgiCisjaW5jbHVkZSAiUmVtb3Rl
UXVldWUuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGUuaCIKKyNpbmNsdWRlICJSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQaXBlbGluZS5oIgorI2luY2x1ZGUgIlJlbW90
ZVNhbXBsZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVTaGFkZXJNb2R1bGUuaCIKKyNpbmNsdWRlICJS
ZW1vdGVUZXh0dXJlLmgiCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXcuaCIKIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIApAQCAtNjEsMTgwICs2MSwyNjggQEAgT2JqZWN0SGVhcDo6
fk9iamVjdEhlYXAoKQogewogfQogCi1QQUw6OldlYkdQVTo6QWRhcHRlciogT2JqZWN0SGVhcDo6
Y29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2
b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVBZGFwdGVyJiBhZGFwdGVyKQogewotICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQ
QUw6OldlYkdQVTo6QWRhcHRlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+Pihp
dGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgm
YWRhcHRlciwgYWRhcHRlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkJpbmRHcm91cCogT2JqZWN0SGVhcDo6Y29udmVy
dEJpbmRHcm91cEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQg
T2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91cCYgYmluZEdyb3VwKQogewotICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQ
QUw6OldlYkdQVTo6QmluZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3Vw
Pj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5h
ZGQoJmJpbmRHcm91cCwgYmluZEdyb3VwKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0KiBPYmpl
Y3RIZWFwOjpjb252ZXJ0QmluZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlQmluZEdyb3Vw
TGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlv
dXQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+
dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmYmluZEdyb3Vw
TGF5b3V0LCBiaW5kR3JvdXBMYXlvdXQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpCdWZmZXIqIE9iamVjdEhlYXA6OmNv
bnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lk
IE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9y
ID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpX
ZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9y
LT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZidWZmZXIs
IGJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KIAotUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRDb21t
YW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBP
YmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlQ29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcikK
IHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAg
aWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BV
OjpDb21tYW5kQnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoJmNvbW1hbmRCdWZmZXIsIGNvbW1hbmRCdWZmZXIpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BV
OjpDb21tYW5kRW5jb2RlciogT2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyKQogewotICAgIGF1dG8g
aXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6Oldl
YkdQVTo6Q29tbWFuZEVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5j
b2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKCZjb21tYW5kRW5jb2RlciwgY29tbWFuZEVuY29kZXIpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpDb21wdXRl
UGFzc0VuY29kZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKIHsKLSAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0
ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6
OkNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21wdXRlUGFzc0VuY29kZXIsIGNvbXB1dGVQYXNzRW5j
b2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0K
IAotUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogT2JqZWN0SGVhcDo6Y29udmVydENvbXB1
dGVQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQg
T2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVs
aW5lKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsK
LSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6
OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmNvbXB1dGVQaXBlbGluZSwgY29tcHV0ZVBpcGVs
aW5lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQog
Ci1QQUw6OldlYkdQVTo6RGV2aWNlKiBPYmplY3RIZWFwOjpjb252ZXJ0RGV2aWNlRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmpl
Y3QoUmVtb3RlRGV2aWNlJiBkZXZpY2UpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVy
YXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpn
ZXQ8UmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmZGV2aWNlLCBkZXZpY2UpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpF
eHRlcm5hbFRleHR1cmUqIE9iamVjdEhlYXA6OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKIHsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9y
ID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpX
ZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKCZleHRlcm5hbFRleHR1cmUsIGV4dGVybmFsVGV4dHVyZSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkdQ
VSogT2JqZWN0SGVhcDo6Y29udmVydEdQVUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUdQVSYgZ3B1KQogewot
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0
b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmdwdSwg
Z3B1KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQog
Ci1QQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIE9iamVjdEhlYXA6OmNvbnZlcnRQaXBlbGlu
ZUxheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2Jq
ZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCkK
IHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAg
aWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQ
VTo6UGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVz
dWx0ID0gbV9vYmplY3RzLmFkZCgmcGlwZWxpbmVMYXlvdXQsIHBpcGVsaW5lTGF5b3V0KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6Oldl
YkdQVTo6UXVlcnlTZXQqIE9iamVjdEhlYXA6OmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJl
bW90ZVF1ZXJ5U2V0JiBxdWVyeVNldCkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0Pj4oaXRl
cmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcXVlcnlTZXQsIHF1ZXJ5U2V0KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6Oldl
YkdQVTo6UXVldWUqIE9iamVjdEhlYXA6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVF1
ZXVlJiBxdWV1ZSkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRp
Zmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OlF1ZXVlPj4oaXRlcmF0b3ItPnZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6Oldl
YkdQVTo6UXVldWU+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZCgmcXVldWUsIHF1ZXVlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rl
ciogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRlckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyKQogewotICAgIGF1dG8g
aXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6Oldl
YkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZCgmcmVuZGVyQnVuZGxlRW5jb2RlciwgcmVuZGVyQnVuZGxlRW5jb2Rl
cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAot
UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRlckJ1bmRs
ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVh
cDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlKQogewotICAgIGF1
dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0
b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6
OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVu
ZGxlPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoJnJlbmRlckJ1bmRsZSwgcmVuZGVyQnVuZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6UmVuZGVyUGFzc0Vu
Y29kZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlcikKIHsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJH
UFU6OlJlbmRlclBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFz
c0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZCgmcmVuZGVyUGFzc0VuY29kZXIsIHJlbmRlclBhc3NFbmNvZGVyKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQ
VTo6UmVuZGVyUGlwZWxpbmUqIE9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRk
T2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9y
ID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpX
ZWJHUFU6OlJlbmRlclBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGlw
ZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZCgmcmVuZGVyUGlwZWxpbmUsIHJlbmRlclBpcGVsaW5lKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6U2FtcGxl
ciogT2JqZWN0SGVhcDo6Y29udmVydFNhbXBsZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVTYW1wbGVyJiBz
YW1wbGVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6U2FtcGxlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJH
UFU6OlNhbXBsZXI+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZCgmc2FtcGxlciwgc2FtcGxlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSog
T2JqZWN0SGVhcDo6Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVNoYWRlck1v
ZHVsZSYgc2hhZGVyTW9kdWxlKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPj4oaXRl
cmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIo
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnNoYWRlck1vZHVsZSwgc2hhZGVy
TW9kdWxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwog
fQogCi1QQUw6OldlYkdQVTo6VGV4dHVyZSogT2JqZWN0SGVhcDo6Y29udmVydFRleHR1cmVGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFk
ZE9iamVjdChSZW1vdGVUZXh0dXJlJiB0ZXh0dXJlKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3Rz
LmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6VGV4dHVy
ZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLnB0
cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmdGV4dHVyZSwgdGV4dHVyZSk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFM
OjpXZWJHUFU6OlRleHR1cmVWaWV3KiBPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZVZpZXdGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFk
ZE9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcpCiB7Ci0gICAgYXV0byBpdGVy
YXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBt
X29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BV
OjpUZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3Pj4oaXRl
cmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnRl
eHR1cmVWaWV3LCB0ZXh0dXJlVmlldyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3Rl
QWRhcHRlciYgYWRhcHRlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUo
JmFkYXB0ZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lk
IE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVCaW5kR3JvdXAmIGJpbmRHcm91cCkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmJpbmRHcm91cCk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3Zl
T2JqZWN0KFJlbW90ZUJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0KQoreworICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYmluZEdyb3VwTGF5b3V0KTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVP
YmplY3QoUmVtb3RlQnVmZmVyJiBidWZmZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMucmVtb3ZlKCZidWZmZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwor
fQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJiBj
b21tYW5kQnVmZmVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29t
bWFuZEJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3Zv
aWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRFbmNvZGVyJiBjb21tYW5k
RW5jb2RlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbW1hbmRF
bmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBP
YmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRl
UGFzc0VuY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21w
dXRlUGFzc0VuY29kZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQor
Cit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmIGNv
bXB1dGVQaXBlbGluZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNv
bXB1dGVQaXBlbGluZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisK
K3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZURldmljZSYgZGV2aWNlKQorewor
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmZGV2aWNlKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmpl
Y3QoUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZleHRlcm5hbFRleHR1cmUpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVj
dChSZW1vdGVHUFUmIGdwdSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUo
JmdwdSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2Jq
ZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91
dCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnBpcGVsaW5lTGF5b3V0
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RI
ZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUXVlcnlTZXQmIHF1ZXJ5U2V0KQoreworICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcXVlcnlTZXQpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1v
dGVRdWV1ZSYgcXVldWUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZx
dWV1ZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2Jq
ZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1
bmRsZUVuY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5k
ZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30K
Kwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJiByZW5k
ZXJCdW5kbGUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5kZXJC
dW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9i
amVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFz
c0VuY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5kZXJQ
YXNzRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3Zv
aWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5lJiByZW5kZXJQ
aXBlbGluZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlclBp
cGVsaW5lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBP
YmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlU2FtcGxlciYgc2FtcGxlcikKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnNhbXBsZXIpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChS
ZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5yZW1vdmUoJnNoYWRlck1vZHVsZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVRleHR1
cmUmIHRleHR1cmUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZ0ZXh0
dXJlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmpl
Y3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQorewor
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmdGV4dHVyZVZpZXcpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaAppbmRleCA5ZDhmYTEwNDQ3MzU1NTNmOTQ1NmUx
NTdjM2ZjNTkxMTlmMzRmOGVjLi5hMTZjZDI2Njk4MTM3N2NhOTE4ZTUxMGI2OGZjODVmMzhlNDE5
ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVU9iamVjdEhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaApAQCAtMjcsNzQgKzI3LDEyMCBAQAogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJH
UFVPYmplY3RSZWdpc3RyeS5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8dmFy
aWFudD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFJlbW90
ZUFkYXB0ZXI7CitjbGFzcyBSZW1vdGVCaW5kR3JvdXA7CitjbGFzcyBSZW1vdGVCaW5kR3JvdXBM
YXlvdXQ7CitjbGFzcyBSZW1vdGVCdWZmZXI7CitjbGFzcyBSZW1vdGVDb21tYW5kQnVmZmVyOwor
Y2xhc3MgUmVtb3RlQ29tbWFuZEVuY29kZXI7CitjbGFzcyBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI7CitjbGFzcyBSZW1vdGVDb21wdXRlUGlwZWxpbmU7CitjbGFzcyBSZW1vdGVEZXZpY2U7Citj
bGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmU7CitjbGFzcyBSZW1vdGVHUFU7CitjbGFzcyBSZW1v
dGVQaXBlbGluZUxheW91dDsKK2NsYXNzIFJlbW90ZVF1ZXJ5U2V0OworY2xhc3MgUmVtb3RlUXVl
dWU7CitjbGFzcyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOworY2xhc3MgUmVtb3RlUmVuZGVy
QnVuZGxlOworY2xhc3MgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBSZW1vdGVSZW5k
ZXJQaXBlbGluZTsKK2NsYXNzIFJlbW90ZVNhbXBsZXI7CitjbGFzcyBSZW1vdGVTaGFkZXJNb2R1
bGU7CitjbGFzcyBSZW1vdGVUZXh0dXJlOworY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXc7Cit9CiAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLWNsYXNzIE9iamVjdEhlYXAgZmluYWwgOiBw
dWJsaWMgV2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0IHsKK2NsYXNzIE9iamVjdEhl
YXAgZmluYWwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8T2JqZWN0SGVhcD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8T2JqZWN0SGVhcD4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE9iamVjdEhlYXAoKSk7Ci0gICAgfQotCisgICAgT2JqZWN0SGVhcCgp
OwogICAgIH5PYmplY3RIZWFwKCk7CiAKLXByaXZhdGU6Ci0gICAgT2JqZWN0SGVhcCgpOworICAg
IHZvaWQgYWRkT2JqZWN0KFJlbW90ZUFkYXB0ZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1v
dGVCaW5kR3JvdXAmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQm
KTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCdWZmZXImKTsKKyAgICB2b2lkIGFkZE9iamVj
dChSZW1vdGVDb21tYW5kQnVmZmVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlQ29tbWFu
ZEVuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIm
KTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmKTsKKyAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVEZXZpY2UmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVFeHRl
cm5hbFRleHR1cmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVHUFUmKTsKKyAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVQaXBlbGluZUxheW91dCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJl
bW90ZVF1ZXJ5U2V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUXVldWUmKTsKKyAgICB2
b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7CisgICAgdm9pZCBhZGRP
YmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJik7CisgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGlu
ZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVNhbXBsZXImKTsKKyAgICB2b2lkIGFkZE9i
amVjdChSZW1vdGVTaGFkZXJNb2R1bGUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVUZXh0
dXJlJik7CisgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmKTsKIAotICAgIFBB
TDo6V2ViR1BVOjpBZGFwdGVyKiBjb252ZXJ0QWRhcHRlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAqIGNvbnZlcnRCaW5kR3Jv
dXBGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6
QmluZEdyb3VwTGF5b3V0KiBjb252ZXJ0QmluZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkJ1ZmZlciogY29udmVydEJ1ZmZl
ckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpD
b21tYW5kQnVmZmVyKiBjb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciogY29udmVydENv
bW1hbmRFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFM
OjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciogY29udmVydENvbXB1dGVQYXNzRW5jb2RlckZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmUqIGNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6RGV2aWNlKiBjb252ZXJ0RGV2aWNlRnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkV4dGVy
bmFsVGV4dHVyZSogY29udmVydEV4dGVybmFsVGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpHUFUqIGNvbnZlcnRHUFVGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlv
dXQqIGNvbnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZp
bmFsOwotICAgIFBBTDo6V2ViR1BVOjpRdWVyeVNldCogY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlF1ZXVlKiBjb252
ZXJ0UXVldWVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6Oldl
YkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciogY29udmVydFJlbmRlckJ1bmRsZUVuY29kZXJGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UmVuZGVy
QnVuZGxlKiBjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
ZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyKiBjb252ZXJ0UmVuZGVy
UGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIGNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpTYW1wbGVyKiBjb252
ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6
V2ViR1BVOjpTaGFkZXJNb2R1bGUqIGNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6VGV4dHVyZSogY29udmVydFRl
eHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQ
VTo6VGV4dHVyZVZpZXcqIGNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUFkYXB0ZXImKTsKKyAg
ICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVCaW5kR3JvdXAmKTsKKyAgICB2b2lkIHJlbW92ZU9i
amVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1v
dGVCdWZmZXImKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJik7
CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImKTsKKyAgICB2b2lk
IHJlbW92ZU9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImKTsKKyAgICB2b2lkIHJlbW92
ZU9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChS
ZW1vdGVEZXZpY2UmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1
cmUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVHUFUmKTsKKyAgICB2b2lkIHJlbW92
ZU9iamVjdChSZW1vdGVQaXBlbGluZUxheW91dCYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJl
bW90ZVF1ZXJ5U2V0Jik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUXVldWUmKTsKKyAg
ICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJik7CisgICAgdm9p
ZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJik7CisgICAgdm9pZCByZW1vdmVPYmpl
Y3QoUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1v
dGVSZW5kZXJQaXBlbGluZSYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVNhbXBsZXIm
KTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmKTsKKyAgICB2b2lk
IHJlbW92ZU9iamVjdChSZW1vdGVUZXh0dXJlJik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVt
b3RlVGV4dHVyZVZpZXcmKTsKIAorcHJpdmF0ZToKICAgICB1c2luZyBPYmplY3QgPSBzdGQ6OnZh
cmlhbnQ8Ci0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6QWRhcHRlcj4sCi0gICAgICAgIFJlZjxQ
QUw6OldlYkdQVTo6QmluZEdyb3VwPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3Jv
dXBMYXlvdXQ+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4sCi0gICAgICAgIFJl
ZjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6
Q29tbWFuZEVuY29kZXI+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5j
b2Rlcj4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiwKLSAgICAg
ICAgUmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OkV4
dGVybmFsVGV4dHVyZT4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6R1BVPiwKLSAgICAgICAg
UmVmPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dD4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQ
VTo6UXVlcnlTZXQ+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OlF1ZXVlPiwKLSAgICAgICAg
UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPiwKLSAgICAgICAgUmVmPFBBTDo6
V2ViR1BVOjpSZW5kZXJCdW5kbGU+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBh
c3NFbmNvZGVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4sCi0g
ICAgICAgIFJlZjxQQUw6OldlYkdQVTo6U2FtcGxlcj4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQ
VTo6U2hhZGVyTW9kdWxlPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlPiwKLSAg
ICAgICAgUmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4KKyAgICAgICAgc3RkOjptb25vc3Rh
dGUsCisgICAgICAgIFJlZjxSZW1vdGVBZGFwdGVyPiwKKyAgICAgICAgUmVmPFJlbW90ZUJpbmRH
cm91cD4sCisgICAgICAgIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+LAorICAgICAgICBSZWY8
UmVtb3RlQnVmZmVyPiwKKyAgICAgICAgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+LAorICAgICAg
ICBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+LAorICAgICAgICBSZWY8UmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyPiwKKyAgICAgICAgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4sCisgICAgICAg
IFJlZjxSZW1vdGVEZXZpY2U+LAorICAgICAgICBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPiwK
KyAgICAgICAgUmVmPFJlbW90ZUdQVT4sCisgICAgICAgIFJlZjxSZW1vdGVQaXBlbGluZUxheW91
dD4sCisgICAgICAgIFJlZjxSZW1vdGVRdWVyeVNldD4sCisgICAgICAgIFJlZjxSZW1vdGVRdWV1
ZT4sCisgICAgICAgIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiwKKyAgICAgICAgUmVm
PFJlbW90ZVJlbmRlckJ1bmRsZT4sCisgICAgICAgIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cj4sCisgICAgICAgIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4sCisgICAgICAgIFJlZjxSZW1v
dGVTYW1wbGVyPiwKKyAgICAgICAgUmVmPFJlbW90ZVNoYWRlck1vZHVsZT4sCisgICAgICAgIFJl
ZjxSZW1vdGVUZXh0dXJlPiwKKyAgICAgICAgUmVmPFJlbW90ZVRleHR1cmVWaWV3PgogICAgID47
Ci0gICAgSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBPYmplY3Q+IG1fb2JqZWN0czsKKyAgICBI
YXNoTWFwPHZvaWQqLCBPYmplY3Q+IG1fb2JqZWN0czsKKworICAgIE9iamVjdFJlZ2lzdHJ5IG1f
b2JqZWN0UmVnaXN0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVP
YmplY3RSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjI3YTFhNWZiZTRkZTQw
YmJiZTJkNTY1ZWQwZGMzMzU3ZmUwNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAKQEAg
LTAsMCArMSwzODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKwor
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVCaW5kR3JvdXAuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUJpbmRHcm91cExheW91dC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQnVmZmVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5k
QnVmZmVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5j
b2Rlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlw
ZWxpbmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURldmljZS5oPgor
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlLmg+Cisj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dC5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlTZXQuaD4KKyNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVU2FtcGxlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVU2hhZGVyTW9kdWxlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVU
ZXh0dXJlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmll
dy5oPgorCituYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworCitPYmplY3RSZWdpc3RyeTo6T2Jq
ZWN0UmVnaXN0cnkoKQoreworfQorCitPYmplY3RSZWdpc3RyeTo6fk9iamVjdFJlZ2lzdHJ5KCkK
K3sKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGFkYXB0ZXIpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0
cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXAmIGJpbmRHcm91cCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
aWRlbnRpZmllciwgYmluZEdyb3VwKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5k
R3JvdXBMYXlvdXQpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZp
ZXIsIGJpbmRHcm91cExheW91dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyKQoreworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBidWZmZXIpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0
UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2Vi
R1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQoreworICAgIGF1dG8gcmVzdWx0ID0g
bV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBjb21tYW5kQnVmZmVyKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5
OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29t
bWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZChpZGVudGlmaWVyLCBjb21tYW5kRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1dGVQ
YXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZChpZGVudGlmaWVyLCBjb21wdXRlUGFzc0VuY29kZXIpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0
cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpD
b21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5
OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6RGV2
aWNlJiBkZXZpY2UpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZp
ZXIsIGRldmljZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJl
KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBleHRlcm5h
bFRleHR1cmUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpHUFUmIGdwdSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoaWRlbnRpZmllciwgZ3B1KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQm
IHBpcGVsaW5lTGF5b3V0KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVu
dGlmaWVyLCBwaXBlbGluZUxheW91dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCkK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcXVlcnlTZXQp
OworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3Zv
aWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIHF1ZXVlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rl
ciYgcmVuZGVyQnVuZGxlRW5jb2RlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5h
ZGQoaWRlbnRpZmllciwgcmVuZGVyQnVuZGxlRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRk
T2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlckJ1
bmRsZSYgcmVuZGVyQnVuZGxlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChp
ZGVudGlmaWVyLCByZW5kZXJCdW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYg
cmVuZGVyUGFzc0VuY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlk
ZW50aWZpZXIsIHJlbmRlclBhc3NFbmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUm
IHJlbmRlclBpcGVsaW5lKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVu
dGlmaWVyLCByZW5kZXJQaXBlbGluZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIpCit7
CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHNhbXBsZXIpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQg
T2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBB
TDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSkKK3sKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgc2hhZGVyTW9kdWxlKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lz
dHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
VGV4dHVyZSYgdGV4dHVyZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRl
bnRpZmllciwgdGV4dHVyZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldykK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgdGV4dHVyZVZp
ZXcpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisK
K3ZvaWQgT2JqZWN0UmVnaXN0cnk6OnJlbW92ZU9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKGlkZW50aWZpZXIp
OworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitQQUw6OldlYkdQVTo6
QWRhcHRlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJH
UFU6OkFkYXB0ZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OkFkYXB0ZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2Vi
R1BVOjpCaW5kR3JvdXA+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJH
UFU6OkJpbmRHcm91cD4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BV
OjpCaW5kR3JvdXBMYXlvdXQqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QmluZEdyb3VwTGF5b3V0
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0Pj4oaXRlcmF0b3ItPnZh
bHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OkJ1ZmZlciogT2JqZWN0UmVnaXN0cnk6OmNv
bnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpLmdl
dCgpOworfQorCitQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogT2JqZWN0UmVnaXN0cnk6OmNv
bnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+Pihp
dGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0
ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+
PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29k
ZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6Q29tbWFuZEVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFM
OjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKwor
UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRD
b21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAg
IGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVy
Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
ICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFz
c0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbXB1dGVQaXBlbGluZUZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2Jq
ZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSku
Z2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpEZXZpY2UqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0
RGV2aWNlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0
b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RGV2aWNlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsK
K30KKworUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAg
IGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZz
dGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1
cmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6R1BVKiBPYmpl
Y3RSZWdpc3RyeTo6Y29udmVydEdQVUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpHUFU+PihpdGVyYXRv
ci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkdQVT4+KGl0ZXJhdG9yLT52YWx1
ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogT2JqZWN0UmVnaXN0
cnk6OmNvbnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxh
eW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UGlwZWxp
bmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6UXVl
cnlTZXQqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5m
aW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwg
IXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6UXVlcnlTZXQ+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OlF1
ZXVlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChp
ZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1
ZXVlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWV1ZT4+
KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFJlbmRlckJ1bmRsZUVuY29kZXJGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJhdG9yLT52
YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUqIE9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRs
ZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVu
ZGxlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OlJlbmRlclBh
c3NFbmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1
ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSogT2JqZWN0UmVnaXN0
cnk6OmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBl
bGluZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVy
UGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6U2Ft
cGxlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRTYW1wbGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OlNhbXBsZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlNh
bXBsZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6U2hhZGVy
TW9kdWxlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFM
OjpXZWJHUFU6OlNoYWRlck1vZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BB
TDo6V2ViR1BVOjpUZXh0dXJlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFRleHR1cmVGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6VGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6VGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6
V2ViR1BVOjpUZXh0dXJlVmlldyogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRUZXh0dXJlVmlld0Zy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1f
b2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFsdWUpLmdldCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQorCisjZW5kaWYgLy8gSEFWRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0cnkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzM3
Nzg1NDdhM2E0YmEzNTVhNzUyM2QyZWNkNjIwNjUzN2UxMDkwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdp
c3RyeS5oCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8dmFyaWFudD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgUEFMOjpXZWJHUFUgeworY2xhc3MgQWRhcHRlcjsKK2NsYXNzIEJpbmRHcm91
cDsKK2NsYXNzIEJpbmRHcm91cExheW91dDsKK2NsYXNzIEJ1ZmZlcjsKK2NsYXNzIENvbW1hbmRC
dWZmZXI7CitjbGFzcyBDb21tYW5kRW5jb2RlcjsKK2NsYXNzIENvbXB1dGVQYXNzRW5jb2RlcjsK
K2NsYXNzIENvbXB1dGVQaXBlbGluZTsKK2NsYXNzIERldmljZTsKK2NsYXNzIEV4dGVybmFsVGV4
dHVyZTsKK2NsYXNzIEdQVTsKK2NsYXNzIFBpcGVsaW5lTGF5b3V0OworY2xhc3MgUXVlcnlTZXQ7
CitjbGFzcyBRdWV1ZTsKK2NsYXNzIFJlbmRlckJ1bmRsZUVuY29kZXI7CitjbGFzcyBSZW5kZXJC
dW5kbGU7CitjbGFzcyBSZW5kZXJQYXNzRW5jb2RlcjsKK2NsYXNzIFJlbmRlclBpcGVsaW5lOwor
Y2xhc3MgU2FtcGxlcjsKK2NsYXNzIFNoYWRlck1vZHVsZTsKK2NsYXNzIFRleHR1cmU7CitjbGFz
cyBUZXh0dXJlVmlldzsKK30KKworbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKKworY2xhc3Mg
T2JqZWN0UmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgV2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0IHsKK3B1YmxpYzoKKyAgICBPYmplY3RSZWdpc3RyeSgpOworICAgIH5PYmplY3RSZWdp
c3RyeSgpOworCisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJH
UFU6OkFkYXB0ZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6QmluZEdyb3VwJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCdWZmZXImKTsKKyAgICB2b2lkIGFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYpOworICAgIHZv
aWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rl
ciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpD
b21wdXRlUGFzc0VuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkRldmljZSYpOworICAgIHZvaWQgYWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6R1BVJik7CisgICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5
b3V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6
OlF1ZXJ5U2V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OlF1ZXVlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFM
OjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJik7CisgICAgdm9pZCBhZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJik7
CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRl
clBpcGVsaW5lJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OlNhbXBsZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciwgUEFMOjpXZWJHUFU6OlRleHR1cmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmKTsKKworICAgIHZvaWQgcmVt
b3ZlT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIpOworCisgICAgUEFMOjpXZWJHUFU6OkFkYXB0ZXIq
IGNvbnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAg
UEFMOjpXZWJHUFU6OkJpbmRHcm91cCogY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIGNv
bnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsK
KyAgICBQQUw6OldlYkdQVTo6QnVmZmVyKiBjb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIGNvbnZl
cnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAg
UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBh
c3NFbmNvZGVyKiBjb252ZXJ0Q29tcHV0ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogY29udmVy
dENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAg
IFBBTDo6V2ViR1BVOjpEZXZpY2UqIGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlKiBjb252ZXJ0
RXh0ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAg
UEFMOjpXZWJHUFU6OkdQVSogY29udmVydEdQVUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogY29udmVydFBpcGVsaW5l
TGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJH
UFU6OlF1ZXJ5U2V0KiBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UXVldWUqIGNvbnZlcnRRdWV1ZUZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyKiBjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUqIGNvbnZlcnRSZW5k
ZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIGNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBl
bGluZSogY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
ZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlNhbXBsZXIqIGNvbnZlcnRTYW1wbGVyRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVs
ZSogY29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFs
OworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlKiBjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyogY29u
dmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisKK3By
aXZhdGU6CisgICAgdXNpbmcgT2JqZWN0ID0gc3RkOjp2YXJpYW50PAorICAgICAgICBzdGQ6Om1v
bm9zdGF0ZSwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRh
cHRlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRH
cm91cD4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRH
cm91cExheW91dD4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OkJ1ZmZlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNv
bW1hbmRCdWZmZXI+LAorICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpDb21tYW5kRW5jb2Rlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OkRldmljZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4sCisgICAgICAgIHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkdQVT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0PiwKKyAgICAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+LAorICAgICAgICBzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWV1ZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+LAorICAgICAgICBzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+LAorICAgICAgICBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4sCisgICAg
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiwK
KyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4sCisg
ICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZT4s
CisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmU+LAor
ICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4K
KyAgICA+OworICAgIEhhc2hNYXA8V2ViR1BVSWRlbnRpZmllciwgT2JqZWN0PiBtX29iamVjdHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQorCisjZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgKaW5kZXggNjAwNWM4OGY4MWFl
MjlhZTFkMDIxM2Q0YmE5M2I1NGQxZTVhYzZkYy4uYTk0NjhmNTI3YzRjMWQxMTMyYTBkODQzZTJk
NGZmMTI2YmFmYjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oCkBAIC0xODksNyArMTg5
LDcgQEAgc3RydWN0IFZlcnRleEF0dHJpYnV0ZTsKIHN0cnVjdCBWZXJ0ZXhCdWZmZXJMYXlvdXQ7
CiBzdHJ1Y3QgVmVydGV4U3RhdGU7CiAKLWNsYXNzIENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQg
OiBwdWJsaWMgUmVmQ291bnRlZDxDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0PiB7CitjbGFzcyBD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4ZTNhZDE5
YzlmNTdhNWRmNDg2MDdiMGYzZjYzMzQ2OTAwMjUyMGI3Li42NDFkZjE2NGY5ZTNjODVlM2U0Nzg3
MTE4YTM1OTNmNjc4NzUxYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU0LDYgKzU0LDcgQEAgR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcAogR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVRleHR1cmVWaWV3LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVT2JqZWN0SGVhcC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVj
dFJlZ2lzdHJ5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVu
ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVk
YjU2MTNmOGQ2YzA4OGNhYzcxNmQwODU3YTg3NjA5OWYwYmMyY2MuLjM5YjIzNzU1ZjFlZTNlMmFl
NTZkNDNmYjgzYmJlOWE3MjRlM2Q5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjk3NSwxMyArMjk3NSwxMyBAQAogCQkxQzhFMkEz
MjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvclVJTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViSW5zcGVjdG9yVUlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThD
MDFEMjc0NDZBMDMwMDJDQ0I3OCAvKiBSZW1vdGVHUFUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlR1BVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5OEMwMUUyNzQ0
NkEwMzAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
T2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzk4QzAxRTI3NDQ2
QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R1BVT2JqZWN0UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMw
MUYyNzQ0NkEwMzAwMkNDQjc4IC8qIFJlbW90ZVF1ZXJ5U2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZVF1ZXJ5U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDIwMjc0
NDZBMDQwMDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJCdW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlUmVuZGVyQnVuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDIx
Mjc0NDZBMDQwMDJDQ0I3OCAvKiBSZW1vdGVRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDIyMjc0
NDZBMDQwMDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM5OEMwMjMyNzQ0NkEwNTAwMkNDQjc4IC8qIFJlbW90ZVNoYWRlck1vZHVsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVTaGFkZXJNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQzk4QzAyNDI3NDQ2QTA1MDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0
SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVPYmplY3RIZWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5OEMwMjQyNzQ0NkEwNTAwMkNDQjc4IC8qIFdlYkdQ
VU9iamVjdFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVU9iamVjdFJlZ2lz
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjUyNzQ0NkEwNjAw
MkNDQjc4IC8qIFJlbW90ZVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVGV4dHVyZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAyNjI3NDQ2QTA2MDAyQ0NCNzgg
LyogUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4
QzAyNzI3NDQ2QTA2MDAyQ0NCNzggLyogUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMyMzEsNiArMzIzMSw4IEBACiAJCTFDQjc0NkE0Mjc0M0FEQkEwMEYxOTg3NCAv
KiBXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkluc3BlY3Rv
clVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMUNCRDc1
M0MyNzQ3QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViR1BVT2JqZWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDQkQ3NTNEMjc0N0FBMzEwMDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVU9iamVjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNCRjkwMTIyNzEwMThCNTAwMEM0NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUNDNTRBRkQyNzBGOTY1NDAwNUJGOEJFIC8qIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGMThGM0Uy
NkJCNUQ5MDAwNEIxNzIyIC8qIExvZ0luaXRpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExvZ0luaXRpYWxpemF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc0ODIsOCArNzQ4NCwxMCBAQAogCQkJCTFDOThDMDM2Mjc0NDZBMDkwMDJDQ0I3OCAvKiBSZW1v
dGVUZXh0dXJlVmlldy5jcHAgKi8sCiAJCQkJMUM5OEMwMkUyNzQ0NkEwODAwMkNDQjc4IC8qIFJl
bW90ZVRleHR1cmVWaWV3LmggKi8sCiAJCQkJMUM5OEMwODgyNzQ0QkQ5OTAwMkNDQjc4IC8qIFJl
bW90ZVRleHR1cmVWaWV3Lm1lc3NhZ2VzLmluICovLAotCQkJCTFDOThDMDI0Mjc0NDZBMDUwMDJD
Q0I3OCAvKiBXZWJHUFVPYmplY3RIZWFwLmNwcCAqLywKLQkJCQkxQzk4QzAxRTI3NDQ2QTAzMDAy
Q0NCNzggLyogV2ViR1BVT2JqZWN0SGVhcC5oICovLAorCQkJCTFDQkQ3NTNDMjc0N0FBMzEwMDRG
QTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmNwcCAqLywKKwkJCQkxQ0JENzUzRDI3NDdBQTMxMDA0
RkEwRkYgLyogV2ViR1BVT2JqZWN0SGVhcC5oICovLAorCQkJCTFDOThDMDI0Mjc0NDZBMDUwMDJD
Q0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgKi8sCisJCQkJMUM5OEMwMUUyNzQ0NkEw
MzAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdFJlZ2lzdHJ5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IFdlYkdQVTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Cg==
</data>
<flag name="review"
          id="469909"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444858</attachid>
            <date>2021-11-19 14:56:22 -0800</date>
            <delta_ts>2021-11-19 15:00:27 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-233358-20211119145621.patch</filename>
            <type>text/plain</type>
            <size>191509</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3OTBhM2IxNTU2NDZlZTFi
MTRkNzhmMTU0Zjc0NWQzZDUwN2RhZTcuLmUwOTA1ZmZkNjUzZTU2YTE3YTdiNmE4Yjk4NmVjYmNl
NzUwZWZjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc5IEBACisyMDIxLTExLTE5ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW1w
bGVtZW50IEdQVSBwcm9jZXNzJ3MgbWVzc2FnZSByZWNlaXZlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzM1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBUaGUgbWVzc2FnZSByZWNlaXZlcnMgaGF2ZSB0
d28gaGVscGVyIG9iamVjdHM6CisgICAgICAgIDEuIE9iamVjdEhlYXAsIHdoaWNoIG93bnMgYWxs
IHRoZSBtZXNzYWdlIHJlY2VpdmVycy4gVGhlcmUgaXMgaW50ZW5kZWQgdG8gYmUgb25seSBvbmUg
b2YgdGhlbSBwZXIgZG9jdW1lbnQuCisgICAgICAgIDIuIE9iamVjdFJlZ2lzdHJ5LCB3aGljaCBk
b2Vzbid0IG93biBhbnl0aGluZywgYnV0IG1haW50YWlucyBhIG1hcHBpbmcgZnJvbSBXZWJHUFVJ
ZGVudGlmaWVycyB0byBvYmplY3RzLiBUaGlzCisgICAgICAgICAgICAgICByZWdpc3RyeSBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSB3aGVuIGFuIG9iamVjdCBuZWVkcyB0byBiZSBkZXN0cm95ZWQsIHdl
IGhhdmUgdG8gbG9vayB1cCB3aGljaCBvYmplY3QgaXQKKyAgICAgICAgICAgICAgIGlzIGJ5IElE
LgorCisgICAgICAgIEJleW9uZCB0aGF0LCB0aGlzIHBhdGNoIGp1c3QgaG9va3MgdXAgdGhvc2Ug
dHdvIG1lc3NhZ2UgcmVjZWl2ZXJzLCBhbmQgdGhlbiBmb3J3YXJkcyBhbGwgcmVjZWl2ZWQgbWVz
c2FnZXMgdG8KKyAgICAgICAgdGhlIHZpcnR1YWwgaW50ZXJmYWNlIHRoYXQgaW1wbGVtZW50cyBX
ZWJHUFUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QWRhcHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6OlJlbW90ZUFkYXB0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBZGFwdGVyOjp+UmVtb3RlQWRhcHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6OnJlcXVlc3REZXZpY2UpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUJpbmRHcm91cDo6flJlbW90ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUJpbmRHcm91cDo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUJpbmRHcm91cExheW91dDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0Ojp+UmVtb3RlQmluZEdyb3VwTGF5b3V0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0OjpzZXRMYWJlbCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQnVmZmVyOjpSZW1vdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVCdWZmZXI6On5SZW1vdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVCdWZmZXI6Om1hcEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQnVmZmVyOjp1bm1h
cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ29tbWFuZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDb21tYW5kQnVmZmVyOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlbW90ZUNvbW1hbmRFbmNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6On5SZW1vdGVDb21tYW5kRW5jb2Rl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBh
c3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRl
UGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9CdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29k
ZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFu
ZEVuY29kZXI6OmZpbGxCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6cG9wRGVidWdHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNv
ZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjp3cml0ZVRpbWVzdGFtcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpyZXNvbHZlUXVlcnlTZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5k
RW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6
OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlcjo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBl
bGluZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQaXBlbGluZTo6UmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5l
Ojp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
b21wdXRlUGlwZWxpbmU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVE
ZXZpY2U6OlJlbW90ZURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6flJl
bW90ZURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlRGV2aWNlOjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNl
OjppbXBvcnRFeHRlcm5hbFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6
OmNyZWF0ZUJpbmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6
Y3JlYXRlUGlwZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNy
ZWF0ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlU2hh
ZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRl
UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlw
ZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQ29t
bWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRl
ckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVF1
ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpwdXNoRXJyb3JTY29wZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6cG9wRXJyb3JTY29wZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZURldmljZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUV4dGVybmFsVGV4dHVyZTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjp+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpzZXRMYWJlbCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjpSZW1vdGVHUFUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHUFU6On5SZW1vdGVHUFUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVl
c3RBZGFwdGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVH
UFUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVQaXBlbGluZUxheW91dDo6
UmVtb3RlUGlwZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVQaXBlbGluZUxh
eW91dDo6flJlbW90ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUGlw
ZWxpbmVMYXlvdXQ6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVl
cnlTZXQ6OlJlbW90ZVF1ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVlcnlTZXQ6
On5SZW1vdGVRdWVyeVNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXJ5U2V0OjpkZXN0
cm95KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVlcnlTZXQ6OnNldExhYmVsKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUXVldWU6OlJlbW90ZVF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUXVldWU6On5SZW1vdGVRdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjpz
dWJtaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVRdWV1ZTo6b25TdWJtaXR0ZWRXb3JrRG9u
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjp3cml0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjp3cml0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVRdWV1ZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVF1ZXVlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
QnVuZGxlOjpSZW1vdGVSZW5kZXJCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJCdW5kbGU6On5SZW1vdGVSZW5kZXJCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJCdW5kbGU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6On5SZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
cjo6c2V0UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpzZXRJbmRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjpkcmF3SW5kZXhlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnBvcERlYnVnR3JvdXApOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldExhYmVsKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRpcmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFy
a2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdw
b3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNz
b3JSZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJs
ZW5kQ29uc3RhbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0U3RlbmNpbFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyOjpiZWdpbk9jY2x1c2lvblF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OmVuZE9jY2x1c2lvblF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhl
Y3V0ZUJ1bmRsZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
ZW5kUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRM
YWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBpcGVs
aW5lOjpSZW1vdGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
clBpcGVsaW5lOjp+UmVtb3RlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyUGlwZWxpbmU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ft
cGxlcjo6flJlbW90ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVyOjpz
ZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2Ft
cGxlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRl
ck1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNoYWRlck1vZHVsZTo6UmVtb3Rl
U2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVt
b3RlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjpj
b21waWxhdGlvbkluZm8pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTaGFkZXJNb2R1bGU6OnNl
dExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFk
ZXJNb2R1bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVRleHR1cmU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0
dXJlOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZVZpZXc6OlJl
bW90ZVRleHR1cmVWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZVZpZXc6On5S
ZW1vdGVUZXh0dXJlVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHR1cmVWaWV3Ojpz
ZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4
dHVyZVZpZXcuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVP
YmplY3RIZWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjphZGRP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OnJlbW92ZU9iamVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEFkYXB0ZXJG
cm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVh
cDo6Y29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0QmluZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2Jq
ZWN0SGVhcDo6Y29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJv
bUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6
OmNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydENvbXB1dGVQaXBlbGluZUZyb21C
YWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpj
b252ZXJ0RGV2aWNlRnJvbUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEdQVUZyb21C
YWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpj
b252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRRdWV1ZUZy
b21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFw
Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJh
Y2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNv
bnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2lu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVy
dFNhbXBsZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
T2JqZWN0SGVhcDo6Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNr
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252
ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6Ok9iamVjdFJlZ2lzdHJ5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6fk9iamVjdFJlZ2lzdHJ5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6cmVtb3ZlT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydEFkYXB0ZXJGcm9t
QmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRCaW5kR3JvdXBGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0
UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21tYW5k
QnVmZmVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFj
a2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRD
b21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnk6OmNvbnZlcnREZXZpY2VGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2lu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRHUFVG
cm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNv
bnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpPYmplY3RSZWdpc3RyeTo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UXVldWVGcm9tQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJC
dW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9t
QmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpP
YmplY3RSZWdpc3RyeTo6Y29udmVydFNhbXBsZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2lu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRUZXh0
dXJlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
Ojpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0cnkuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmguCisg
ICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Lmg6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNz
Y2hlbWVzL1dlYktpdC54Y3NjaGVtZToKKwogMjAyMS0xMS0xOSAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEFkZCBjb252ZXJ0ZXJz
IGZyb20gc2VyaWFsaXphYmxlIGRlc2NyaXB0b3JzIHRvIGludGVyZmFjZSBkZXNjcmlwdG9ycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQWRhcHRlci5jcHAKaW5kZXggZTA0MDlhOWM0NjE0YTU0NjI0YWZkZmFhYTBlMmYxMzk1
ZjQ3NjM1OC4uNDFiZGYxNjUyMDZiMDk2OTlhYjE1MzYyMWFkM2MyZWUxZTg2ODg0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFw
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUFkYXB0ZXIuY3BwCkBAIC0yOCwyOSArMjgsNzYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZS5oIgogI2luY2x1ZGUgIldlYkdQVURldmlj
ZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJHUFVTdXBwb3J0ZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIldlYkdQVVN1cHBvcnRlZExpbWl0cy5oIgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQWRhcHRlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVRGV2aWNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVBZGFw
dGVyOjpSZW1vdGVBZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVBZGFwdGVyOjpSZW1vdGVBZGFwdGVyKFBB
TDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmpl
Y3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoYWRhcHRlcikKKyAgICAsIG1fb2JqZWN0
UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkK
KyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
YWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQWRhcHRlcjo6
flJlbW90ZUFkYXB0ZXIoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1f
aWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25z
dCBXZWJHUFU6OkRldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkdQVTo6U3VwcG9ydGVk
RmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVy
KTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIGF1dG8gY29udmVydGVkRGVzY3Jp
cHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpIHsKKyAgICAgICAgY2FsbGJhY2soeyB7IH0gfSwgeyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fYmFja2luZy0+cmVxdWVzdERldmljZSgqY29udmVydGVkRGVzY3Jp
cHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vh
a1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0g
bV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiYm
IGRldmljZSkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha09iamVjdEhlYXApCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGF1dG8gcmVtb3RlRGV2aWNlID0gUmVtb3RlRGV2aWNlOjpj
cmVhdGUoZGV2aWNlLCBvYmplY3RSZWdpc3RyeSwgKndlYWtPYmplY3RIZWFwLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgd2Vha09iamVjdEhlYXAtPmFkZE9iamVjdChyZW1vdGVEZXZpY2UpOworICAg
ICAgICBjb25zdCBhdXRvJiBmZWF0dXJlcyA9IGRldmljZS0+ZmVhdHVyZXMoKTsKKyAgICAgICAg
Y29uc3QgYXV0byYgbGltaXRzID0gZGV2aWNlLT5saW1pdHMoKTsKKyAgICAgICAgY2FsbGJhY2so
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2ViR1BV
OjpTdXBwb3J0ZWRMaW1pdHMgeworICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNp
b24xRCgpLAorICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCgpLAorICAg
ICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCgpLAorICAgICAgICAgICAgbGlt
aXRzLm1heFRleHR1cmVBcnJheUxheWVycygpLAorICAgICAgICAgICAgbGltaXRzLm1heEJpbmRH
cm91cHMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQ
aXBlbGluZUxheW91dCgpLAorICAgICAgICAgICAgbGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVm
ZmVyc1BlclBpcGVsaW5lTGF5b3V0KCksCisgICAgICAgICAgICBsaW1pdHMubWF4U2FtcGxlZFRl
eHR1cmVzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTYW1wbGVyc1Bl
clNoYWRlclN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJT
aGFkZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNo
YWRlclN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFk
ZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6
ZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSgpLAor
ICAgICAgICAgICAgbGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAg
ICAgICAgICAgIGxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50KCksCisgICAg
ICAgICAgICBsaW1pdHMubWF4VmVydGV4QnVmZmVycygpLAorICAgICAgICAgICAgbGltaXRzLm1h
eFZlcnRleEF0dHJpYnV0ZXMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJB
cnJheVN0cmlkZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21w
b25lbnRzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VT
aXplKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dy
b3VwKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYKCksCisg
ICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCisgICAgICAgICAg
ICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKCksCisgICAgICAgICAgICBsaW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24oKSwKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaAppbmRleCA1MGYzN2U3
ZTQ2NzA5OGExNzZmZTRjNDA3ODMxNDlhMGMxZDM3N2UxLi4xZWEyYzEwMTg2ZTFiNmY4OGIwYTMy
Y2UwNDI3ODViZmMyOGFmMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaApAQCAtNDEsMjMgKzQxLDI0IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIFdlYkdQVSB7CiBzdHJ1Y3QgRGV2aWNlRGVz
Y3JpcHRvcjsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVj
dCBTdXBwb3J0ZWRGZWF0dXJlczsKIHN0cnVjdCBTdXBwb3J0ZWRMaW1pdHM7CiB9CiAKIGNsYXNz
IFJlbW90ZUFkYXB0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQWRhcHRlcj4gY3JlYXRlKFBBTDo6V2Vi
R1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisg
ICAgc3RhdGljIFJlZjxSZW1vdGVBZGFwdGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkFkYXB0ZXIm
IGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0ZXIoYWRhcHRlciwg
b2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBZGFwdGVy
KGFkYXB0ZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlQWRhcHRlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVu
ZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAot
ICAgIFJlbW90ZUFkYXB0ZXIoUEFMOjpXZWJHUFU6OkFkYXB0ZXImLCBXZWJHUFU6Ok9iamVjdEhl
YXAmKTsKKyAgICBSZW1vdGVBZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwog
CiAgICAgUmVtb3RlQWRhcHRlcihjb25zdCBSZW1vdGVBZGFwdGVyJikgPSBkZWxldGU7CiAgICAg
UmVtb3RlQWRhcHRlcihSZW1vdGVBZGFwdGVyJiYpID0gZGVsZXRlOwpAQCAtNjksNyArNzAsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXZWJHUFU6OkRldmljZURl
c2NyaXB0b3ImLCBXZWJHUFVJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4m
Jik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+IG1fYmFja2luZzsKLSAgICBSZWY8
V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0
SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwCmluZGV4IDQ3MTBhNTQ1OTVlNmI0
YjQyMGFiMTA5MjgzM2Y3MThjNDkxMjMwYjQuLjA4NWY0OTUzODRlM2VmM2NjNDRhNTMyYzU2ODg1
YjQxOWZmNDE3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAKQEAgLTI5LDIzICsyOSwyOCBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1S
ZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBi
aW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZUJpbmRHcm91
cDo6UmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KGJpbmRHcm91cCkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAg
LCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNr
aW5nKTsKIH0KIAogUmVtb3RlQmluZEdyb3VwOjp+UmVtb3RlQmluZEdyb3VwKCkKIHsKKyAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZUJpbmRHcm91cDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuaAppbmRleCAwM2QxMGRm
NDE1MjhhZDEyMmFhYTAzYmU3NmE3ODAzYWJkOGFiODFiLi5jZTE0MDhjNjdkNTQ4MTJkOWRkNGMx
N2U2M2RkMGIwYjI0NjcwZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmgKQEAgLTQwLDIxICs0MCwy
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmpl
Y3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91
cCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXA+IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdy
b3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZUJpbmRHcm91cD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJp
bmRHcm91cCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwKGJpbmRHcm91
cCwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5k
R3JvdXAoYmluZEdyb3VwLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91cCgpOwogCiBwcml2YXRlOgot
ICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdp
c3RyeTsKIAotICAgIFJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwgV2Vi
R1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5k
R3JvdXAmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXAoY29uc3QgUmVtb3RlQmluZEdy
b3VwJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwKFJlbW90ZUJpbmRHcm91cCYmKSA9
IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiBtX2JhY2tpbmc7Ci0g
ICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBt
X29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcApp
bmRleCA4YzBmMGUxMWU3NzQ5ZTk5OWYxNDE2NzFiMjVjODBjM2Q1ODY4Y2I5Li4wYjE2ZmYyOTg3
ZDE1NDJhM2FhYTJhZWQwNjQyZWVhZjJlN2Q1MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3Jv
dXBMYXlvdXQuY3BwCkBAIC0yOSwyMyArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91
cExheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQmluZEdyb3VwTGF5b3V0
OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmlu
ZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVCaW5k
R3JvdXBMYXlvdXQ6OlJlbW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3Vw
TGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJl
Z2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhiaW5kR3JvdXBMYXlvdXQpCisgICAgLCBtX29i
amVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhl
YXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lz
dHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZUJpbmRH
cm91cExheW91dDo6flJlbW90ZUJpbmRHcm91cExheW91dCgpCiB7CisgICAgbV9vYmplY3RSZWdp
c3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQ6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShs
YWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgKaW5kZXgg
ZDBmZGFjYWVhMmE1NDM5ZDFjYmU3MWM2YThmYjNlMTljODE4NTg1NS4uMjhkMGJlNGJiNDM5MDg3
NTViYmY4OTM4ZWQyMDhlNjdmZGZjZmM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91
dC5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBX
ZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBj
bGFzcyBSZW1vdGVCaW5kR3JvdXBMYXlvdXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwTGF5
b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVC
aW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5k
R3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cExheW91
dChiaW5kR3JvdXBMYXlvdXQsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dCwgb2JqZWN0UmVnaXN0
cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1v
dGVCaW5kR3JvdXBMYXlvdXQoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0
SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVCaW5k
R3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYpOworICAgIFJlbW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3Vw
TGF5b3V0JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdl
YkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFJlbW90
ZUJpbmRHcm91cExheW91dCYpID0gZGVsZXRlOwogICAgIFJlbW90ZUJpbmRHcm91cExheW91dChS
ZW1vdGVCaW5kR3JvdXBMYXlvdXQmJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6
OkJpbmRHcm91cExheW91dD4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+
IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJ1ZmZlci5jcHAKaW5kZXggMGZjMjZlNGI1ODg5ZTA4MzEzZDZhN2I5M2Y3ZWQxNjRkZjU2ZWE5
OC4uOGE1ZDI4YjZkZWQ2MzllNTJlYjU4M2RiNzIyY2E1MDEzNzM4NGY5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVm
ZmVyLmNwcApAQCAtMjksMjEgKzI5LDI3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lz
dHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVCdWZmZXI6OlJlbW90ZUJ1ZmZl
cihQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCkKK1JlbW90ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1
ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDog
bV9iYWNraW5nKGJ1ZmZlcikKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkp
CiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwg
bV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQnVmZmVyOjp+UmVtb3RlQnVmZmVyKCkKIHsKKyAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxh
Z3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8dWludDhfdD4mJik+JiYgY2FsbGJhY2spCiB7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgogICAgIFVOVVNFRF9QQVJBTShtYXBNb2RlRmxhZ3MpOwogICAgIFVOVVNFRF9Q
QVJBTShvZmZzZXQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CkBAIC01MSwxNiArNTcs
MTggQEAgdm9pZCBSZW1vdGVCdWZmZXI6Om1hcEFzeW5jKFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxh
Z3MgbWFwTW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmEKIAogdm9pZCBSZW1vdGVCdWZmZXI6OnVubWFw
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
LgogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVCdWZmZXI6OmRlc3Ry
b3koKQogeworICAgIG1fYmFja2luZy0+ZGVzdHJveSgpOwogfQogCiB2b2lkIFJlbW90ZUJ1ZmZl
cjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaAppbmRleCAxNGE0NWE3ZGRhZTdkNDMxODY3NTQwZGUw
OTI4OTIyMTBkMzQxNTJkLi5kMjI0OGRjMmM5MTVmZTUzYjRmMzNhNjE5YWU0MGE4NTUzMTEwYzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQnVmZmVyLmgKQEAgLTQ1LDIxICs0NSwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVn
aXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVh
bU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVCdWZmZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2Vi
R1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0
cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQnVmZmVy
KGJ1ZmZlciwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVCdWZmZXIoYnVmZmVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJ1ZmZlcigpOwogCiBwcml2YXRlOgotICAg
IGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIAotICAgIFJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6QnVmZmVyJiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJik7CisgICAgUmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVCdWZmZXIoY29uc3QgUmVtb3RlQnVmZmVyJikgPSBkZWxldGU7CiAgICAg
UmVtb3RlQnVmZmVyKFJlbW90ZUJ1ZmZlciYmKSA9IGRlbGV0ZTsKQEAgLTc2LDcgKzc3LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6Oldl
YkdQVTo6QnVmZmVyPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9v
YmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7
CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IDQ0YTlkNTkxM2ZkM2U4YzFmZWM2OTYxYTVhY2Yy
OGEwMmQ4MjBiMzkuLmE5YzZhMmI2ZTYwM2Y0MDc4MGNhZWEwMDdiNTczYjJlNGQ2ZDRhMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmNwcApAQCAtMjksMjMgKzI5LDI4IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2lu
Y2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1v
dGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitS
ZW1vdGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21t
YW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RS
ZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29tbWFuZEJ1ZmZlcikKKyAgICAsIG1fb2Jq
ZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVh
cCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0
cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQ29tbWFu
ZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZmZXIoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
cmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEJ1ZmZl
cjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCmluZGV4IGRhNTZmYmE2YThj
MzYzYjY2MjI1OWU2YjZiNTAzZGU1YmNhNTYwMDcuLjE0MGMxYTQ4YTExZGVmOWNhYmFjOWE1MWM4
NGExY2RkYzc0MmQ4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCkBAIC00MCwyMSAr
NDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3Mg
T2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVDb21t
YW5kQnVmZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShQQUw6Oldl
YkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVDb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZmZXIsIG9iamVjdEhlYXApKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEJ1ZmZlcihjb21tYW5k
QnVmZmVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRCdWZmZXIoKTsKIAogcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7
CiAKLSAgICBSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiwg
V2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVj
dEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1hbmRCdWZmZXIoY29u
c3QgUmVtb3RlQ29tbWFuZEJ1ZmZlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbW1hbmRCdWZm
ZXIoUmVtb3RlQ29tbWFuZEJ1ZmZlciYmKSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlcj4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+
IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IDU2OGQwMTJhZmFkY2VmYTgxMjhhYzY5
M2MxN2M3Mjc0NGE0ZWQ1YzUuLmFjOTQ5ZWZhNGI2YjRlY2UyMmYyMTZjY2ExNjUzZTU3NjAwYjBk
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0yOCwzMiArMjgsNTYg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRC
dWZmZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaCIKKyNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oIgogI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQYXNz
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJX
ZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUNvbW1h
bmRFbmNvZGVyOjpSZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29k
ZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6UmVtb3RlQ29tbWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1h
bmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGNvbW1hbmRFbmNvZGVyKQorICAgICwgbV9v
YmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RI
ZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdp
c3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6flJlbW90ZUNvbW1hbmRFbmNvZGVyKCkKIHsKKyAgICBtX29iamVjdFJlZ2lz
dHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVOVVNF
RF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAg
YXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJh
Y2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAg
IGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBy
ZW5kZXJQYXNzRW5jb2RlciA9IG1fYmFja2luZy0+YmVnaW5SZW5kZXJQYXNzKCpjb252ZXJ0ZWRE
ZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyID0gUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShyZW5kZXJQYXNzRW5jb2RlciwgbV9vYmplY3RSZWdpc3Ry
eSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6Q29tcHV0ZVBh
c3NEZXNjcmlwdG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRp
Zmllcik7CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlw
dG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOworICAgIGlmIChkZXNjcmlwdG9yKSB7CisgICAgICAg
IGF1dG8gcmVzdWx0RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKCpkZXNjcmlwdG9yKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdERlc2NyaXB0b3IpOworICAg
ICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gV1RGTW92ZShyZXN1bHREZXNjcmlwdG9yKTsKKyAg
ICAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gY29tcHV0ZVBhc3NFbmNvZGVyID0gbV9iYWNraW5nLT5iZWdpbkNvbXB1
dGVQYXNzKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbXB1dGVSZW5kZXJQYXNz
RW5jb2RlciA9IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKGNvbXB1dGVQYXNzRW5j
b2RlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBt
X29iamVjdEhlYXAuYWRkT2JqZWN0KGNvbXB1dGVSZW5kZXJQYXNzRW5jb2Rlcik7CiB9CiAKIHZv
aWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigKQEAgLTYzLDExICs4
NywxNCBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoCiAg
ICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwKICAgICBQQUw6OldlYkdQ
VTo6U2l6ZTY0IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNvdXJjZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1
ZmZlckZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1
ZmZlckZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9u
KTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+Y29weUJ1ZmZlclRvQnVmZmVyKCpjb252
ZXJ0ZWRTb3VyY2UsIHNvdXJjZU9mZnNldCwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5h
dGlvbk9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlC
dWZmZXJUb1RleHR1cmUoCkBAIC03NSw5ICsxMDIsMTYgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6OkltYWdlQ29weVRl
eHR1cmUmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXpl
KQogewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5h
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNv
dXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAg
QVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBB
U1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUg
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CisgICAgQVNT
RVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29u
dmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2JhY2tpbmctPmNvcHlCdWZmZXJUb1RleHR1cmUoKmNvbnZlcnRlZFNvdXJjZSwg
KmNvbnZlcnRlZERlc3RpbmF0aW9uLCAqY29udmVydGVkQ29weVNpemUpOwogfQogCiB2b2lkIFJl
bW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKApAQCAtODUsOSArMTE5LDE2
IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoCiAgICAg
Y29uc3QgV2ViR1BVOjpJbWFnZUNvcHlCdWZmZXImIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdl
YkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwot
ICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXpl
KTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0
byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAg
IGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFj
a2luZyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAo
IWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENv
cHlTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPmNvcHlUZXh0dXJlVG9C
dWZmZXIoKmNvbnZlcnRlZFNvdXJjZSwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCAqY29udmVydGVk
Q29weVNpemUpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRv
VGV4dHVyZSgKQEAgLTk1LDkgKzEzNiwxNiBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6OkltYWdlQ29weVRleHR1cmUm
IGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewot
ICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJU
KGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNv
bnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVk
RGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2JhY2tpbmctPmNvcHlUZXh0dXJlVG9UZXh0dXJlKCpjb252ZXJ0ZWRTb3VyY2UsICpjb252
ZXJ0ZWREZXN0aW5hdGlvbiwgKmNvbnZlcnRlZENvcHlTaXplKTsKIH0KIAogdm9pZCBSZW1vdGVD
b21tYW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcigKQEAgLTEwNSwyOSArMTUzLDM3IEBAIHZvaWQgUmVt
b3RlQ29tbWFuZEVuY29kZXI6OmZpbGxCdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBk
ZXN0aW5hdGlvbk9mZnNldCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IHNpemUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25P
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3Rp
bmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoZGVzdGlu
YXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgaWYgKCFjb252
ZXJ0ZWREZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5maWxs
QnVmZmVyKCpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgZGVzdGluYXRpb25PZmZzZXQsIHNpemUpOwog
fQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBn
cm91cExhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAgICBtX2JhY2tp
bmctPnB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90
ZUNvbW1hbmRFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKIHsKKyAgICBtX2JhY2tpbmctPnBvcERl
YnVnR3JvdXAoKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdN
YXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcmtlckxh
YmVsKTsKKyAgICBtX2JhY2tpbmctPmluc2VydERlYnVnTWFya2VyKFdURk1vdmUobWFya2VyTGFi
ZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAoV2Vi
R1BVSWRlbnRpZmllciBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQog
ewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5k
ZXgpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBBU1NFUlQoY29udmVydGVkUXVl
cnlTZXQpOworICAgIGlmICghY29udmVydGVkUXVlcnlTZXQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fYmFja2luZy0+d3JpdGVUaW1lc3RhbXAoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUlu
ZGV4KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6cmVzb2x2ZVF1ZXJ5U2V0KApA
QCAtMTM3LDIyICsxOTMsMzEgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6cmVzb2x2ZVF1
ZXJ5U2V0KAogICAgIFdlYkdQVUlkZW50aWZpZXIgZGVzdGluYXRpb24sCiAgICAgUEFMOjpXZWJH
UFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlT
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFF1ZXJ5KTsKLSAgICBVTlVTRURfUEFSQU0ocXVl
cnlDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGVzdGluYXRpb25PZmZzZXQpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBB
U1NFUlQoY29udmVydGVkUXVlcnlTZXQpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24g
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7
CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBpZiAoIWNvbnZlcnRlZFF1
ZXJ5U2V0IHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9iYWNraW5nLT5yZXNvbHZlUXVlcnlTZXQoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBmaXJzdFF1ZXJ5
LCBxdWVyeUNvdW50LCAqY29udmVydGVkRGVzdGluYXRpb24sIGRlc3RpbmF0aW9uT2Zmc2V0KTsK
IH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdlYkdQVTo6Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fYmFja2luZy0+ZmluaXNoKCpjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZUNvbW1hbmRCdWZmZXIgPSBSZW1vdGVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9v
YmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90
ZUNvbW1hbmRCdWZmZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpzZXRMYWJl
bChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFj
a2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuaAppbmRleCBjYjYwZTRiMTM4NmEyZTNlMGNk
ZDU5Yjc2YmYyZjhmNjY0ZWIzODA0Li5iYjYwNGFhN2M4YWRkYjRjMWYwYjllMDAwZGNiYmFhZjQ5
ODcyMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oCkBAIC00NiwyMiArNDYsMjMg
QEAgc3RydWN0IENvbXB1dGVQYXNzRGVzY3JpcHRvcjsKIHN0cnVjdCBJbWFnZUNvcHlCdWZmZXI7
CiBzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZTsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmpl
Y3RSZWdpc3RyeTsKIHN0cnVjdCBSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVt
b3RlQ29tbWFuZEVuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+IGNyZWF0
ZShQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5jb2Rl
cj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1hbmRFbmNvZGVyKGNvbW1hbmRFbmNvZGVy
LCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1h
bmRFbmNvZGVyKGNvbW1hbmRFbmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRl
bnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRFbmNvZGVyKCk7
CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNs
YXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlQ29tbWFuZEVuY29kZXIoUEFMOjpXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQ29t
bWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAg
UmVtb3RlQ29tbWFuZEVuY29kZXIoY29uc3QgUmVtb3RlQ29tbWFuZEVuY29kZXImKSA9IGRlbGV0
ZTsKICAgICBSZW1vdGVDb21tYW5kRW5jb2RlcihSZW1vdGVDb21tYW5kRW5jb2RlciYmKSA9IGRl
bGV0ZTsKQEAgLTExOCw3ICsxMTksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3Ry
aW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4gbV9iYWNraW5n
OwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVh
cCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5j
b2Rlci5jcHAKaW5kZXggNDM1MGE5ZjZkZjAwZjQ1YzFjMjE1OWZjNjFiMzdjN2JlMjFlZjkwNC4u
OGIxMjMzMTU5NzRkYTY0YWIxMThmMjg1MmYyOTBjN2MyZDViY2RlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcApAQCAtMjksNzcgKzI5LDk5IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1
ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJl
bW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBh
c3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoY29tcHV0ZVBhc3NFbmNvZGVyKQorICAgICwgbV9vYmplY3RSZWdpc3Ry
eShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmpl
Y3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI6On5SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
cmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIGNvbXB1dGVQaXBlbGluZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBhdXRvIGNvbnZlcnRlZENv
bXB1dGVQaXBlbGluZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydENvbXB1dGVQaXBlbGluZUZy
b21CYWNraW5nKGNvbXB1dGVQaXBlbGluZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvbXB1dGVQ
aXBlbGluZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYmFja2luZy0+c2V0UGlwZWxpbmUoKmNvbnZlcnRlZENvbXB1dGVQaXBl
bGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaChQQUw6
OldlYkdQVTo6U2l6ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUzMj4geSwg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB6KQogewotICAgIFVOVVNFRF9QQVJB
TSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHopOworICAgIG1f
YmFja2luZy0+ZGlzcGF0Y2goeCwgeSwgeik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyOjpkaXNwYXRjaEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIs
IFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGluZGlyZWN0QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworICAg
IGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPmRpc3BhdGNoSW5kaXJlY3QoKmNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdlYkdQVUlkZW50aWZpZXIg
cXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVTRURf
UEFSQU0ocXVlcnlTZXQpOwotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRv
IGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UXVlcnlTZXRGcm9t
QmFja2luZyhxdWVyeVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAgICBp
ZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmct
PmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUlu
ZGV4KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KCkKIHsKKyAgICBtX2JhY2tpbmctPmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1
ZXJ5KCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKIHsK
KyAgICBtX2JhY2tpbmctPmVuZFBhc3MoKTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgV2ViR1BVSWRl
bnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6
OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIG9mZnNldHMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
ZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zm
c2V0cyk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0
ZWRCaW5kR3JvdXApOworICAgIGlmICghY29udmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2JhY2tpbmctPnNldEJpbmRHcm91cChpbmRleCwgKmNvbnZlcnRlZEJpbmRH
cm91cCwgV1RGTW92ZShvZmZzZXRzKSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewotICAgIFVOVVNFRF9Q
QVJBTShncm91cExhYmVsKTsKKyAgICBtX2JhY2tpbmctPnB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUo
Z3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6cG9wRGVi
dWdHcm91cCgpCiB7CisgICAgbV9iYWNraW5nLT5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJr
ZXJMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIG1fYmFja2lu
Zy0+aW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpOwogfQogCiB2b2lkIFJl
bW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFi
ZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXIuaAppbmRleCA3N2FmYmQ4ZTljNTRlZjYyNDcxZmQwODRkMzEyNmY4MWYxMjhl
YzUzLi4wMGY5ZGQzMGQ3MTY1ZWJmOThkM2JhNWE3ZmVhOGEwMWI2MGU5OGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTQxLDIxICs0MSwyMiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xh
c3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciBm
aW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6
Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4g
Y3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2Rl
ciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1
dGVQYXNzRW5jb2Rlciwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29tcHV0ZVBhc3NFbmNvZGVyLCBvYmplY3RSZWdp
c3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBP
YmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiwgV2Vi
R1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BV
OjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXIoY29uc3QgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyJikgPSBkZWxldGU7CiAgICAg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYmKSA9IGRl
bGV0ZTsKQEAgLTgzLDcgKzg0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiBtX2JhY2tp
bmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RI
ZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
LmNwcAppbmRleCA5YjlkOTA5NDgxOTJjNGJmMDAzNDFjZjhiZTY4ZjQ2ZmRlNGNmZGFjLi43MDE2
YTFmOTc5MDllYzJiNGI2ZmZkMGYxYjhiMzRiZjRmMTFlNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21wdXRlUGlwZWxpbmUuY3BwCkBAIC0yOCwzMCArMjgsMzggQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91cExheW91dC5oIgogI2luY2x1ZGUg
IldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgor
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUNvbXB1dGVQaXBlbGluZTo6UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpS
ZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0
ZVBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoY29tcHV0ZVBpcGVsaW5lKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShv
YmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVDb21wdXRlUGlwZWxpbmU6On5S
ZW1vdGVDb21wdXRlUGlwZWxpbmUoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2Jq
ZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpnZXRC
aW5kR3JvdXBMYXlvdXQodWludDMyX3QgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlm
aWVyKTsKKyAgICBhdXRvIGJpbmRHcm91cExheW91dCA9IG1fYmFja2luZy0+Z2V0QmluZEdyb3Vw
TGF5b3V0KGluZGV4KTsKKyAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJp
bmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmplY3RSZWdpc3RyeSwg
bV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJl
bW90ZUJpbmRHcm91cExheW91dCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAg
IG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oCmluZGV4IGViMzQwNDNkNzQ4
ZmJmN2VmNmJlYTJiMzJkNTA5ZTZmMGNmMmIwMjMuLjg0ZGFhYjg2Y2M2OWRiNGYzMzUxZTFmYzEw
ZWYzNDYzYmE3NzdkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaApAQCAtNDAs
MjEgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNs
YXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4gY3JlYXRl
KFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVs
aW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5l
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90
ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RI
ZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0ZVBp
cGVsaW5lKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAg
ZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
KFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAg
ICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlm
aWVyKTsKIAogICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZShjb25zdCBSZW1vdGVDb21wdXRlUGlw
ZWxpbmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUmVtb3RlQ29tcHV0
ZVBpcGVsaW5lJiYpID0gZGVsZXRlOwpAQCAtNjgsNyArNjksOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmU+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhl
YXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3Bw
CmluZGV4IGI0MDEyYWE3ODY1ODdhNDEyNzRmMDhkYmZhZTVhMmNkOWY2MDUyOWIuLjg0NWM0M2I0
ZDE0MTUyM2RhNjQwOWJlODA0NDM4NjgxY2NiZjNlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAKQEAg
LTI4LDEzMSArMjgsMjkzIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRl
ICJSZW1vdGVCaW5kR3JvdXAuaCIKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCIK
KyNpbmNsdWRlICJSZW1vdGVCdWZmZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2Rl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGluZS5oIgorI2luY2x1ZGUgIlJlbW90
ZUV4dGVybmFsVGV4dHVyZS5oIgorI2luY2x1ZGUgIlJlbW90ZVBpcGVsaW5lTGF5b3V0LmgiCisj
aW5jbHVkZSAiUmVtb3RlUXVlcnlTZXQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGlwZWxpbmUuaCIKKyNpbmNsdWRlICJS
ZW1vdGVTYW1wbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlU2hhZGVyTW9kdWxlLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyRGVzY3Jp
cHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVP
YmplY3RSZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkdQVU91dE9mTWVtb3J5RXJyb3IuaCIKKyNp
bmNsdWRlICJXZWJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oPgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KKyNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmg+Cisj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1wbGVyLmg+CisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlLmg+CisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg+Cisj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlLmg+CisjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oPgorCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1SZW1vdGVEZXZpY2U6OlJlbW90ZURldmljZShQQUw6OldlYkdQVTo6
RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZURl
dmljZTo6UmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmljZSwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGRldmlj
ZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVj
dEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAg
IG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0K
IAogUmVtb3RlRGV2aWNlOjp+UmVtb3RlRGV2aWNlKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6ZGVz
dHJveSgpCiB7CisgICAgbV9iYWNraW5nLT5kZXN0cm95KCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2
aWNlOjpjcmVhdGVCdWZmZXIoY29uc3QgV2ViR1BVOjpCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNvbnZl
cnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNj
cmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252
ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1f
YmFja2luZy0+Y3JlYXRlQnVmZmVyKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJl
bW90ZUJ1ZmZlciA9IFJlbW90ZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlciwgbV9vYmplY3RSZWdpc3Ry
eSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KHJlbW90ZUJ1ZmZlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNv
bnN0IFdlYkdQVTo6VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5V
U0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1f
b2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VS
VChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGV4dHVyZSA9IG1fYmFja2luZy0+Y3JlYXRlVGV4
dHVyZSgqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVUZXh0dXJlID0gUmVt
b3RlVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmUsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVh
cCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVUZXh0dXJl
KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgV2ViR1BVOjpT
YW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRl
bnRpZmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERl
c2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBzYW1wbGVyID0gbV9iYWNraW5nLT5jcmVhdGVTYW1wbGVyKCpjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVNhbXBsZXIgPSBSZW1vdGVTYW1wbGVyOjpj
cmVhdGUoc2FtcGxlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVy
KTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVNhbXBsZXIpOwogfQogCiB2b2lk
IFJlbW90ZURldmljZTo6aW1wb3J0RXh0ZXJuYWxUZXh0dXJlKGNvbnN0IFdlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0o
aWRlbnRpZmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZERlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBleHRlcm5hbFRleHR1cmUgPSBtX2JhY2tpbmctPmltcG9ydEV4dGVy
bmFsVGV4dHVyZSgqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVFeHRlcm5h
bFRleHR1cmUgPSBSZW1vdGVFeHRlcm5hbFRleHR1cmU6OmNyZWF0ZShleHRlcm5hbFRleHR1cmUs
IG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmpl
Y3RIZWFwLmFkZE9iamVjdChyZW1vdGVFeHRlcm5hbFRleHR1cmUpOwogfQogCiB2b2lkIFJlbW90
ZURldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdlYkdQVTo6QmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRp
Zmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2Ny
aXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmNyZWF0ZUJpbmRHcm91cExh
eW91dCgqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlv
dXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2Jq
ZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFw
LmFkZE9iamVjdChyZW1vdGVCaW5kR3JvdXBMYXlvdXQpOwogfQogCiB2b2lkIFJlbW90ZURldmlj
ZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVOjpQaXBlbGluZUxheW91dERlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBV
TlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwor
ICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsK
KyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gcGlwZWxpbmVMYXlvdXQgPSBtX2JhY2tpbmctPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVtb3Rl
UGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShwaXBlbGluZUxheW91dCwgbV9vYmplY3RSZWdpc3RyeSwg
bV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJl
bW90ZVBpcGVsaW5lTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUJpbmRH
cm91cChjb25zdCBXZWJHUFU6OkJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7
Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3Jp
cHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYmluZEdyb3VwID0gbV9iYWNraW5n
LT5jcmVhdGVCaW5kR3JvdXAoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3Rl
QmluZEdyb3VwID0gUmVtb3RlQmluZEdyb3VwOjpjcmVhdGUoYmluZEdyb3VwLCBtX29iamVjdFJl
Z2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRP
YmplY3QocmVtb3RlQmluZEdyb3VwKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVNo
YWRlck1vZHVsZShjb25zdCBXZWJHUFU6OlNoYWRlck1vZHVsZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVz
Y3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVy
dGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2Ny
aXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZl
cnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2hhZGVyTW9kdWxl
ID0gbV9iYWNraW5nLT5jcmVhdGVTaGFkZXJNb2R1bGUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwor
ICAgIGF1dG8gcmVtb3RlU2hhZGVyTW9kdWxlID0gUmVtb3RlU2hhZGVyTW9kdWxlOjpjcmVhdGUo
c2hhZGVyTW9kdWxlLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIp
OworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlU2hhZGVyTW9kdWxlKTsKIH0KIAog
dm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXZWJHUFU6OkNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BB
UkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gY29tcHV0ZVBpcGVsaW5lID0gbV9iYWNraW5nLT5jcmVhdGVD
b21wdXRlUGlwZWxpbmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlQ29t
cHV0ZVBpcGVsaW5lID0gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVs
aW5lLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1f
b2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTsKIH0KIAogdm9pZCBS
ZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdlYkdQVTo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVu
dGlmaWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVz
Y3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHJlbmRlclBpcGVsaW5lID0gbV9iYWNraW5nLT5jcmVhdGVSZW5kZXJQaXBl
bGluZSgqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGlu
ZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG1fb2JqZWN0
UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChyZW1vdGVSZW5kZXJQaXBlbGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpj
cmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKLSAgICBVTlVTRURf
UEFSQU0oY2FsbGJhY2spOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fYmFja2luZy0+
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BVOjpP
YmplY3RIZWFwPihtX29iamVjdEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0
cnksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBjb21w
dXRlUGlwZWxpbmUpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJl
bW90ZUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0UmVnaXN0
cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgICAgIHdlYWtPYmplY3RIZWFw
LT5hZGRPYmplY3QocmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTsKKyAgICAgICAgY2FsbGJhY2soKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5
bmMoY29uc3QgV2ViR1BVOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNF
RF9QQVJBTShpZGVudGlmaWVyKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIGF1
dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBp
ZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3lu
YygqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdl
YWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCks
IG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYgcmVuZGVyUGlwZWxpbmUpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBh
dXRvIHJlbW90ZVJlbmRlclBpcGVsaW5lID0gUmVtb3RlUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShy
ZW5kZXJQaXBlbGluZSwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmll
cik7CisgICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3RlUmVuZGVyUGlwZWxp
bmUpOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZURldmlj
ZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OkNvbW1h
bmRFbmNvZGVyRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGlkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNv
ZGVyRGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKKyAgICBpZiAoZGVzY3JpcHRvcikg
eworICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHREZXNjcmlw
dG9yKTsKKyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVzY3Jp
cHRvcik7CisgICAgICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgYXV0byBjb21tYW5kRW5jb2RlciA9IG1fYmFja2luZy0+Y3JlYXRl
Q29tbWFuZEVuY29kZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlQ29t
bWFuZEVuY29kZXIgPSBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKGNvbW1hbmRFbmNvZGVy
LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2Jq
ZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQ29tbWFuZEVuY29kZXIpOwogfQogCiB2b2lkIFJlbW90
ZURldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBXZWJHUFU6OlJlbmRlckJ1
bmRsZUVuY29kZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJB
TShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVy
dGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIHJlbmRlckJ1bmRsZUVuY29kZXIgPSBtX2JhY2tpbmctPmNyZWF0
ZVJlbmRlckJ1bmRsZUVuY29kZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2RlciA9IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0
ZShyZW5kZXJCdW5kbGVFbmNvZGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlk
ZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVRdWVyeVNldChjb25zdCBX
ZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURf
UEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNv
bnZlcnRlZERlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBxdWVyeVNldCA9IG1fYmFja2luZy0+Y3JlYXRlUXVlcnlT
ZXQoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlUXVlcnlTZXQgPSBSZW1v
dGVRdWVyeVNldDo6Y3JlYXRlKHF1ZXJ5U2V0LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhl
YXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUXVlcnlT
ZXQpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6cHVzaEVycm9yU2NvcGUoUEFMOjpXZWJHUFU6
OkVycm9yRmlsdGVyIGVycm9yRmlsdGVyKQogewotICAgIFVOVVNFRF9QQVJBTShlcnJvckZpbHRl
cik7CisgICAgbV9iYWNraW5nLT5wdXNoRXJyb3JTY29wZShlcnJvckZpbHRlcik7CiB9CiAKIHZv
aWQgUmVtb3RlRGV2aWNlOjpwb3BFcnJvclNjb3BlKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6RXJyb3I+JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFVO
VVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgbV9iYWNraW5nLT5wb3BFcnJvclNjb3BlKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6RXJy
b3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgV1RGOjpzd2l0Y2hPbigqZXJyb3IsIFsmXSAoUmVmPFBBTDo6V2ViR1BVOjpP
dXRPZk1lbW9yeUVycm9yPiBvdXRPZk1lbW9yeUVycm9yKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayh7IFdlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvciB7IH0gfSk7CisgICAgICAgIH0sIFsmXSAoUmVm
PFBBTDo6V2ViR1BVOjpWYWxpZGF0aW9uRXJyb3I+IHZhbGlkYXRpb25FcnJvcikgeworICAgICAg
ICAgICAgY2FsbGJhY2soeyBXZWJHUFU6OlZhbGlkYXRpb25FcnJvciB7IHZhbGlkYXRpb25FcnJv
ci0+bWVzc2FnZSgpIH0gfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90
ZURldmljZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuaAppbmRleCA5ZWEyMGE3M2JiYmU1ZDA3NjM4
MWY4NzFkZjI2MmYyZDE4NDVjODNhLi40OTdjZGEwOTYxNGVlNDZhZDBjMTU3OTI4ZDE2YTIyYWI2
MGJlNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlRGV2aWNlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IENvbW1hbmRF
bmNvZGVyRGVzY3JpcHRvcjsKIHN0cnVjdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwogc3Ry
dWN0IEV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3Mg
T2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwogc3RydWN0
IFF1ZXJ5U2V0RGVzY3JpcHRvcjsKIHN0cnVjdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRv
cjsKQEAgLTYwLDE3ICs2MSwxNyBAQCBzdHJ1Y3QgVGV4dHVyZURlc2NyaXB0b3I7CiAKIGNsYXNz
IFJlbW90ZURldmljZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVEZXZpY2U+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZURldmljZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmlj
ZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRGV2aWNlKGRldmljZSwgb2JqZWN0SGVh
cCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNlLCBv
YmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIH5S
ZW1vdGVEZXZpY2UoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsK
KyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVEZXZpY2UoUEFM
OjpXZWJHUFU6OkRldmljZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZURldmlj
ZShQQUw6OldlYkdQVTo6RGV2aWNlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6
T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRGV2aWNlKGNvbnN0
IFJlbW90ZURldmljZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZURldmljZShSZW1vdGVEZXZpY2Um
JikgPSBkZWxldGU7CkBAIC0xMDcsNyArMTA4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExh
YmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiBtX2JhY2tpbmc7
Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNw
cAppbmRleCA2OGJjNGQ5N2I1ZjBiODdmZTkxNmJkNzA1M2NkNDNkODQ1N2E2OTdjLi45NTNkMGU0
ZDgwYTZlZjhmZGIzZDc2MTU3ZDcyY2E0NDllODQwMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRl
cm5hbFRleHR1cmUuY3BwCkBAIC0yOSwyMyArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVy
bmFsVGV4dHVyZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlRXh0ZXJuYWxUZXh0
dXJlOjpSZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYg
ZXh0ZXJuYWxUZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVF
eHRlcm5hbFRleHR1cmU6OlJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVj
dFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhleHRlcm5hbFRleHR1cmUpCisgICAgLCBt
X29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVj
dEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJl
Z2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZUV4
dGVybmFsVGV4dHVyZTo6flJlbW90ZUV4dGVybmFsVGV4dHVyZSgpCiB7CisgICAgbV9vYmplY3RS
ZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVFeHRl
cm5hbFRleHR1cmU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJB
TShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKaW5k
ZXggZGZjZGUzZDc4ZGQyM2Q1ZGQ4MDNlZTUzY2I2OTQ0YzhmOGE4NWMzZC4uMzFkMWM1NDM5OTJi
YmJiZWYxMzQ2MmJkMTAzYmI4MjhlMWZmOTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4
dHVyZS5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFj
ZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQog
CiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0
dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1v
dGVFeHRlcm5hbFRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBl
eHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUV4dGVybmFsVGV4
dHVyZShleHRlcm5hbFRleHR1cmUsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKGV4dGVybmFsVGV4dHVyZSwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVFeHRlcm5hbFRleHR1cmUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2Jq
ZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVF
eHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYpOworICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKGNvbnN0IFJl
bW90ZUV4dGVybmFsVGV4dHVyZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUV4dGVybmFsVGV4dHVy
ZShSZW1vdGVFeHRlcm5hbFRleHR1cmUmJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJH
UFU6OkV4dGVybmFsVGV4dHVyZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhl
YXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJl
Z2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQ
VUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVS5jcHAKaW5kZXggYWQ0MGY1MDViY2I0MDYzNTYzNGM5NjVmZGZhYmZhYzFiMDcyNDg5Ni4u
MTBmZmVjMDVmMzIyNTc3Y2VkNTliNWE4ZjNkYzk5NzA3YzJmZDNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApA
QCAtMjgsMjUgKzI4LDc0IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRl
ICJSZW1vdGVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1
ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUFkYXB0ZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUdQVTo6UmVtb3RlR1BVKFBBTDo6V2Vi
R1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlR1BV
OjpSZW1vdGVHUFUoUEFMOjpXZWJHUFU6OkdQVSYgZ3B1LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoZ3B1KQorICAgICwgbV9vYmpl
Y3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFw
KQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3Ry
eS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVHUFU6On5S
ZW1vdGVHUFUoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRp
Zmllcik7CiB9CiAKLXZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6
OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9y
dGVkTGltaXRzJiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVy
KGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwg
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7Ci0gICAgVU5VU0VEX1BB
UkFNKGNhbGxiYWNrKTsKKyAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKKyAgICBBU1NFUlQoY29udmVydGVkT3B0
aW9ucyk7CisgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2JhY2tpbmctPnJlcXVlc3RBZGFwdGVyKCpjb252ZXJ0ZWRPcHRpb25zLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRyPFdlYkdQVTo6T2Jq
ZWN0SGVhcD4obV9vYmplY3RIZWFwKSwgb2JqZWN0UmVnaXN0cnkgPSBtX29iamVjdFJlZ2lzdHJ5
LCBpZGVudGlmaWVyXSAoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIpIG11
dGFibGUgeworICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwIHx8ICFhZGFwdGVyKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZhaWx1cmUgaGVyZS4KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHJlbW90ZUFkYXB0ZXIgPSBSZW1vdGVBZGFw
dGVyOjpjcmVhdGUoKmFkYXB0ZXIsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAsIGlk
ZW50aWZpZXIpOworICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZUFkYXB0
ZXIpOworICAgICAgICBhdXRvIG5hbWUgPSBhZGFwdGVyLT5uYW1lKCk7CisgICAgICAgIGNvbnN0
IGF1dG8mIGZlYXR1cmVzID0gYWRhcHRlci0+ZmVhdHVyZXMoKTsKKyAgICAgICAgY29uc3QgYXV0
byYgbGltaXRzID0gYWRhcHRlci0+bGltaXRzKCk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
bmFtZSksIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgeyBmZWF0dXJlcy5mZWF0dXJlcygpIH0s
IFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHsKKyAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJl
RGltZW5zaW9uMUQoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQo
KSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QoKSwKKyAgICAgICAg
ICAgIGxpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5t
YXhCaW5kR3JvdXBzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4RHluYW1pY1VuaWZvcm1CdWZm
ZXJzUGVyUGlwZWxpbmVMYXlvdXQoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhEeW5hbWljU3Rv
cmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCgpLAorICAgICAgICAgICAgbGltaXRzLm1heFNh
bXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4U2Ft
cGxlcnNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFN0b3JhZ2VCdWZm
ZXJzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTdG9yYWdlVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFVuaWZvcm1CdWZmZXJz
UGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyQmlu
ZGluZ1NpemUoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1Np
emUoKSwKKyAgICAgICAgICAgIGxpbWl0cy5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50
KCksCisgICAgICAgICAgICBsaW1pdHMubWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCgp
LAorICAgICAgICAgICAgbGltaXRzLm1heFZlcnRleEJ1ZmZlcnMoKSwKKyAgICAgICAgICAgIGxp
bWl0cy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4VmVydGV4
QnVmZmVyQXJyYXlTdHJpZGUoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhJbnRlclN0YWdlU2hh
ZGVyQ29tcG9uZW50cygpLAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBT
dG9yYWdlU2l6ZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVJbnZvY2F0aW9uc1Bl
cldvcmtncm91cCgpLAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXpl
WCgpLAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSgpLAorICAg
ICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWigpLAorICAgICAgICAgICAg
bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uKCksCisgICAgICAgIH0pOwor
ICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCmluZGV4IGU0OTJkMjlj
MjU2ZGI2OTI2OGViOGNmY2VjYjE5NjY2NTJiYTM2ZjAuLmYwOWU5MjUwNDJiMWYyODc3ZGQ3ZmE4
NDIwOThhZmY5ODFjNWFiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaApAQCAtNDIsMjIgKzQyLDIzIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFz
cyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiB9CiAKIGNs
YXNzIFJlbW90ZUdQVSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVHUFU+IGNyZWF0ZShQQUw6OldlYkdQVTo6
R1BVJiBncHUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVm
PFJlbW90ZUdQVT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlR1BVKGdwdSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVHUFUoZ3B1LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRl
bnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUdQVSgpOwogCiBwcml2YXRl
OgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RS
ZWdpc3RyeTsKIAotICAgIFJlbW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJik7CisgICAgUmVtb3RlR1BVKFBBTDo6V2ViR1BVOjpHUFUmLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVHUFUoY29uc3QgUmVtb3RlR1BVJikgPSBkZWxldGU7CiAgICAgUmVtb3RlR1BVKFJl
bW90ZUdQVSYmKSA9IGRlbGV0ZTsKQEAgLTY2LDEwICs2NywxMiBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKLSAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNv
bnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3Vw
cG9ydGVkTGltaXRzJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQ
VTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiwgV2ViR1BVSWRlbnRpZmllciwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdl
YkdQVTo6U3VwcG9ydGVkTGltaXRzJiYpPiYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6R1BV
PiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOwor
ICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BV
OjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2Fn
ZXMuaW4KaW5kZXggODY1OGU3ZjVjN2NlNDE2N2NjZDM0ZDU5MWQ1YjJmMTJlZTYxN2E3Ny4uNDcw
OTEwYjkyMzVmNDExNTNhNjBlNjQwYzg3Mzg0MTRkMzJjMzlkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUu
bWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
IG1lc3NhZ2VzIC0+IFJlbW90ZUdQVSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7Ci0gICAgdm9pZCBS
ZXF1ZXN0QWRhcHRlcihXZWJLaXQ6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zIG9wdGlv
bnMpIC0+IChTdHJpbmcgbmFtZSwgV2ViS2l0OjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIHN1
cHBvcnRlZEZlYXR1cmVzLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHN1cHBvcnRl
ZExpbWl0cykgU3luY2hyb25vdXMKKyAgICB2b2lkIFJlcXVlc3RBZGFwdGVyKFdlYktpdDo6V2Vi
R1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpIC0+IChTdHJpbmcgbmFtZSwgV2ViS2l0OjpXZWJHUFU6OlN1cHBvcnRl
ZEZlYXR1cmVzIHN1cHBvcnRlZEZlYXR1cmVzLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkTGlt
aXRzIHN1cHBvcnRlZExpbWl0cykgU3luY2hyb25vdXMKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5l
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUGlwZWxpbmVMYXlvdXQuY3BwCmluZGV4IGYxMGZhZGZlNjZjNDg1MDc1ZTkxNmQ1ODYyODYw
NWNmZDU0NDNjNWYuLjZjZDhiNjc3ZDU5MTgwMmM2MjlkYjZmZDM0ODc0NzZhYTNlNmUwYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UGlwZWxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCkBAIC0yOSwyMyArMjksMjggQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1S
ZW1vdGVQaXBlbGluZUxheW91dDo6UmVtb3RlUGlwZWxpbmVMYXlvdXQoUEFMOjpXZWJHUFU6OlBp
cGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwKQorUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2Vi
R1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhwaXBlbGluZUxheW91dCkK
KyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhl
YXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1f
b2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAog
UmVtb3RlUGlwZWxpbmVMYXlvdXQ6On5SZW1vdGVQaXBlbGluZUxheW91dCgpCiB7CisgICAgbV9v
YmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1v
dGVQaXBlbGluZUxheW91dDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmgK
aW5kZXggZGNlOWRhNTBlOTA0NDJkMTIzMjQyNTg2OGY5NDkyZGMwNWJlZmYyYS4uMjNiY2FlYjYw
NjQxMjBiNTMyMDcyYzczNjJhODZmMGY2YzY3ZjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVM
YXlvdXQuaApAQCAtNDAsMjEgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0K
IAogY2xhc3MgUmVtb3RlUGlwZWxpbmVMYXlvdXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVM
YXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVQ
aXBlbGluZUxheW91dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxp
bmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVBpcGVsaW5lTGF5b3V0KHBp
cGVsaW5lTGF5b3V0LCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0LCBvYmplY3RSZWdpc3RyeSwgb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVBpcGVs
aW5lTGF5b3V0KCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7Cisg
ICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlUGlwZWxpbmVMYXlv
dXQoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RIZWFwJik7Cisg
ICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZp
ZXIpOwogCiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoY29uc3QgUmVtb3RlUGlwZWxpbmVMYXlv
dXQmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVQaXBlbGluZUxheW91dChSZW1vdGVQaXBlbGluZUxh
eW91dCYmKSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+
IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7Cisg
ICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6
Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcApp
bmRleCAxMGMzYjk3OGU5MjliMzVjOWI5MDViOTJiOTQ1NGIzN2UwMmIzZTk0Li5lMGNkMWM1YzNk
N2IxNTQ1NTVkZDExODkxZDZhYjIwMDdjYWY0YTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcApA
QCAtMjksMjcgKzI5LDMzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUmVtb3RlUXVlcnlTZXQ6OlJlbW90ZVF1ZXJ5U2V0KFBBTDo6V2ViR1BV
OjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1Jl
bW90ZVF1ZXJ5U2V0OjpSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5
U2V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBt
X2JhY2tpbmcocXVlcnlTZXQpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5
KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIs
IG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVF1ZXJ5U2V0Ojp+UmVtb3RlUXVlcnlTZXQoKQogewor
ICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgUmVtb3RlUXVlcnlTZXQ6OmRlc3Ryb3koKQogeworICAgIG1fYmFja2luZy0+ZGVzdHJveSgp
OwogfQogCiB2b2lkIFJlbW90ZVF1ZXJ5U2V0OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsK
LSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92
ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuaApp
bmRleCAxNjUwMmViODE3NTRiNTdjYmFhMDc5NDI5YzI4ZTRkZTQ1ZTc2OTA4Li5lMTdkNzNjMzJl
ZjNlZjBmMzdkNmFiZWE1NTU5MGY5ZDA1MTI2MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oCkBAIC00
MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewog
Y2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1v
dGVRdWVyeVNldCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVRdWVyeVNldD4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAg
ICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0
JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVlcnlTZXQocXVlcnlT
ZXQsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVl
cnlTZXQocXVlcnlTZXQsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUXVlcnlTZXQoKTsKIAogcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0
cnk7CiAKLSAgICBSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQm
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVRdWVyeVNldChjb25zdCBSZW1vdGVRdWVyeVNldCYpID0g
ZGVsZXRlOwogICAgIFJlbW90ZVF1ZXJ5U2V0KFJlbW90ZVF1ZXJ5U2V0JiYpID0gZGVsZXRlOwpA
QCAtNjgsNyArNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwog
CiAgICAgUmVmPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJH
UFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFw
OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwCmluZGV4IGRhMTE2NTE4MzU1MTNlMDljYTY3Njg2NDRi
NzgwNmM4ODYzZTE0NGMuLmRlYTY0MDk4ZmE2ZDQ1Yzg1NzM5MzQ0ZTVhYTdmMGYwODIzYjlhOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUXVldWUuY3BwCkBAIC0yOSwyOCArMjksNDQgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1
ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVRdWV1ZTo6UmVtb3RlUXVldWUo
UEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
KQorUmVtb3RlUXVldWU6OlJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2lu
ZyhxdWV1ZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBt
X29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
eworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5n
KTsKIH0KIAogUmVtb3RlUXVldWU6On5SZW1vdGVRdWV1ZSgpCiB7CisgICAgbV9vYmplY3RSZWdp
c3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1ZTo6
c3VibWl0KFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiYmIGNvbW1hbmRCdWZmZXJzKQogewotICAg
IFVOVVNFRF9QQVJBTShjb21tYW5kQnVmZmVycyk7CisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+PiBjb252ZXJ0ZWRDb21tYW5kQnVm
ZmVyczsKKyAgICBjb252ZXJ0ZWRDb21tYW5kQnVmZmVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGNvbW1hbmRCdWZmZXJzLnNpemUoKSk7CisgICAgZm9yIChXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIgOiBjb21tYW5kQnVmZmVycykgeworICAgICAgICBhdXRvIGNvbnZlcnRlZENvbW1hbmRC
dWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmco
aWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChjb252ZXJ0ZWRDb21tYW5kQnVmZmVyKTsKKyAg
ICAgICAgaWYgKCFjb252ZXJ0ZWRDb21tYW5kQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBjb252ZXJ0ZWRDb21tYW5kQnVmZmVycy51bmNoZWNrZWRBcHBlbmQoKmNvbnZlcnRl
ZENvbW1hbmRCdWZmZXIpOworICAgIH0KKyAgICBtX2JhY2tpbmctPnN1Ym1pdChXVEZNb3ZlKGNv
bnZlcnRlZENvbW1hbmRCdWZmZXJzKSk7CiB9CiAKIHZvaWQgUmVtb3RlUXVldWU6Om9uU3VibWl0
dGVkV29ya0RvbmUoV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBtX2JhY2tpbmctPm9uU3VibWl0dGVk
V29ya0RvbmUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAg
ICAgICBjYWxsYmFjaygpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlOjp3cml0ZUJ1
ZmZlcigKQEAgLTU4LDkgKzc0LDEyIEBAIHZvaWQgUmVtb3RlUXVldWU6OndyaXRlQnVmZmVyKAog
ICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgYnVmZmVyT2Zmc2V0LAogICAgIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGJ1ZmZlck9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIGF1dG8gY29udmVy
dGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVm
ZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT53cml0ZUJ1ZmZlcigqY29u
dmVydGVkQnVmZmVyLCBidWZmZXJPZmZzZXQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMCwg
c3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1ZTo6d3JpdGVUZXh0dXJlKApAQCAt
NjksMTAgKzg4LDE2IEBAIHZvaWQgUmVtb3RlUXVldWU6OndyaXRlVGV4dHVyZSgKICAgICBjb25z
dCBXZWJHUFU6OkltYWdlRGF0YUxheW91dCYgZGF0YUxheW91dCwKICAgICBjb25zdCBXZWJHUFU6
OkV4dGVudDNEJiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAg
VU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhTGF5b3V0KTsKLSAgICBV
TlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkRGF0YUxheW91dCA9IG1f
b2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRhdGFMYXlvdXQpOworICAgIEFTU0VS
VChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWRTaXplID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZFNpemUpOworICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZERlc3Rp
bmF0aW9uIHx8ICFjb252ZXJ0ZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tp
bmctPndyaXRlVGV4dHVyZSgqY29udmVydGVkRGVzdGluYXRpb24sIGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSwgKmNvbnZlcnRlZERhdGFMYXlvdXQsICpjb252ZXJ0ZWRTaXplKTsKIH0KIAogdm9p
ZCBSZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoCkBAIC04MCwxNCArMTA1
LDIxIEBAIHZvaWQgUmVtb3RlUXVldWU6OmNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlKAogICAg
IGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYgZGVzdGluYXRpb24sCiAgICAg
Y29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNv
dXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0o
Y29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlv
bik7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEZyb21CYWNraW5nKGNvcHlTaXplKTsKKyAgICBBU1NFUlQoY29udmVydGVkQ29weVNpemUpOwor
ICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8
ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5j
b3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgqY29udmVydGVkU291cmNlLCAqY29udmVydGVkRGVz
dGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlUXVldWU6OnNl
dExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAg
bV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVRdWV1ZS5oCmluZGV4IGRmMzAxZGFkMTU4MzNkNjE3NzMyM2Q0Y2RjNjI1YTNl
MmJkMmFjZWEuLmE1MGFmODI0NTFmYjlmYmVkYTk3YzEwNjVlNjkzNjVmMzlmN2IzODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVl
dWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVF1ZXVlLmgKQEAgLTQ5LDIxICs0OSwyMiBAQCBzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZTsKIHN0
cnVjdCBJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkOwogc3RydWN0IEltYWdlRGF0YUxheW91dDsKIGNs
YXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3Rl
UXVldWUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVldWU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVldWUm
IHF1ZXVlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxS
ZW1vdGVRdWV1ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlKHF1ZXVlLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlKHF1ZXVlLCBvYmplY3RSZWdpc3RyeSwgb2Jq
ZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVF1ZXVl
KCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5k
IGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6OlF1
ZXVlJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6
OlF1ZXVlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdl
YkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUXVldWUoY29uc3QgUmVtb3RlUXVldWUmKSA9
IGRlbGV0ZTsKICAgICBSZW1vdGVRdWV1ZShSZW1vdGVRdWV1ZSYmKSA9IGRlbGV0ZTsKQEAgLTk1
LDcgKzk2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAg
IFJlZjxQQUw6OldlYkdQVTo6UXVldWU+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmpl
Y3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmpl
Y3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBX
ZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVSZW5kZXJCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwCmluZGV4IDk5NDA1NzllMmQ5MGU2YWIwMTlm
MzVkMGI5NjcxNGU5MTM2ODM4ZTcuLjE3ZTBhY2Y5MDE5YzM0ZDk5ZjJiMDY3NzI4NDFkMzVkMzhm
OGM5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHAKQEAgLTI5LDIzICsyOSwyOCBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1SZW1vdGVSZW5kZXJCdW5kbGU6OlJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkK
K1JlbW90ZVJlbmRlckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlckJ1bmRsZSkKKyAgICAsIG1fb2JqZWN0
UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkK
KyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
YWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlUmVuZGVyQnVu
ZGxlOjp+UmVtb3RlUmVuZGVyQnVuZGxlKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92
ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZTo6c2V0
TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBt
X2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaAppbmRleCBjZTJhYjA0ZmNiMTQ1NjlmZWEz
ZGU1Yjk0ZDc5NWE0Y2Q0YmY3Mjg4Li42YjgwZDU5YmE3MjcyODIyZGUwNzZhMmE1NzdjNjE3ZTE4
OWExY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmgKQEAgLTQwLDIxICs0MCwyMiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFw
OworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRlckJ1bmRsZSBm
aW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVy
QnVuZGxlJiByZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAg
ICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVu
ZGVyQnVuZGxlKHJlbmRlckJ1bmRsZSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGUocmVuZGVyQnVuZGxlLCBvYmplY3RSZWdpc3Ry
eSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZVJlbmRlckJ1bmRsZSgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFw
OworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVJlbmRlckJ1
bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7Cisg
ICAgUmVtb3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVSZW5kZXJCdW5kbGUoY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlJikgPSBk
ZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlKFJlbW90ZVJlbmRlckJ1bmRsZSYmKSA9IGRl
bGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPiBtX2JhY2tpbmc7Ci0g
ICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBt
X29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXIuY3BwCmluZGV4IGFhNjUyN2YyZmY5OTk0ODM1NTRlNTlkZjhkNDVmZGJmZWNkY2I5YjMuLjM1
YmE2NTI5ODEzMjFhYWMwYTE5YWZmNmRiYzM4Njg3ZDM3ZGE2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcApAQCAtMjgsNDkgKzI4LDYxIEBACiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGUuaCIKICNp
bmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0
cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVu
Y29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVu
Y29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCkKK1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIo
UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2lu
ZyhyZW5kZXJCdW5kbGVFbmNvZGVyKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdp
c3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlm
aWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjp+UmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2RlcigpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmpl
Y3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpz
ZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVsaW5lKQogewotICAgIFVOVVNF
RF9QQVJBTShyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQaXBlbGlu
ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcocmVu
ZGVyUGlwZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSk7CisgICAg
aWYgKCFjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9i
YWNraW5nLT5zZXRQaXBlbGluZSgqY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlkZW50aWZp
ZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6SW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQsIFBBTDo6V2Vi
R1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNp
emUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4
Rm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6
ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOwor
ICAgIGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tp
bmctPnNldEluZGV4QnVmZmVyKCpjb252ZXJ0ZWRCdWZmZXIsIGluZGV4Rm9ybWF0LCBvZmZzZXQs
IHNpemUpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFZlcnRleEJ1
ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBXZWJHUFVJZGVudGlmaWVyIGJ1ZmZlciwg
UEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNp
emU2ND4gc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc2xvdCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNp
emUpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsK
KyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNr
aW5nLT5zZXRWZXJ0ZXhCdWZmZXIoc2xvdCwgKmNvbnZlcnRlZEJ1ZmZlciwgb2Zmc2V0LCBzaXpl
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3KFBBTDo6V2ViR1BV
OjpTaXplMzIgdmVydGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwK
ICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0VmVydGV4LCBQQUw6OldlYkdQVTo6U2l6ZTMy
IGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHZlcnRleENvdW50KTsKLSAgICBV
TlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0VmVydGV4
KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7CisgICAgbV9iYWNraW5nLT5kcmF3
KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWQoUEFMOjpX
ZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291
bnQsCkBAIC03OCw1NiArOTAsNzAgQEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpk
cmF3SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFBBTDoKICAgICBQQUw6
OldlYkdQVTo6U2lnbmVkT2Zmc2V0MzIgYmFzZVZlcnRleCwKICAgICBQQUw6OldlYkdQVTo6U2l6
ZTMyIGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQpOwotICAg
IFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbmRl
eCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJz
dEluc3RhbmNlKTsKKyAgICBtX2JhY2tpbmctPmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3Rh
bmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwogfQogCiB2
b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVjdChXZWJHUFVJZGVudGlm
aWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQog
ewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
ZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAg
IEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRJbmRp
cmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5kcmF3SW5kaXJl
Y3QoKmNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChXZWJHUFVJZGVu
dGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0
KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRJ
bmRpcmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5kcmF3SW5k
ZXhlZEluZGlyZWN0KCpjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEJpbmRHcm91cChQQUw6Oldl
YkdQVTo6SW5kZXgzMiBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5
bmFtaWNPZmZzZXRzKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsKKyAgICBh
dXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJpbmRHcm91
cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7
CisgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIG1f
YmFja2luZy0+c2V0QmluZEdyb3VwKGluZGV4LCAqY29udmVydGVkQmluZEdyb3VwLCBXVEZNb3Zl
KGR5bmFtaWNPZmZzZXRzKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6
cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
Z3JvdXBMYWJlbCk7CisgICAgbV9iYWNraW5nLT5wdXNoRGVidWdHcm91cChXVEZNb3ZlKGdyb3Vw
TGFiZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpwb3BEZWJ1Z0dy
b3VwKCkKIHsKKyAgICBtX2JhY2tpbmctPnBvcERlYnVnR3JvdXAoKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJM
YWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIG1fYmFja2luZy0+
aW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaChjb25zdCBXZWJHUFU6OlJlbmRlckJ1bmRsZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIp
OworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gcmVuZGVyQnVuZGxlID0gbV9iYWNraW5nLT5maW5pc2goKmNvbnZlcnRlZERlc2NyaXB0
b3IpOworICAgIGF1dG8gcmVtb3RlUmVuZGVyQnVuZGxlID0gUmVtb3RlUmVuZGVyQnVuZGxlOjpj
cmVhdGUocmVuZGVyQnVuZGxlLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50
aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUmVuZGVyQnVuZGxlKTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRMYWJlbChTdHJpbmcmJiBs
YWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFi
ZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKaW5kZXggNWJmOTg1MjIxMDQ3NzQ3NTJhMGQ1
MWQ1MzdlNmQ1NjI3YzdiOTlhYy4uZjg3YjczZTAxYzdhYTRiMWI2NmQ0YzVhNzZhYWJiNTUzZDc3
MTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTQyLDIy
ICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFz
cyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgUmVuZGVyQnVuZGxl
RGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciBmaW5hbCA6
IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2Rl
ciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcihyZW5k
ZXJCdW5kbGVFbmNvZGVyLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIocmVuZGVyQnVuZGxlRW5jb2Rlciwgb2JqZWN0
UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImLCBXZWJH
UFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlcihjb25zdCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcihSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJiYp
ID0gZGVsZXRlOwpAQCAtOTMsNyArOTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwo
U3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPiBt
X2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAg
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpP
YmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlci5jcHAKaW5kZXggZTFjOTcyOWNlMWFkMDk1ODYzZjY1MDQzMzBmOWQ1MjE1ZTY0
NTkyYS4uOTdiODEyMzQwNzBkNjJmYThkMmMzMWQ4YzVmODE3YWQ2MjhmYzhmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTI5LDQ4ICsyOSw1OSBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNp
bmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LVJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6UmVtb3RlUmVuZGVy
UGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5j
b2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDog
bV9iYWNraW5nKHJlbmRlclBhc3NFbmNvZGVyKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmpl
Y3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9p
ZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6flJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9i
amVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpz
ZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVsaW5lKQogewotICAgIFVOVVNF
RF9QQVJBTShyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQaXBlbGlu
ZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcocmVu
ZGVyUGlwZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSk7CisgICAg
aWYgKCFjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9i
YWNraW5nLT5zZXRQaXBlbGluZSgqY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihXZWJHUFVJZGVudGlmaWVy
IGJ1ZmZlciwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0LCBQQUw6OldlYkdQ
VTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXpl
KQogewotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRleEZv
cm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUp
OworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVm
ZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKKyAg
ICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5n
LT5zZXRJbmRleEJ1ZmZlcigqY29udmVydGVkQnVmZmVyLCBpbmRleEZvcm1hdCwgb2Zmc2V0LCBz
aXplKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVy
KFBBTDo6V2ViR1BVOjpJbmRleDMyIHNsb3QsIFdlYkdQVUlkZW50aWZpZXIgYnVmZmVyLCBQQUw6
OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0
PiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzbG90KTsKLSAgICBVTlVTRURfUEFSQU0oYnVm
ZmVyKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7
CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZm
ZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOworICAg
IGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmct
PnNldFZlcnRleEJ1ZmZlcihzbG90LCAqY29udmVydGVkQnVmZmVyLCBvZmZzZXQsIHNpemUpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KFBBTDo6V2ViR1BVOjpTaXpl
MzIgdmVydGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwKICAgICBQ
QUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0VmVydGV4LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0
SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHZlcnRleENvdW50KTsKLSAgICBVTlVTRURf
UEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0VmVydGV4KTsKLSAg
ICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7CisgICAgbV9iYWNraW5nLT5kcmF3KHZlcnRl
eENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKFBBTDo6V2ViR1BVOjpT
aXplMzIgaW5kZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUzMiBpbnN0YW5jZUNvdW50LApAQCAt
NzgsMTA5ICs4OSwxMzAgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4
ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6OlcKICAgICBQQUw6OldlYkdQ
VTo6U2lnbmVkT2Zmc2V0MzIgYmFzZVZlcnRleCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZp
cnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQpOwotICAgIFVOVVNF
RF9QQVJBTShpbnN0YW5jZUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbmRleCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGJhc2VWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3Rh
bmNlKTsKKyAgICBtX2JhY2tpbmctPmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291
bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRp
cmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBV
TlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9m
ZnNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkSW5kaXJlY3RCdWZmZXIpOworICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZm
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+ZHJhd0luZGlyZWN0KCpjb252
ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5k
aXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RC
dWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJU
KGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVm
ZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPmRyYXdJbmRleGVkSW5kaXJl
Y3QoKmNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgz
MiBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNPZmZzZXRz
KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJpbmRHcm91
cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsKKyAgICBhdXRvIGNvbnZlcnRl
ZEJpbmRHcm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJpbmRHcm91cEZyb21CYWNraW5n
KGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CisgICAgaWYgKCFj
b252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+c2V0
QmluZEdyb3VwKGluZGV4LCAqY29udmVydGVkQmluZEdyb3VwLCBXVEZNb3ZlKGR5bmFtaWNPZmZz
ZXRzKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnB1c2hEZWJ1Z0dyb3Vw
KFN0cmluZyYmIGdyb3VwTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOwor
ICAgIG1fYmFja2luZy0+cHVzaERlYnVnR3JvdXAoV1RGTW92ZShncm91cExhYmVsKSk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnBvcERlYnVnR3JvdXAoKQogeworICAgIG1f
YmFja2luZy0+cG9wRGVidWdHcm91cCgpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIG1fYmFja2luZy0+aW5zZXJ0RGVidWdNYXJrZXIo
V1RGTW92ZShtYXJrZXJMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
OjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LAogICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsCiAgICAgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQogewotICAgIFVOVVNF
RF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRo
KTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0obWluRGVwdGgp
OwotICAgIFVOVVNFRF9QQVJBTShtYXhEZXB0aCk7CisgICAgbV9iYWNraW5nLT5zZXRWaWV3cG9y
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBtaW5EZXB0aCwgbWF4RGVwdGgpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdChQQUw6OldlYkdQVTo6SW50ZWdl
ckNvb3JkaW5hdGUgeCwgUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIHksCiAgICAgUEFM
OjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIHdpZHRoLCBQQUw6OldlYkdQVTo6SW50ZWdlckNv
b3JkaW5hdGUgaGVpZ2h0KQogewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFS
QU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0
KTsKKyAgICBtX2JhY2tpbmctPnNldFNjaXNzb3JSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbnN0YW50KFdlYkdQ
VTo6Q29sb3IgY29sb3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbG9yKTsKKyAgICBhdXRvIGNv
bnZlcnRlZENvbG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoY29sb3Ip
OworICAgIEFTU0VSVChjb252ZXJ0ZWRDb2xvcik7CisgICAgaWYgKCFjb252ZXJ0ZWRDb2xvcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5zZXRCbGVuZENvbnN0YW50KCpjb252
ZXJ0ZWRDb2xvcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFN0ZW5j
aWxSZWZlcmVuY2UoUEFMOjpXZWJHUFU6OlN0ZW5jaWxWYWx1ZSBzdGVuY2lsVmFsdWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0ZW5jaWxWYWx1ZSk7CisgICAgbV9iYWNraW5nLT5zZXRTdGVuY2ls
UmVmZXJlbmNlKHN0ZW5jaWxWYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OmJlZ2luT2NjbHVzaW9uUXVlcnkoUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQog
ewotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBtX2JhY2tpbmctPmJlZ2luT2Nj
bHVzaW9uUXVlcnkocXVlcnlJbmRleCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OmVuZE9jY2x1c2lvblF1ZXJ5KCkKIHsKKyAgICBtX2JhY2tpbmctPmVuZE9jY2x1c2lvblF1
ZXJ5KCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVT
dGF0aXN0aWNzUXVlcnkoV2ViR1BVSWRlbnRpZmllciBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNp
emUzMiBxdWVyeUluZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBB
U1NFUlQoY29udmVydGVkUXVlcnlTZXQpOworICAgIGlmICghY29udmVydGVkUXVlcnlTZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NR
dWVyeSgqY29udmVydGVkUXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCiB7CisgICAgbV9i
YWNraW5nLT5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8V2ViR1BVSWRlbnRpZmllcj4m
JiByZW5kZXJCdW5kbGVzKQogewotICAgIFVOVVNFRF9QQVJBTShyZW5kZXJCdW5kbGVzKTsKKyAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxl
Pj4gY29udmVydGVkQnVuZGxlczsKKyAgICBjb252ZXJ0ZWRCdW5kbGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkocmVuZGVyQnVuZGxlcy5zaXplKCkpOworICAgIGZvciAoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyIDogcmVuZGVyQnVuZGxlcykgeworICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1
bmRsZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKGlk
ZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoY29udmVydGVkQnVuZGxlKTsKKyAgICAgICAgaWYg
KCFjb252ZXJ0ZWRCdW5kbGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbnZlcnRl
ZEJ1bmRsZXMudW5jaGVja2VkQXBwZW5kKCpjb252ZXJ0ZWRCdW5kbGUpOworICAgIH0KKyAgICBt
X2JhY2tpbmctPmV4ZWN1dGVCdW5kbGVzKFdURk1vdmUoY29udmVydGVkQnVuZGxlcykpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjplbmRQYXNzKCkKIHsKKyAgICBtX2JhY2tp
bmctPmVuZFBhc3MoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0TGFi
ZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2Jh
Y2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggYjkzZjY4OWUzMjlm
ZDY1NjE4OTY1NDhhZDFhMTQ5OGMyMTEwOTkxYS4uZmI2ZDNkYjU5YTkzMjE0YWQ4ZDQwNGZkYWRj
NWRjNzFhOTNlYWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaApAQCAt
NDMsMjEgKzQzLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsK
IGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVy
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYg
cmVuZGVyUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyKHJlbmRlclBhc3NFbmNvZGVyLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKHJlbmRlclBhc3NFbmNvZGVy
LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAg
IH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYsIFdl
YkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpSZW5kZXJQYXNzRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyKGNvbnN0IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXIoUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImJikgPSBkZWxldGU7
CkBAIC0xMTAsNyArMTExLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYm
KTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+IG1fYmFja2luZzsK
LSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAm
IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcApp
bmRleCAzYTQwYTkwMzY0OTkxZWM2NGRkMzBiNDBkZGJlNzZiYmU5N2YxNzUyLi41YzFmY2NkMGY0
MzdmNTA3ZmIzMzc4NTExMDI4MGZlNjA2MGViMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBp
cGVsaW5lLmNwcApAQCAtMjgsMzAgKzI4LDM3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCIKICNpbmNsdWRlICJXZWJHUFVP
YmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJQaXBlbGluZTo6UmVtb3RlUmVuZGVyUGlwZWxpbmUo
UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlUmVuZGVyUGlwZWxpbmU6OlJlbW90ZVJlbmRlclBp
cGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhy
ZW5kZXJQaXBlbGluZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAg
ICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9i
YWNraW5nKTsKIH0KIAogUmVtb3RlUmVuZGVyUGlwZWxpbmU6On5SZW1vdGVSZW5kZXJQaXBlbGlu
ZSgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQz
Ml90IGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0byBiaW5k
R3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmdldEJpbmRHcm91cExheW91dChpbmRleCk7CisgICAg
YXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0
ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRp
Zmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVCaW5kR3JvdXBMYXlvdXQp
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBpcGVsaW5lOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJl
bCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFiZWwo
V1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlw
ZWxpbmUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyUGlwZWxpbmUuaAppbmRleCBmZGU4OGZjYWU2OTUxODA1OGMyNGY5ZDFlZDc3Mjk1MjFj
ZTk5OGMxLi5iYzZiOTY1NzVkY2NkM2JmOWMwNmMyODkyMWNmOTVkNjBjODY2NTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRl
clBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9i
amVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVSZW5kZXJQaXBlbGluZSBmaW5hbCA6IHB1
YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRl
clBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3Rl
UmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmUsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmUsIG9i
amVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xh
c3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBS
ZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQVTo6UmVu
ZGVyUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFw
JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShjb25zdCBS
ZW1vdGVSZW5kZXJQaXBlbGluZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBpcGVsaW5l
KFJlbW90ZVJlbmRlclBpcGVsaW5lJiYpID0gZGVsZXRlOwpAQCAtNjgsNyArNjksOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BV
OjpSZW5kZXJQaXBlbGluZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+
IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNh
bXBsZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVTYW1wbGVyLmNwcAppbmRleCAwYjI0NmM4YzU2MGE3NzJhYmFlZTgwNGM2MWQ1NTg4YTA3NjU2
ZDFiLi5hNzZiNjk0NWQ1NzgzZmYwMGM4OTc5NWVkNDIzYzUyYjAwYzA0YmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
U2FtcGxlci5jcHAKQEAgLTI5LDIzICsyOSwyOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2FtcGxlci5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlU2FtcGxlcjo6UmVtb3RlU2FtcGxlcihQ
QUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwKQorUmVtb3RlU2FtcGxlcjo6UmVtb3RlU2FtcGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYg
c2FtcGxlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IDogbV9iYWNraW5nKHNhbXBsZXIpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lz
dHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZp
ZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVNhbXBsZXI6On5SZW1vdGVTYW1wbGVyKCkKIHsK
KyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2
b2lkIFJlbW90ZVNhbXBsZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNF
RF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaAppbmRleCAwOGM5NzFl
MTA2OWExYTY2NzVkOWMzYjI4NWQxNmE2ZmU3MTdlMmM0Li5hYzkwMzhhNWI5Y2E4N2VjYmY1YmZl
NDFmODc0NjA0M2UwMDBjYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaApAQCAtNDAsMjEgKzQwLDIyIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhl
YXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlU2FtcGxlciBmaW5h
bCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxSZW1vdGVTYW1wbGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBs
ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVNhbXBsZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlU2FtcGxlcihzYW1wbGVyLCBvYmplY3RIZWFwKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZXIoc2FtcGxlciwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVTYW1wbGVyKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7
CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlU2FtcGxlcihQ
QUw6OldlYkdQVTo6U2FtcGxlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZVNh
bXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2Vi
R1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVTYW1wbGVy
KGNvbnN0IFJlbW90ZVNhbXBsZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVTYW1wbGVyKFJlbW90
ZVNhbXBsZXImJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlNhbXBsZXI+IG1f
YmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9i
amVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUu
Y3BwCmluZGV4IDk3ZWYwOTNkNzc5YWE3NzFkZWRmZWNlODFlNThlZjg0N2U4ZGM0NGQuLjQ1YWMw
ZDNmNzM2NWMxOWI1NDg4Y2MxZGQwOTRkMjJhMTQ3ZTAzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRl
ck1vZHVsZS5jcHAKQEAgLTI5LDI4ICsyOSw0NyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRp
b25JbmZvLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21waWxhdGlv
bk1lc3NhZ2UuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1v
ZHVsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlU2hhZGVyTW9kdWxlOjpSZW1v
dGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVTaGFkZXJNb2R1bGU6OlJlbW90
ZVNoYWRlck1vZHVsZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2lu
ZyhzaGFkZXJNb2R1bGUpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQog
ICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1f
YmFja2luZyk7CiB9CiAKIFJlbW90ZVNoYWRlck1vZHVsZTo6flJlbW90ZVNoYWRlck1vZHVsZSgp
CiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBSZW1vdGVTaGFkZXJNb2R1bGU6OmNvbXBpbGF0aW9uSW5mbyhXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkdQVTo6Q29tcGlsYXRpb25NZXNzYWdlPiYmKT4mJiBj
YWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIG1fYmFja2luZy0+
Y29tcGlsYXRpb25JbmZvKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUmVmPFBBTDo6
V2ViR1BVOjpDb21waWxhdGlvbkluZm8+JiYgY29tcGlsYXRpb25NZXNzYWdlKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byBjb252ZXJ0ZWRNZXNzYWdlcyA9IGNvbXBpbGF0aW9uTWVzc2FnZS0+bWVz
c2FnZXMoKS5tYXAoW10gKGNvbnN0IFJlZjxQQUw6OldlYkdQVTo6Q29tcGlsYXRpb25NZXNzYWdl
PiYgbWVzc2FnZSkgeworICAgICAgICAgICAgcmV0dXJuIFdlYkdQVTo6Q29tcGlsYXRpb25NZXNz
YWdlIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlLT5tZXNzYWdlKCksCisgICAgICAgICAgICAg
ICAgbWVzc2FnZS0+dHlwZSgpLAorICAgICAgICAgICAgICAgIG1lc3NhZ2UtPmxpbmVOdW0oKSwK
KyAgICAgICAgICAgICAgICBtZXNzYWdlLT5saW5lUG9zKCksCisgICAgICAgICAgICAgICAgbWVz
c2FnZS0+b2Zmc2V0KCksCisgICAgICAgICAgICAgICAgbWVzc2FnZS0+bGVuZ3RoKCksCisgICAg
ICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjb252ZXJ0
ZWRNZXNzYWdlcykpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZVNoYWRlck1vZHVsZTo6c2V0
TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBt
X2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaAppbmRleCA2YTEyMGMwYjUzODA5MWJhNzRk
ZmY0MTAzMGExZmM5NGQ5ZTNiOTQyLi5mOTdmMDE5NmJiMDY3ZWRiY2I5MjM1Y2RlYzEwNjRlYzM0
MTY3MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKQEAgLTQzLDIxICs0MywyMiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFw
OworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVNoYWRlck1vZHVsZSBm
aW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2hhZGVy
TW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAg
ICBzdGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpTaGFk
ZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2hh
ZGVyTW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVTaGFkZXJNb2R1bGUoc2hhZGVyTW9kdWxlLCBvYmplY3RSZWdpc3Ry
eSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZVNoYWRlck1vZHVsZSgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFw
OworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVNoYWRlck1v
ZHVsZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7Cisg
ICAgUmVtb3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVTaGFkZXJNb2R1bGUoY29uc3QgUmVtb3RlU2hhZGVyTW9kdWxlJikgPSBk
ZWxldGU7CiAgICAgUmVtb3RlU2hhZGVyTW9kdWxlKFJlbW90ZVNoYWRlck1vZHVsZSYmKSA9IGRl
bGV0ZTsKQEAgLTcxLDcgKzcyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiBtX2JhY2tpbmc7Ci0g
ICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBt
X29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCmluZGV4IGY0MTRkMmY5MjY2
YjViYzAwZTRiZjU2YTZhN2YxMzEzZTI0MjIwNDQuLmEwMWY0MmQwMDllZTUyNmQxODY4NzYwNTQ4
NmEwNDQyZmE1N2Q0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcApAQCAtMjgsMzUgKzI4LDU0IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVUZXh0dXJlVmll
dy5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmpl
Y3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5oPgorI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KKyNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6
VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3Rl
VGV4dHVyZTo6UmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KHRleHR1cmUpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwg
bV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
IHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2lu
Zyk7CiB9CiAKIFJlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKCkKIHsKKyAgICBtX29iamVj
dFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRl
eHR1cmU6OmNyZWF0ZVZpZXcoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OlRleHR1cmVWaWV3
RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZp
ZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3RGVzY3JpcHRv
cj4gY29udmVydGVkRGVzY3JpcHRvcjsKKyAgICBpZiAoZGVzY3JpcHRvcikgeworICAgICAgICBh
dXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
ZygqZGVzY3JpcHRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHREZXNjcmlwdG9yKTsKKyAgICAg
ICAgY29udmVydGVkRGVzY3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVzY3JpcHRvcik7CisgICAg
ICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gdGV4dHVyZVZpZXcg
PSBtX2JhY2tpbmctPmNyZWF0ZVZpZXcoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8g
cmVtb3RlVGV4dHVyZVZpZXcgPSBSZW1vdGVUZXh0dXJlVmlldzo6Y3JlYXRlKHRleHR1cmVWaWV3
LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2Jq
ZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlVGV4dHVyZVZpZXcpOwogfQogCiB2b2lkIFJlbW90ZVRl
eHR1cmU6OmRlc3Ryb3koKQogeworICAgIG1fYmFja2luZy0+ZGVzdHJveSgpOwogfQogCiB2b2lk
IFJlbW90ZVRleHR1cmU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9Q
QVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaAppbmRleCA4ZDM1ZWQyNDg5
ZjU3NjNhYWYyOGYwNmU0ZWY4NzRhNWUwNjJkMmU3Li5kZmVjZjlkYWY3MDkxZTg5ODBlOTNmZjBl
NmNhYzBlNjUwYWE4NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaApAQCAtNDAsMjIgKzQwLDIzIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7
CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBUZXh0dXJlVmlld0Rlc2NyaXB0b3I7CiB9
CiAKIGNsYXNzIFJlbW90ZVRleHR1cmUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZT4gY3JlYXRl
KFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0ZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OlRleHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmUo
dGV4dHVyZSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVUZXh0dXJlKHRleHR1cmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVy
KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZSgpOwogCiBwcml2YXRlOgot
ICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdp
c3RyeTsKIAotICAgIFJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVUZXh0dXJlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiwg
V2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50
aWZpZXIpOwogCiAgICAgUmVtb3RlVGV4dHVyZShjb25zdCBSZW1vdGVUZXh0dXJlJikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlVGV4dHVyZShSZW1vdGVUZXh0dXJlJiYpID0gZGVsZXRlOwpAQCAtNzEs
NyArNzIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAg
UmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2Jq
ZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2Jq
ZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAg
V2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKaW5kZXggMTFhNGE3ODYzNmFmYmUxYWJiZGIy
NjM4NWJjZjg4ODg1MTE1MmNmMy4uYmU4NjNkZjVmNjQyYjg0YzEwMDcyNGY4MDdhNjY4YjFmM2Fl
Y2M1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKQEAgLTI5LDIzICsyOSwyOCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIK
KyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJl
bW90ZVRleHR1cmVWaWV3OjpSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZp
ZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVU
ZXh0dXJlVmlldzo6UmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0
ZXh0dXJlVmlldywgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIDogbV9iYWNraW5nKHRleHR1cmVWaWV3KQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmpl
Y3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9p
ZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVUZXh0dXJlVmlldzo6flJlbW90ZVRl
eHR1cmVWaWV3KCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHR1cmVWaWV3OjpzZXRMYWJlbChTdHJpbmcmJiBs
YWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFi
ZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVy
ZVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
VGV4dHVyZVZpZXcuaAppbmRleCAwMDA1ZmNhZGJlNDc3MThkZDlkMDlhZDQzOTQ5NjFkNzM1MGRk
ZDJmLi40Njg3YzNiODMzOTlmNDM2NjRkOTIxMmZmM2E4Nzg0NDM5Y2JmNmM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVUZXh0dXJlVmlldy5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lz
dHJ5OwogfQogCiBjbGFzcyBSZW1vdGVUZXh0dXJlVmlldyBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0
cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0
dXJlVmlldz4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1
cmVWaWV3PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldywgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZpZXcodGV4dHVyZVZpZXcsIG9iamVj
dEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZpZXco
dGV4dHVyZVZpZXcsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZVZpZXcoKTsKIAogcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0
cnk7CiAKLSAgICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6
VGV4dHVyZVZpZXcmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFw
JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVUZXh0dXJlVmlldyhjb25zdCBSZW1v
dGVUZXh0dXJlVmlldyYpID0gZGVsZXRlOwogICAgIFJlbW90ZVRleHR1cmVWaWV3KFJlbW90ZVRl
eHR1cmVWaWV3JiYpID0gZGVsZXRlOwpAQCAtNjYsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmll
dz4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsK
KyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFw
LmNwcAppbmRleCAwOTEyMjE5NGVjYzdlZjY5MGYwNjI3Yzg4YWQyOTRlNTM5M2E3MzM1Li5kMGEw
ZWMzMDk0MjgwNTI1NDlkMzIxMjFkODQ5ZWY0Yzg5ZTBmNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0
SGVhcC5jcHAKQEAgLTI4LDI4ICsyOCwyOCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KLSNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUFkYXB0ZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVCdWZmZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1h
bmRCdWZmZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRF
bmNvZGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFz
c0VuY29kZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQ
aXBlbGluZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+
Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4K
LSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+Ci0j
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldC5oPgotI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVTYW1wbGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVTaGFkZXJNb2R1bGUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVRleHR1cmUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVW
aWV3Lmg+CisjaW5jbHVkZSAiUmVtb3RlQWRhcHRlci5oIgorI2luY2x1ZGUgIlJlbW90ZUJpbmRH
cm91cC5oIgorI2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91cExheW91dC5oIgorI2luY2x1ZGUgIlJl
bW90ZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRl
ICJSZW1vdGVDb21tYW5kRW5jb2Rlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQYXNzRW5j
b2Rlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGluZS5oIgorI2luY2x1ZGUgIlJl
bW90ZURldmljZS5oIgorI2luY2x1ZGUgIlJlbW90ZUV4dGVybmFsVGV4dHVyZS5oIgorI2luY2x1
ZGUgIlJlbW90ZUdQVS5oIgorI2luY2x1ZGUgIlJlbW90ZVBpcGVsaW5lTGF5b3V0LmgiCisjaW5j
bHVkZSAiUmVtb3RlUXVlcnlTZXQuaCIKKyNpbmNsdWRlICJSZW1vdGVRdWV1ZS5oIgorI2luY2x1
ZGUgIlJlbW90ZVJlbmRlckJ1bmRsZS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oIgorI2luY2x1ZGUg
IlJlbW90ZVJlbmRlclBpcGVsaW5lLmgiCisjaW5jbHVkZSAiUmVtb3RlU2FtcGxlci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVNoYWRlck1vZHVsZS5oIgorI2luY2x1ZGUgIlJlbW90ZVRleHR1cmUuaCIK
KyNpbmNsdWRlICJSZW1vdGVUZXh0dXJlVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewogCkBAIC02MSwxODAgKzYxLDI2OCBAQCBPYmplY3RIZWFwOjp+T2JqZWN0SGVhcCgpCiB7
CiB9CiAKLVBBTDo6V2ViR1BVOjpBZGFwdGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0QWRhcHRlckZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6
YWRkT2JqZWN0KFJlbW90ZUFkYXB0ZXImIGFkYXB0ZXIpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpBZGFw
dGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6QWRhcHRlcj4+KGl0ZXJhdG9yLT52YWx1ZSku
cHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZhZGFwdGVyLCBhZGFwdGVy
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1Q
QUw6OldlYkdQVTo6QmluZEdyb3VwKiBPYmplY3RIZWFwOjpjb252ZXJ0QmluZEdyb3VwRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoUmVtb3RlQmluZEdyb3VwJiBiaW5kR3JvdXApCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpCaW5k
R3JvdXA+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXA+PihpdGVyYXRvci0+dmFs
dWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmYmluZEdyb3VwLCBi
aW5kR3JvdXApOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
CiB9CiAKLVBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIE9iamVjdEhlYXA6OmNvbnZlcnRC
aW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2
b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91
cExheW91dCkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52
YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8
UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7Cisg
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZiaW5kR3JvdXBMYXlvdXQsIGJpbmRHcm91
cExheW91dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KIAotUEFMOjpXZWJHUFU6OkJ1ZmZlciogT2JqZWN0SGVhcDo6Y29udmVydEJ1ZmZlckZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRk
T2JqZWN0KFJlbW90ZUJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29i
amVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVu
ZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6QnVmZmVyPj4o
aXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0
ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmJ1ZmZlciwgYnVmZmVyKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlciogT2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChSZW1vdGVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQogewotICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+
PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZCgmY29tbWFuZEJ1ZmZlciwgY29tbWFuZEJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
KiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVDb21t
YW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2Jq
ZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5k
KCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5j
b2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPj4oaXRlcmF0b3It
PnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmNvbW1hbmRF
bmNvZGVyLCBjb21tYW5kRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciogT2Jq
ZWN0SGVhcDo6Y29udmVydENvbXB1dGVQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyKQogewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNv
ZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoJmNvbXB1dGVQYXNzRW5jb2RlciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6
Q29tcHV0ZVBpcGVsaW5lKiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCiB7Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRv
ciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpDb21wdXRl
UGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZCgmY29tcHV0ZVBpcGVsaW5lLCBjb21wdXRlUGlwZWxpbmUpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpE
ZXZpY2UqIE9iamVjdEhlYXA6OmNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVEZXZpY2Um
IGRldmljZSkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJH
UFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBt
X29iamVjdHMuYWRkKCZkZXZpY2UsIGRldmljZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSog
T2JqZWN0SGVhcDo6Y29udmVydEV4dGVybmFsVGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUV4dGVy
bmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29i
amVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVu
ZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxU
ZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPj4oaXRlcmF0
b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmV4dGVy
bmFsVGV4dHVyZSwgZXh0ZXJuYWxUZXh0dXJlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6R1BVKiBPYmplY3RIZWFwOjpj
b252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBP
YmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlR1BVJiBncHUpCiB7Ci0gICAgYXV0byBpdGVyYXRv
ciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29i
amVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpH
UFU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpHUFU+PihpdGVyYXRvci0+dmFsdWUpLnB0cigp
OworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmZ3B1LCBncHUpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpQ
aXBlbGluZUxheW91dCogT2JqZWN0SGVhcDo6Y29udmVydFBpcGVsaW5lTGF5b3V0RnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmpl
Y3QoUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0KQogewotICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQ
VTo6UGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91
dD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKCZwaXBlbGluZUxheW91dCwgcGlwZWxpbmVMYXlvdXQpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpRdWVyeVNldCog
T2JqZWN0SGVhcDo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUXVlcnlTZXQmIHF1
ZXJ5U2V0KQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+PihpdGVyYXRvci0+dmFsdWUpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2Vi
R1BVOjpRdWVyeVNldD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMuYWRkKCZxdWVyeVNldCwgcXVlcnlTZXQpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpRdWV1ZSogT2Jq
ZWN0SGVhcDo6Y29udmVydFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUXVldWUmIHF1ZXVlKQogewot
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxQQUw6OldlYkdQVTo6UXVldWU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpRdWV1ZT4+KGl0
ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZx
dWV1ZSwgcXVldWUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyKiBPYmplY3RIZWFwOjpj
b252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2Jq
ZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5k
KCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5k
bGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRk
KCZyZW5kZXJCdW5kbGVFbmNvZGVyLCByZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlKiBPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVt
b3RlUmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJC
dW5kbGU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+
dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcmVuZGVyQnVu
ZGxlLCByZW5kZXJCdW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciogT2JqZWN0SGVh
cDo6Y29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXImIHJlbmRlclBhc3NFbmNvZGVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0Vu
Y29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZyZW5k
ZXJQYXNzRW5jb2RlciwgcmVuZGVyUGFzc0VuY29kZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZSogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUmVu
ZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29i
amVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVu
ZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGlw
ZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4+KGl0ZXJhdG9y
LT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZyZW5kZXJQ
aXBlbGluZSwgcmVuZGVyUGlwZWxpbmUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpTYW1wbGVyKiBPYmplY3RIZWFwOjpj
b252ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3Zv
aWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVNhbXBsZXImIHNhbXBsZXIpCiB7Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVy
YXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBB
TDo6V2ViR1BVOjpTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6U2FtcGxlcj4+KGl0
ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZz
YW1wbGVyLCBzYW1wbGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBPYmplY3RIZWFwOjpjb252
ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
dm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlU2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1
bGUpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwot
ICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2Vi
R1BVOjpTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVz
dWx0ID0gbV9vYmplY3RzLmFkZCgmc2hhZGVyTW9kdWxlLCBzaGFkZXJNb2R1bGUpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BV
OjpUZXh0dXJlKiBPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVRl
eHR1cmUmIHRleHR1cmUpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlk
ZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlPj4oaXRlcmF0b3ItPnZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQ
QUw6OldlYkdQVTo6VGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKCZ0ZXh0dXJlLCB0ZXh0dXJlKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6VGV4dHVy
ZVZpZXcqIE9iamVjdEhlYXA6OmNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVRl
eHR1cmVWaWV3JiB0ZXh0dXJlVmlldykKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3Pj4o
aXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0
ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFsdWUpLnB0
cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmdGV4dHVyZVZpZXcsIHRleHR1
cmVWaWV3KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwor
fQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVBZGFwdGVyJiBhZGFwdGVy
KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYWRhcHRlcik7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVt
b3ZlT2JqZWN0KFJlbW90ZUJpbmRHcm91cCYgYmluZEdyb3VwKQoreworICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLnJlbW92ZSgmYmluZEdyb3VwKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMucmVtb3ZlKCZiaW5kR3JvdXBMYXlvdXQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVCdWZm
ZXImIGJ1ZmZlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmJ1ZmZl
cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0
SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIpCit7
CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21tYW5kQnVmZmVyKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpy
ZW1vdmVPYmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyKQoreworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tbWFuZEVuY29kZXIpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbXB1dGVQYXNzRW5jb2Rlcik7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVh
cDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lKQor
eworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tcHV0ZVBpcGVsaW5lKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFw
OjpyZW1vdmVPYmplY3QoUmVtb3RlRGV2aWNlJiBkZXZpY2UpCit7CisgICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMucmVtb3ZlKCZkZXZpY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVFeHRlcm5h
bFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5yZW1vdmUoJmV4dGVybmFsVGV4dHVyZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUdQVSYgZ3B1
KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmZ3B1KTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVP
YmplY3QoUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0KQoreworICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcGlwZWxpbmVMYXlvdXQpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVj
dChSZW1vdGVRdWVyeVNldCYgcXVlcnlTZXQpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMucmVtb3ZlKCZxdWVyeVNldCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXVlJiBxdWV1ZSkK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnF1ZXVlKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVP
YmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlcikKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlckJ1bmRsZUVuY29kZXIp
OworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhl
YXA6OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSkKK3sKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlckJ1bmRsZSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3Zl
T2JqZWN0KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlcikKK3sKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlclBhc3NFbmNvZGVyKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpy
ZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQoreworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcmVuZGVyUGlwZWxpbmUpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVTYW1wbGVyJiBzYW1wbGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLnJlbW92ZSgmc2FtcGxlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVs
ZSYgc2hhZGVyTW9kdWxlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgm
c2hhZGVyTW9kdWxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwor
dm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnRleHR1cmUpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9i
amVjdChSZW1vdGVUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcpCit7CisgICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMucmVtb3ZlKCZ0ZXh0dXJlVmlldyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVj
dEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
T2JqZWN0SGVhcC5oCmluZGV4IDlkOGZhMTA0NDczNTU1M2Y5NDU2ZTE1N2MzZmM1OTExOWYzNGY4
ZWMuLmExNmNkMjY2OTgxMzc3Y2E5MThlNTEwYjY4ZmM4NWYzOGU0MTlkOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVh
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
T2JqZWN0SGVhcC5oCkBAIC0yNyw3NCArMjcsMTIwIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKLSNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCi0jaW5j
bHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUmVtb3RlQWRhcHRlcjsKK2NsYXNz
IFJlbW90ZUJpbmRHcm91cDsKK2NsYXNzIFJlbW90ZUJpbmRHcm91cExheW91dDsKK2NsYXNzIFJl
bW90ZUJ1ZmZlcjsKK2NsYXNzIFJlbW90ZUNvbW1hbmRCdWZmZXI7CitjbGFzcyBSZW1vdGVDb21t
YW5kRW5jb2RlcjsKK2NsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcjsKK2NsYXNzIFJlbW90
ZUNvbXB1dGVQaXBlbGluZTsKK2NsYXNzIFJlbW90ZURldmljZTsKK2NsYXNzIFJlbW90ZUV4dGVy
bmFsVGV4dHVyZTsKK2NsYXNzIFJlbW90ZUdQVTsKK2NsYXNzIFJlbW90ZVBpcGVsaW5lTGF5b3V0
OworY2xhc3MgUmVtb3RlUXVlcnlTZXQ7CitjbGFzcyBSZW1vdGVRdWV1ZTsKK2NsYXNzIFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXI7CitjbGFzcyBSZW1vdGVSZW5kZXJCdW5kbGU7CitjbGFzcyBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlcjsKK2NsYXNzIFJlbW90ZVJlbmRlclBpcGVsaW5lOworY2xh
c3MgUmVtb3RlU2FtcGxlcjsKK2NsYXNzIFJlbW90ZVNoYWRlck1vZHVsZTsKK2NsYXNzIFJlbW90
ZVRleHR1cmU7CitjbGFzcyBSZW1vdGVUZXh0dXJlVmlldzsKK30KIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAotY2xhc3MgT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBXZWJHUFU6OkNv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQgeworY2xhc3MgT2JqZWN0SGVhcCBmaW5hbCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxPYmplY3RIZWFwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxP
YmplY3RIZWFwPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
T2JqZWN0SGVhcCgpKTsKLSAgICB9Ci0KKyAgICBPYmplY3RIZWFwKCk7CiAgICAgfk9iamVjdEhl
YXAoKTsKIAotcHJpdmF0ZToKLSAgICBPYmplY3RIZWFwKCk7CisgICAgdm9pZCBhZGRPYmplY3Qo
UmVtb3RlQWRhcHRlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91cCYpOwor
ICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91cExheW91dCYpOworICAgIHZvaWQgYWRk
T2JqZWN0KFJlbW90ZUJ1ZmZlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUNvbW1hbmRC
dWZmZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21tYW5kRW5jb2RlciYpOworICAg
IHZvaWQgYWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYpOworICAgIHZvaWQgYWRk
T2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90
ZURldmljZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUV4dGVybmFsVGV4dHVyZSYpOwor
ICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUdQVSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90
ZVBpcGVsaW5lTGF5b3V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUXVlcnlTZXQmKTsK
KyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVRdWV1ZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5k
ZXJCdW5kbGUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYp
OworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5lJik7CisgICAgdm9pZCBh
ZGRPYmplY3QoUmVtb3RlU2FtcGxlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVNoYWRl
ck1vZHVsZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVRleHR1cmUmKTsKKyAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYpOwogCi0gICAgUEFMOjpXZWJHUFU6OkFkYXB0
ZXIqIGNvbnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCogY29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQq
IGNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5h
bDsKLSAgICBQQUw6OldlYkdQVTo6QnVmZmVyKiBjb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIGNv
bnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6Q29tcHV0
ZVBhc3NFbmNvZGVyKiBjb252ZXJ0Q29tcHV0ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogY29u
dmVydENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwot
ICAgIFBBTDo6V2ViR1BVOjpEZXZpY2UqIGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlKiBjb252
ZXJ0RXh0ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgUEFMOjpXZWJHUFU6OkdQVSogY29udmVydEdQVUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogY29udmVydFBpcGVs
aW5lTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpX
ZWJHUFU6OlF1ZXJ5U2V0KiBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UXVldWUqIGNvbnZlcnRRdWV1ZUZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5k
bGVFbmNvZGVyKiBjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUqIGNvbnZlcnRS
ZW5kZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6
OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIGNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQ
aXBlbGluZSogY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlNhbXBsZXIqIGNvbnZlcnRTYW1wbGVyRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlNoYWRlck1v
ZHVsZSogY29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZp
bmFsOwotICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlKiBjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyog
Y29udmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Cisg
ICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQWRhcHRlciYpOworICAgIHZvaWQgcmVtb3ZlT2Jq
ZWN0KFJlbW90ZUJpbmRHcm91cCYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUJpbmRH
cm91cExheW91dCYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUJ1ZmZlciYpOworICAg
IHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRCdWZmZXImKTsKKyAgICB2b2lkIHJlbW92
ZU9iamVjdChSZW1vdGVDb21tYW5kRW5jb2RlciYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlciYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUNv
bXB1dGVQaXBlbGluZSYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZURldmljZSYpOwor
ICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUV4dGVybmFsVGV4dHVyZSYpOworICAgIHZvaWQg
cmVtb3ZlT2JqZWN0KFJlbW90ZUdQVSYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVBp
cGVsaW5lTGF5b3V0Jik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUXVlcnlTZXQmKTsK
KyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVRdWV1ZSYpOworICAgIHZvaWQgcmVtb3ZlT2Jq
ZWN0KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChS
ZW1vdGVSZW5kZXJCdW5kbGUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlciYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5l
Jik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlU2FtcGxlciYpOworICAgIHZvaWQgcmVt
b3ZlT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJl
bW90ZVRleHR1cmUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYp
OwogCitwcml2YXRlOgogICAgIHVzaW5nIE9iamVjdCA9IHN0ZDo6dmFyaWFudDwKLSAgICAgICAg
UmVmPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5k
R3JvdXA+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4sCi0gICAg
ICAgIFJlZjxQQUw6OldlYkdQVTo6QnVmZmVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpD
b21tYW5kQnVmZmVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4s
Ci0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiwKLSAgICAgICAg
UmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+LAotICAgICAgICBSZWY8UEFMOjpXZWJH
UFU6OkRldmljZT4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiwK
LSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpHUFU+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6
OlBpcGVsaW5lTGF5b3V0PiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4sCi0g
ICAgICAgIFJlZjxQQUw6OldlYkdQVTo6UXVldWU+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZUVuY29kZXI+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1
bmRsZT4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+LAotICAg
ICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiwKLSAgICAgICAgUmVmPFBBTDo6
V2ViR1BVOjpTYW1wbGVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+
LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmU+LAotICAgICAgICBSZWY8UEFMOjpX
ZWJHUFU6OlRleHR1cmVWaWV3PgorICAgICAgICBzdGQ6Om1vbm9zdGF0ZSwKKyAgICAgICAgUmVm
PFJlbW90ZUFkYXB0ZXI+LAorICAgICAgICBSZWY8UmVtb3RlQmluZEdyb3VwPiwKKyAgICAgICAg
UmVmPFJlbW90ZUJpbmRHcm91cExheW91dD4sCisgICAgICAgIFJlZjxSZW1vdGVCdWZmZXI+LAor
ICAgICAgICBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4sCisgICAgICAgIFJlZjxSZW1vdGVDb21t
YW5kRW5jb2Rlcj4sCisgICAgICAgIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+LAorICAg
ICAgICBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPiwKKyAgICAgICAgUmVmPFJlbW90ZURldmlj
ZT4sCisgICAgICAgIFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+LAorICAgICAgICBSZWY8UmVt
b3RlR1BVPiwKKyAgICAgICAgUmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0PiwKKyAgICAgICAgUmVm
PFJlbW90ZVF1ZXJ5U2V0PiwKKyAgICAgICAgUmVmPFJlbW90ZVF1ZXVlPiwKKyAgICAgICAgUmVm
PFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+LAorICAgICAgICBSZWY8UmVtb3RlUmVuZGVyQnVu
ZGxlPiwKKyAgICAgICAgUmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyPiwKKyAgICAgICAgUmVm
PFJlbW90ZVJlbmRlclBpcGVsaW5lPiwKKyAgICAgICAgUmVmPFJlbW90ZVNhbXBsZXI+LAorICAg
ICAgICBSZWY8UmVtb3RlU2hhZGVyTW9kdWxlPiwKKyAgICAgICAgUmVmPFJlbW90ZVRleHR1cmU+
LAorICAgICAgICBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+CiAgICAgPjsKLSAgICBIYXNoTWFwPFdl
YkdQVUlkZW50aWZpZXIsIE9iamVjdD4gbV9vYmplY3RzOworICAgIEhhc2hNYXA8dm9pZCosIE9i
amVjdD4gbV9vYmplY3RzOworCisgICAgT2JqZWN0UmVnaXN0cnkgbV9vYmplY3RSZWdpc3RyeTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0
UmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMjdhMWE1ZmJlNGRlNDBiYmJlMmQ1NjVlZDBkYzMz
NTdmZTA1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDM4MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RS
ZWdpc3RyeS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUFkYXB0ZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRH
cm91cC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5
b3V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIuaD4KKyNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXIuaD4KKyNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+CisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaD4KKyNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oPgorI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+CisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVUXVldWUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJl
bmRlckJ1bmRsZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVy
QnVuZGxlRW5jb2Rlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJl
bmRlclBpcGVsaW5lLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1w
bGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGUu
aD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmUuaD4KKyNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CisKK09iamVjdFJlZ2lzdHJ5OjpPYmplY3RSZWdpc3RyeSgpCit7
Cit9CisKK09iamVjdFJlZ2lzdHJ5Ojp+T2JqZWN0UmVnaXN0cnkoKQoreworfQorCit2b2lkIE9i
amVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6QWRhcHRlciYgYWRhcHRlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgYWRhcHRlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdy
b3VwKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBiaW5k
R3JvdXApOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9
CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91dCkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYmluZEdyb3VwTGF5
b3V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQor
Cit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBt
X29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZm
ZXImIGNvbW1hbmRCdWZmZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlk
ZW50aWZpZXIsIGNvbW1hbmRCdWZmZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29t
bWFuZEVuY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZp
ZXIsIGNvbW1hbmRFbmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21w
dXRlUGFzc0VuY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIGNvbXB1dGVQYXNzRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYg
Y29tcHV0ZVBpcGVsaW5lKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVu
dGlmaWVyLCBjb21wdXRlUGlwZWxpbmUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmljZSkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgZGV2aWNlKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9i
amVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGV4dGVybmFsVGV4dHVyZSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmpl
Y3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OkdQVSYgZ3B1KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVu
dGlmaWVyLCBncHUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHBpcGVsaW5l
TGF5b3V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwor
fQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0KQoreworICAgIGF1dG8gcmVz
dWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBxdWVyeVNldCk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3Ry
eTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlF1
ZXVlJiBxdWV1ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmll
ciwgcXVldWUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVF
bmNvZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBy
ZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiByZW5kZXJCdW5k
bGUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHJlbmRl
ckJ1bmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
K30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2Rl
cikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcmVuZGVy
UGFzc0VuY29kZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHJlbmRlclBp
cGVsaW5lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwor
fQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlcikKK3sKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgc2FtcGxlcik7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlNoYWRl
ck1vZHVsZSYgc2hhZGVyTW9kdWxlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChpZGVudGlmaWVyLCBzaGFkZXJNb2R1bGUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0ZXh0dXJl
KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCB0ZXh0dXJl
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2
b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQoreworICAgIGF1dG8gcmVz
dWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCB0ZXh0dXJlVmlldyk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdp
c3RyeTo6cmVtb3ZlT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK1BBTDo6V2ViR1BVOjpBZGFwdGVyKiBPYmplY3RS
ZWdpc3RyeTo6Y29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIp
OworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRhcHRlcj4+KGl0
ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3Rk
OjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRhcHRlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpCaW5kR3JvdXAqIE9iamVjdFJl
Z2lzdHJ5Ojpjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91cD4+
KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAm
c3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPj4o
aXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91
dCogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6QmluZEdyb3VwTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQor
CitQQUw6OldlYkdQVTo6QnVmZmVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEJ1ZmZlckZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2Jq
ZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6
V2ViR1BVOjpDb21tYW5kQnVmZmVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbW1hbmRCdWZm
ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBp
dGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9
PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1
ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciogT2JqZWN0UmVnaXN0
cnk6OmNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5j
b2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFu
ZEVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NFbmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbXB1dGVQYXNzRW5jb2Rl
ckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFs
dWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUqIE9i
amVjdFJlZ2lzdHJ5Ojpjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OkNvbXB1dGVQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFM
OjpXZWJHUFU6OkRldmljZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnREZXZpY2VGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6RGV2aWNlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQ
VTo6RXh0ZXJuYWxUZXh0dXJlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEV4dGVybmFsVGV4dHVy
ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52
YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpHUFUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252
ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0
b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkdQVT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKwor
UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFBpcGVs
aW5lTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0Pj4oaXRlcmF0b3It
PnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dD4+KGl0ZXJh
dG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpRdWVyeVNldCogT2JqZWN0UmVn
aXN0cnk6OmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4+KGl0
ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3Rk
OjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+PihpdGVy
YXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6UXVldWUqIE9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0UXVldWVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
Cit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAg
IGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVldWU+PihpdGVyYXRvci0+
dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXVlPj4oaXRlcmF0b3ItPnZhbHVl
KS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIqIE9iamVjdFJl
Z2lzdHJ5Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpS
ZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30K
KworUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5k
ZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
YXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVy
YXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4oaXRlcmF0b3ItPnZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+
dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIE9iamVj
dFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5k
KGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
UmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpX
ZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKwor
UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFJlbmRl
clBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPj4oaXRlcmF0b3It
PnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4+KGl0ZXJh
dG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpTYW1wbGVyKiBPYmplY3RSZWdp
c3RyeTo6Y29udmVydFNhbXBsZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwor
ICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpn
ZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4+KGl0ZXJhdG9y
LT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUqIE9iamVjdFJl
Z2lzdHJ5Ojpjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlm
aWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlNoYWRlck1v
ZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2hhZGVy
TW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OlRleHR1
cmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpU
ZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpUZXh0
dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OlRleHR1cmVW
aWV3KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJH
UFU6OlRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2Vi
R1BVOjpUZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdDo6V2ViR1BVCisKKyNlbmRpZiAvLyBIQVZFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVP
YmplY3RSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVPYmplY3RSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMzc3ODU0N2EzYTRiYTM1NWE3
NTIzZDJlY2Q2MjA2NTM3ZTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmgKQEAgLTAsMCAr
MSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNs
dWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBQQUw6
OldlYkdQVSB7CitjbGFzcyBBZGFwdGVyOworY2xhc3MgQmluZEdyb3VwOworY2xhc3MgQmluZEdy
b3VwTGF5b3V0OworY2xhc3MgQnVmZmVyOworY2xhc3MgQ29tbWFuZEJ1ZmZlcjsKK2NsYXNzIENv
bW1hbmRFbmNvZGVyOworY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOworY2xhc3MgQ29tcHV0ZVBp
cGVsaW5lOworY2xhc3MgRGV2aWNlOworY2xhc3MgRXh0ZXJuYWxUZXh0dXJlOworY2xhc3MgR1BV
OworY2xhc3MgUGlwZWxpbmVMYXlvdXQ7CitjbGFzcyBRdWVyeVNldDsKK2NsYXNzIFF1ZXVlOwor
Y2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKK2NsYXNzIFJlbmRlckJ1bmRsZTsKK2NsYXNzIFJl
bmRlclBhc3NFbmNvZGVyOworY2xhc3MgUmVuZGVyUGlwZWxpbmU7CitjbGFzcyBTYW1wbGVyOwor
Y2xhc3MgU2hhZGVyTW9kdWxlOworY2xhc3MgVGV4dHVyZTsKK2NsYXNzIFRleHR1cmVWaWV3Owor
fQorCituYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworCitjbGFzcyBPYmplY3RSZWdpc3RyeSBm
aW5hbCA6IHB1YmxpYyBXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQgeworcHVibGlj
OgorICAgIE9iamVjdFJlZ2lzdHJ5KCk7CisgICAgfk9iamVjdFJlZ2lzdHJ5KCk7CisKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QWRhcHRlciYpOwor
ICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCaW5kR3Jv
dXAmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
QmluZEdyb3VwTGF5b3V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwg
UEFMOjpXZWJHUFU6OkJ1ZmZlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJik7CisgICAgdm9pZCBh
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rl
ciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpD
b21wdXRlUGlwZWxpbmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6RGV2aWNlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciwgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpHUFUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmKTsKKyAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmKTsKKyAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVldWUmKTsK
KyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVy
QnVuZGxlRW5jb2RlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBB
TDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImKTsKKyAgICB2b2lkIGFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmKTsKKyAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2FtcGxlciYp
OworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpTaGFk
ZXJNb2R1bGUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6VGV4dHVyZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBB
TDo6V2ViR1BVOjpUZXh0dXJlVmlldyYpOworCisgICAgdm9pZCByZW1vdmVPYmplY3QoV2ViR1BV
SWRlbnRpZmllcik7CisKKyAgICBQQUw6OldlYkdQVTo6QWRhcHRlciogY29udmVydEFkYXB0ZXJG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwKiBjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCogY29udmVydEJpbmRHcm91cExh
eW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BV
OjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5h
bDsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogY29udmVydENvbW1hbmRCdWZmZXJG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29t
bWFuZEVuY29kZXIqIGNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIGNvbnZl
cnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsK
KyAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBpcGVsaW5l
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkRl
dmljZSogY29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwor
ICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRlcm5hbFRleHR1cmVG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6R1BV
KiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFM
OjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UXVlcnlTZXQqIGNv
bnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBB
TDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIqIGNvbnZlcnRS
ZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Cisg
ICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogY29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNz
RW5jb2RlciogY29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBjb252ZXJ0UmVu
ZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6
OldlYkdQVTo6U2FtcGxlciogY29udmVydFNhbXBsZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBjb252ZXJ0U2hhZGVy
TW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJH
UFU6OlRleHR1cmUqIGNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
ZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3KiBjb252ZXJ0VGV4dHVyZVZpZXdG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB1c2lu
ZyBPYmplY3QgPSBzdGQ6OnZhcmlhbnQ8CisgICAgICAgIHN0ZDo6bW9ub3N0YXRlLAorICAgICAg
ICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiwKKyAgICAgICAg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiwKKyAgICAgICAg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0PiwKKyAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QnVmZmVyPiwKKyAgICAg
ICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4sCisg
ICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
PiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBh
c3NFbmNvZGVyPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
Q29tcHV0ZVBpcGVsaW5lPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6RGV2aWNlPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6RXh0ZXJuYWxUZXh0dXJlPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6R1BVPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6UGlwZWxpbmVMYXlvdXQ+LAorICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6
V2ViR1BVOjpRdWVyeVNldD4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpX
ZWJHUFU6OlF1ZXVlPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiwKKyAgICAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+LAorICAgICAgICBzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTYW1wbGVyPiwKKyAgICAgICAgc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiwKKyAgICAgICAgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZT4sCisgICAgICAgIHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PgorICAgID47CisgICAgSGFz
aE1hcDxXZWJHUFVJZGVudGlmaWVyLCBPYmplY3Q+IG1fb2JqZWN0czsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdDo6V2ViR1BVCisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQuaAppbmRleCA2MDA1Yzg4ZjgxYWUyOWFlMWQwMjEzZDRiYTkz
YjU0ZDFlNWFjNmRjLi5hOTQ2OGY1MjdjNGMxZDExMzJhMGQ4NDNlMmQ0ZmYxMjZiYWZiNmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgKQEAgLTE4OSw3ICsxODksNyBAQCBzdHJ1Y3QgVmVy
dGV4QXR0cmlidXRlOwogc3RydWN0IFZlcnRleEJ1ZmZlckxheW91dDsKIHN0cnVjdCBWZXJ0ZXhT
dGF0ZTsKIAotY2xhc3MgQ29udmVydEZyb21CYWNraW5nQ29udGV4dCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ+IHsKK2NsYXNzIENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCmluZGV4IGIyMWVhMWJiMjNkM2Qz
MTBiODQ4ZmI0ZWUyMWQ0MDhhZWZiYTJhOGIuLjVjODFiNGRjNDJhZGY5NDlkNDUyYWU1OTY4NTY2
MDI3Mzc1YjhhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCiBzdHJ1Y3QgU2hhZGVyTW9kdWxlRGVzY3JpcHRvciA6
IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgU3RyaW5nIGNvZGU7Ci0gICAgLy8g
SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gc291cmNlTWFwOworICAgIC8vIEZJWE1FOiBIb29r
IHVwIHRoZSBzb3VyY2VNYXAuCiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDhlM2Fk
MTljOWY1N2E1ZGY0ODYwN2IwZjNmNjMzNDY5MDAyNTIwYjcuLjY0MWRmMTY0ZjllM2M4NWUzZTQ3
ODcxMThhMzU5M2Y2Nzg3NTFiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTQsNiArNTQsNyBAQCBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwCiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVPYmplY3RIZWFwLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0
ZW5lclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MTdjZTQwMGE5ZTA5YWQ4OTI1MDE0YTIwMGFjYjljMzM3MmEyNjAwNy4uNWIxODBlMTEyYmZiYzE5
MTcyMTY5MzI2NjFjZDlmMmVmZDFhYmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTE2LDEzICsyOTE2LDEzIEBACiAJCTFDOEUy
QTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yVUlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJJbnNwZWN0b3JVSU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5
OEMwMUQyNzQ0NkEwMzAwMkNDQjc4IC8qIFJlbW90ZUdQVS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzk4QzAxRTI3
NDQ2QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOThDMDFFMjc0
NDZBMDMwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4
QzAxRjI3NDQ2QTAzMDAyQ0NCNzggLyogUmVtb3RlUXVlcnlTZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlUXVlcnlTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjAy
NzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1bmRsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVSZW5kZXJCdW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMw
MjEyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZVF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjIy
NzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzk4QzAyMzI3NDQ2QTA1MDAyQ0NCNzggLyogUmVtb3RlU2hhZGVyTW9kdWxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVNoYWRlck1vZHVsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDOThDMDI0Mjc0NDZBMDUwMDJDQ0I3OCAvKiBXZWJHUFVPYmpl
Y3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVU9iamVjdEhlYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzk4QzAyNDI3NDQ2QTA1MDAyQ0NCNzggLyogV2Vi
R1BVT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVT2JqZWN0UmVn
aXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAyNTI3NDQ2QTA2
MDAyQ0NCNzggLyogUmVtb3RlVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVUZXh0dXJl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDI2Mjc0NDZBMDYwMDJDQ0I3
OCAvKiBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
OThDMDI3Mjc0NDZBMDYwMDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzE3Miw2ICszMTcyLDggQEAKIAkJMUNCNzQ2QTQyNzQzQURCQTAwRjE5ODc0
IC8qIFdlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVj
dG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3Rv
clVJTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
VUlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxQ0JE
NzUzQzI3NDdBQTMxMDA0RkEwRkYgLyogV2ViR1BVT2JqZWN0SGVhcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVPYmplY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUNCRDc1M0QyNzQ3QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0JGOTAxMjI3MTAxOEI1MDAwQzQ1N0QgLyogUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFF1YWxpZmllZFJlc291cmNlSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0M1NEFGRDI3MEY5NjU0MDA1QkY4QkUgLyogUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YxOEYz
RTI2QkI1RDkwMDA0QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9nSW5pdGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzQyNyw4ICs3NDI5LDEwIEBACiAJCQkJMUM5OEMwMzYyNzQ0NkEwOTAwMkNDQjc4IC8qIFJl
bW90ZVRleHR1cmVWaWV3LmNwcCAqLywKIAkJCQkxQzk4QzAyRTI3NDQ2QTA4MDAyQ0NCNzggLyog
UmVtb3RlVGV4dHVyZVZpZXcuaCAqLywKIAkJCQkxQzk4QzA4ODI3NDRCRDk5MDAyQ0NCNzggLyog
UmVtb3RlVGV4dHVyZVZpZXcubWVzc2FnZXMuaW4gKi8sCi0JCQkJMUM5OEMwMjQyNzQ0NkEwNTAw
MkNDQjc4IC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICovLAotCQkJCTFDOThDMDFFMjc0NDZBMDMw
MDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8sCisJCQkJMUNCRDc1M0MyNzQ3QUEzMTAw
NEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICovLAorCQkJCTFDQkQ3NTNEMjc0N0FBMzEw
MDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8sCisJCQkJMUM5OEMwMjQyNzQ0NkEwNTAw
MkNDQjc4IC8qIFdlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcCAqLywKKwkJCQkxQzk4QzAxRTI3NDQ2
QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gV2ViR1BVOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1MDMsMTAgKzk1MDcs
MTAgQEAKIAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxRjdCQjdFMjc0NTY0QTEw
MEM0NUE3MiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8sCiAJCQkJNTdBOUZGMTUyNTJDNkFFRjAw
NkEyMDQwIC8qIGxpYldURi5hICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBM
b2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKIAkJCQk1NzBEQUFCMDIzMDI3M0QyMDBF
OEZDMDQgLyogTmVhckZpZWxkLmZyYW1ld29yayAqLywKKwkJCQk1MUY3QkI3RTI3NDU2NEExMDBD
NDVBNzIgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovLAogCQkJKTsKIAkJCW5hbWUgPSBGcmFtZXdv
cmtzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEyMjI5LDggKzEyMjMzLDggQEAK
IAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTUxRjdCQjdCMjc0NEM1MDcwMEM0NUE3MiAvKiBQ
dXNoQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNTc5RkMyNzE3QUY1
MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGN0JC
N0IyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTJDRDY5RjI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CkBAIC0xNDcwOCwxMiArMTQ3MTIsMTIgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJ
CTUxRjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2RlU2lnbmluZy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTVDMTU3QTAxMjcxN0I3RkIwMEVENTI4MCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MUY3QkI3RDI3NDU2NDA0MDBDNDVBNzIgLyogQ29kZVNpZ25pbmcu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1NzlGRjI3MTdCNkQyMDBFRDUyODAgLyogRGFlbW9u
RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUY3QkI3QzI3NDRDNTA3MDBDNDVBNzIg
LyogUHVzaENsaWVudENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1NzlGRTI3
MTdCNkMxMDBFRDUyODAgLyogRGFlbW9uRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzE1NzlGQjI3MTdBRjUwMDBFRDUyODAgLyogRGFlbW9uVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTFGN0JCN0MyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyQ0Q2QTAyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1
c2hEYWVtb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1N0EwQzI3MTdDQTFEMDBFRDUyODAg
LyogV2ViUHVzaERhZW1vbk1haW4ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444862</attachid>
            <date>2021-11-19 15:13:32 -0800</date>
            <delta_ts>2021-11-19 16:30:39 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-233358-20211119151331.patch</filename>
            <type>text/plain</type>
            <size>191572</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3OTBhM2IxNTU2NDZlZTFi
MTRkNzhmMTU0Zjc0NWQzZDUwN2RhZTcuLmUwOTA1ZmZkNjUzZTU2YTE3YTdiNmE4Yjk4NmVjYmNl
NzUwZWZjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc5IEBACisyMDIxLTExLTE5ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW1w
bGVtZW50IEdQVSBwcm9jZXNzJ3MgbWVzc2FnZSByZWNlaXZlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzM1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBUaGUgbWVzc2FnZSByZWNlaXZlcnMgaGF2ZSB0
d28gaGVscGVyIG9iamVjdHM6CisgICAgICAgIDEuIE9iamVjdEhlYXAsIHdoaWNoIG93bnMgYWxs
IHRoZSBtZXNzYWdlIHJlY2VpdmVycy4gVGhlcmUgaXMgaW50ZW5kZWQgdG8gYmUgb25seSBvbmUg
b2YgdGhlbSBwZXIgZG9jdW1lbnQuCisgICAgICAgIDIuIE9iamVjdFJlZ2lzdHJ5LCB3aGljaCBk
b2Vzbid0IG93biBhbnl0aGluZywgYnV0IG1haW50YWlucyBhIG1hcHBpbmcgZnJvbSBXZWJHUFVJ
ZGVudGlmaWVycyB0byBvYmplY3RzLiBUaGlzCisgICAgICAgICAgICAgICByZWdpc3RyeSBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSB3aGVuIGFuIG9iamVjdCBuZWVkcyB0byBiZSBkZXN0cm95ZWQsIHdl
IGhhdmUgdG8gbG9vayB1cCB3aGljaCBvYmplY3QgaXQKKyAgICAgICAgICAgICAgIGlzIGJ5IElE
LgorCisgICAgICAgIEJleW9uZCB0aGF0LCB0aGlzIHBhdGNoIGp1c3QgaG9va3MgdXAgdGhvc2Ug
dHdvIG1lc3NhZ2UgcmVjZWl2ZXJzLCBhbmQgdGhlbiBmb3J3YXJkcyBhbGwgcmVjZWl2ZWQgbWVz
c2FnZXMgdG8KKyAgICAgICAgdGhlIHZpcnR1YWwgaW50ZXJmYWNlIHRoYXQgaW1wbGVtZW50cyBX
ZWJHUFUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QWRhcHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6OlJlbW90ZUFkYXB0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBZGFwdGVyOjp+UmVtb3RlQWRhcHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6OnJlcXVlc3REZXZpY2UpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUJpbmRHcm91cDo6flJlbW90ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUJpbmRHcm91cDo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUJpbmRHcm91cExheW91dDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0Ojp+UmVtb3RlQmluZEdyb3VwTGF5b3V0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0OjpzZXRMYWJlbCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQnVmZmVyOjpSZW1vdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVCdWZmZXI6On5SZW1vdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVCdWZmZXI6Om1hcEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQnVmZmVyOjp1bm1h
cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ29tbWFuZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDb21tYW5kQnVmZmVyOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlbW90ZUNvbW1hbmRFbmNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6On5SZW1vdGVDb21tYW5kRW5jb2Rl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBh
c3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRl
UGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9CdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29k
ZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFu
ZEVuY29kZXI6OmZpbGxCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6cG9wRGVidWdHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNv
ZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjp3cml0ZVRpbWVzdGFtcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpyZXNvbHZlUXVlcnlTZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5k
RW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6
OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlcjo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBl
bGluZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQaXBlbGluZTo6UmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5l
Ojp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
b21wdXRlUGlwZWxpbmU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVE
ZXZpY2U6OlJlbW90ZURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6flJl
bW90ZURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlRGV2aWNlOjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNl
OjppbXBvcnRFeHRlcm5hbFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6
OmNyZWF0ZUJpbmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6
Y3JlYXRlUGlwZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNy
ZWF0ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlU2hh
ZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRl
UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlw
ZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQ29t
bWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRl
ckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVF1
ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpwdXNoRXJyb3JTY29wZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6cG9wRXJyb3JTY29wZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZURldmljZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUV4dGVybmFsVGV4dHVyZTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjp+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpzZXRMYWJlbCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjpSZW1vdGVHUFUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHUFU6On5SZW1vdGVHUFUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVl
c3RBZGFwdGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVH
UFUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVQaXBlbGluZUxheW91dDo6
UmVtb3RlUGlwZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVQaXBlbGluZUxh
eW91dDo6flJlbW90ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUGlw
ZWxpbmVMYXlvdXQ6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVl
cnlTZXQ6OlJlbW90ZVF1ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVlcnlTZXQ6
On5SZW1vdGVRdWVyeVNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXJ5U2V0OjpkZXN0
cm95KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVlcnlTZXQ6OnNldExhYmVsKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUXVldWU6OlJlbW90ZVF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUXVldWU6On5SZW1vdGVRdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjpz
dWJtaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVRdWV1ZTo6b25TdWJtaXR0ZWRXb3JrRG9u
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjp3cml0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjp3cml0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVRdWV1ZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVF1ZXVlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
QnVuZGxlOjpSZW1vdGVSZW5kZXJCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJCdW5kbGU6On5SZW1vdGVSZW5kZXJCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJCdW5kbGU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6On5SZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
cjo6c2V0UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpzZXRJbmRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjpkcmF3SW5kZXhlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnBvcERlYnVnR3JvdXApOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldExhYmVsKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRpcmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFy
a2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdw
b3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNz
b3JSZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJs
ZW5kQ29uc3RhbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0U3RlbmNpbFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyOjpiZWdpbk9jY2x1c2lvblF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OmVuZE9jY2x1c2lvblF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhl
Y3V0ZUJ1bmRsZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
ZW5kUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRM
YWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBpcGVs
aW5lOjpSZW1vdGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
clBpcGVsaW5lOjp+UmVtb3RlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyUGlwZWxpbmU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ft
cGxlcjo6flJlbW90ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVyOjpz
ZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2Ft
cGxlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRl
ck1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNoYWRlck1vZHVsZTo6UmVtb3Rl
U2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVt
b3RlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjpj
b21waWxhdGlvbkluZm8pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTaGFkZXJNb2R1bGU6OnNl
dExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFk
ZXJNb2R1bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVRleHR1cmU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0
dXJlOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZVZpZXc6OlJl
bW90ZVRleHR1cmVWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZVZpZXc6On5S
ZW1vdGVUZXh0dXJlVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHR1cmVWaWV3Ojpz
ZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4
dHVyZVZpZXcuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVP
YmplY3RIZWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjphZGRP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OnJlbW92ZU9iamVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEFkYXB0ZXJG
cm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVh
cDo6Y29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0QmluZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2Jq
ZWN0SGVhcDo6Y29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJv
bUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6
OmNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydENvbXB1dGVQaXBlbGluZUZyb21C
YWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpj
b252ZXJ0RGV2aWNlRnJvbUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEdQVUZyb21C
YWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpj
b252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRRdWV1ZUZy
b21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFw
Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJh
Y2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNv
bnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2lu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVy
dFNhbXBsZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
T2JqZWN0SGVhcDo6Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNr
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252
ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6Ok9iamVjdFJlZ2lzdHJ5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6fk9iamVjdFJlZ2lzdHJ5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6cmVtb3ZlT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydEFkYXB0ZXJGcm9t
QmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRCaW5kR3JvdXBGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0
UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21tYW5k
QnVmZmVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFj
a2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRD
b21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnk6OmNvbnZlcnREZXZpY2VGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2lu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRHUFVG
cm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNv
bnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpPYmplY3RSZWdpc3RyeTo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UXVldWVGcm9tQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJC
dW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9t
QmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpP
YmplY3RSZWdpc3RyeTo6Y29udmVydFNhbXBsZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2lu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRUZXh0
dXJlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
Ojpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0cnkuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmguCisg
ICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Lmg6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNz
Y2hlbWVzL1dlYktpdC54Y3NjaGVtZToKKwogMjAyMS0xMS0xOSAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEFkZCBjb252ZXJ0ZXJz
IGZyb20gc2VyaWFsaXphYmxlIGRlc2NyaXB0b3JzIHRvIGludGVyZmFjZSBkZXNjcmlwdG9ycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQWRhcHRlci5jcHAKaW5kZXggZTA0MDlhOWM0NjE0YTU0NjI0YWZkZmFhYTBlMmYxMzk1
ZjQ3NjM1OC4uNDFiZGYxNjUyMDZiMDk2OTlhYjE1MzYyMWFkM2MyZWUxZTg2ODg0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFw
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUFkYXB0ZXIuY3BwCkBAIC0yOCwyOSArMjgsNzYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZS5oIgogI2luY2x1ZGUgIldlYkdQVURldmlj
ZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJHUFVTdXBwb3J0ZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIldlYkdQVVN1cHBvcnRlZExpbWl0cy5oIgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQWRhcHRlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVRGV2aWNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVBZGFw
dGVyOjpSZW1vdGVBZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVBZGFwdGVyOjpSZW1vdGVBZGFwdGVyKFBB
TDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmpl
Y3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoYWRhcHRlcikKKyAgICAsIG1fb2JqZWN0
UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkK
KyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
YWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQWRhcHRlcjo6
flJlbW90ZUFkYXB0ZXIoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1f
aWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25z
dCBXZWJHUFU6OkRldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkdQVTo6U3VwcG9ydGVk
RmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVy
KTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIGF1dG8gY29udmVydGVkRGVzY3Jp
cHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpIHsKKyAgICAgICAgY2FsbGJhY2soeyB7IH0gfSwgeyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fYmFja2luZy0+cmVxdWVzdERldmljZSgqY29udmVydGVkRGVzY3Jp
cHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vh
a1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0g
bV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiYm
IGRldmljZSkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha09iamVjdEhlYXApCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGF1dG8gcmVtb3RlRGV2aWNlID0gUmVtb3RlRGV2aWNlOjpj
cmVhdGUoZGV2aWNlLCBvYmplY3RSZWdpc3RyeSwgKndlYWtPYmplY3RIZWFwLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgd2Vha09iamVjdEhlYXAtPmFkZE9iamVjdChyZW1vdGVEZXZpY2UpOworICAg
ICAgICBjb25zdCBhdXRvJiBmZWF0dXJlcyA9IGRldmljZS0+ZmVhdHVyZXMoKTsKKyAgICAgICAg
Y29uc3QgYXV0byYgbGltaXRzID0gZGV2aWNlLT5saW1pdHMoKTsKKyAgICAgICAgY2FsbGJhY2so
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2ViR1BV
OjpTdXBwb3J0ZWRMaW1pdHMgeworICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNp
b24xRCgpLAorICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCgpLAorICAg
ICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCgpLAorICAgICAgICAgICAgbGlt
aXRzLm1heFRleHR1cmVBcnJheUxheWVycygpLAorICAgICAgICAgICAgbGltaXRzLm1heEJpbmRH
cm91cHMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQ
aXBlbGluZUxheW91dCgpLAorICAgICAgICAgICAgbGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVm
ZmVyc1BlclBpcGVsaW5lTGF5b3V0KCksCisgICAgICAgICAgICBsaW1pdHMubWF4U2FtcGxlZFRl
eHR1cmVzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTYW1wbGVyc1Bl
clNoYWRlclN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJT
aGFkZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNo
YWRlclN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFk
ZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6
ZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSgpLAor
ICAgICAgICAgICAgbGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAg
ICAgICAgICAgIGxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50KCksCisgICAg
ICAgICAgICBsaW1pdHMubWF4VmVydGV4QnVmZmVycygpLAorICAgICAgICAgICAgbGltaXRzLm1h
eFZlcnRleEF0dHJpYnV0ZXMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJB
cnJheVN0cmlkZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21w
b25lbnRzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VT
aXplKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dy
b3VwKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYKCksCisg
ICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCisgICAgICAgICAg
ICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKCksCisgICAgICAgICAgICBsaW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24oKSwKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaAppbmRleCA1MGYzN2U3
ZTQ2NzA5OGExNzZmZTRjNDA3ODMxNDlhMGMxZDM3N2UxLi4xZWEyYzEwMTg2ZTFiNmY4OGIwYTMy
Y2UwNDI3ODViZmMyOGFmMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaApAQCAtNDEsMjMgKzQxLDI0IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIFdlYkdQVSB7CiBzdHJ1Y3QgRGV2aWNlRGVz
Y3JpcHRvcjsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVj
dCBTdXBwb3J0ZWRGZWF0dXJlczsKIHN0cnVjdCBTdXBwb3J0ZWRMaW1pdHM7CiB9CiAKIGNsYXNz
IFJlbW90ZUFkYXB0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQWRhcHRlcj4gY3JlYXRlKFBBTDo6V2Vi
R1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisg
ICAgc3RhdGljIFJlZjxSZW1vdGVBZGFwdGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkFkYXB0ZXIm
IGFkYXB0ZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0ZXIoYWRhcHRlciwg
b2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBZGFwdGVy
KGFkYXB0ZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlQWRhcHRlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVu
ZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAot
ICAgIFJlbW90ZUFkYXB0ZXIoUEFMOjpXZWJHUFU6OkFkYXB0ZXImLCBXZWJHUFU6Ok9iamVjdEhl
YXAmKTsKKyAgICBSZW1vdGVBZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwog
CiAgICAgUmVtb3RlQWRhcHRlcihjb25zdCBSZW1vdGVBZGFwdGVyJikgPSBkZWxldGU7CiAgICAg
UmVtb3RlQWRhcHRlcihSZW1vdGVBZGFwdGVyJiYpID0gZGVsZXRlOwpAQCAtNjksNyArNzAsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXZWJHUFU6OkRldmljZURl
c2NyaXB0b3ImLCBXZWJHUFVJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4m
Jik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+IG1fYmFja2luZzsKLSAgICBSZWY8
V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0
SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwCmluZGV4IDQ3MTBhNTQ1OTVlNmI0
YjQyMGFiMTA5MjgzM2Y3MThjNDkxMjMwYjQuLjA4NWY0OTUzODRlM2VmM2NjNDRhNTMyYzU2ODg1
YjQxOWZmNDE3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAKQEAgLTI5LDIzICsyOSwyOCBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1S
ZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBi
aW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZUJpbmRHcm91
cDo6UmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KGJpbmRHcm91cCkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAg
LCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNr
aW5nKTsKIH0KIAogUmVtb3RlQmluZEdyb3VwOjp+UmVtb3RlQmluZEdyb3VwKCkKIHsKKyAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZUJpbmRHcm91cDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuaAppbmRleCAwM2QxMGRm
NDE1MjhhZDEyMmFhYTAzYmU3NmE3ODAzYWJkOGFiODFiLi5jZTE0MDhjNjdkNTQ4MTJkOWRkNGMx
N2U2M2RkMGIwYjI0NjcwZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmgKQEAgLTQwLDIxICs0MCwy
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmpl
Y3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91
cCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXA+IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdy
b3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZUJpbmRHcm91cD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJp
bmRHcm91cCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwKGJpbmRHcm91
cCwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5k
R3JvdXAoYmluZEdyb3VwLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91cCgpOwogCiBwcml2YXRlOgot
ICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdp
c3RyeTsKIAotICAgIFJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwgV2Vi
R1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5k
R3JvdXAmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXAoY29uc3QgUmVtb3RlQmluZEdy
b3VwJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwKFJlbW90ZUJpbmRHcm91cCYmKSA9
IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiBtX2JhY2tpbmc7Ci0g
ICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBt
X29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcApp
bmRleCA4YzBmMGUxMWU3NzQ5ZTk5OWYxNDE2NzFiMjVjODBjM2Q1ODY4Y2I5Li4wYjE2ZmYyOTg3
ZDE1NDJhM2FhYTJhZWQwNjQyZWVhZjJlN2Q1MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3Jv
dXBMYXlvdXQuY3BwCkBAIC0yOSwyMyArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91
cExheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQmluZEdyb3VwTGF5b3V0
OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmlu
ZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVCaW5k
R3JvdXBMYXlvdXQ6OlJlbW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3Vw
TGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJl
Z2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhiaW5kR3JvdXBMYXlvdXQpCisgICAgLCBtX29i
amVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhl
YXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lz
dHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZUJpbmRH
cm91cExheW91dDo6flJlbW90ZUJpbmRHcm91cExheW91dCgpCiB7CisgICAgbV9vYmplY3RSZWdp
c3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQ6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShs
YWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgKaW5kZXgg
ZDBmZGFjYWVhMmE1NDM5ZDFjYmU3MWM2YThmYjNlMTljODE4NTg1NS4uMjhkMGJlNGJiNDM5MDg3
NTViYmY4OTM4ZWQyMDhlNjdmZGZjZmM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91
dC5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBX
ZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBj
bGFzcyBSZW1vdGVCaW5kR3JvdXBMYXlvdXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwTGF5
b3V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVC
aW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5k
R3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cExheW91
dChiaW5kR3JvdXBMYXlvdXQsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGJpbmRHcm91cExheW91dCwgb2JqZWN0UmVnaXN0
cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1v
dGVCaW5kR3JvdXBMYXlvdXQoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0
SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVCaW5k
R3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYpOworICAgIFJlbW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3Vw
TGF5b3V0JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdl
YkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFJlbW90
ZUJpbmRHcm91cExheW91dCYpID0gZGVsZXRlOwogICAgIFJlbW90ZUJpbmRHcm91cExheW91dChS
ZW1vdGVCaW5kR3JvdXBMYXlvdXQmJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6
OkJpbmRHcm91cExheW91dD4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+
IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJ1ZmZlci5jcHAKaW5kZXggMGZjMjZlNGI1ODg5ZTA4MzEzZDZhN2I5M2Y3ZWQxNjRkZjU2ZWE5
OC4uOGE1ZDI4YjZkZWQ2MzllNTJlYjU4M2RiNzIyY2E1MDEzNzM4NGY5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVm
ZmVyLmNwcApAQCAtMjksMjEgKzI5LDI3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lz
dHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVCdWZmZXI6OlJlbW90ZUJ1ZmZl
cihQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCkKK1JlbW90ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1
ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDog
bV9iYWNraW5nKGJ1ZmZlcikKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkp
CiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwg
bV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQnVmZmVyOjp+UmVtb3RlQnVmZmVyKCkKIHsKKyAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxh
Z3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8dWludDhfdD4mJik+JiYgY2FsbGJhY2spCiB7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgogICAgIFVOVVNFRF9QQVJBTShtYXBNb2RlRmxhZ3MpOwogICAgIFVOVVNFRF9Q
QVJBTShvZmZzZXQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CkBAIC01MSwxNiArNTcs
MTggQEAgdm9pZCBSZW1vdGVCdWZmZXI6Om1hcEFzeW5jKFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxh
Z3MgbWFwTW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmEKIAogdm9pZCBSZW1vdGVCdWZmZXI6OnVubWFw
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
LgogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVCdWZmZXI6OmRlc3Ry
b3koKQogeworICAgIG1fYmFja2luZy0+ZGVzdHJveSgpOwogfQogCiB2b2lkIFJlbW90ZUJ1ZmZl
cjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaAppbmRleCAxNGE0NWE3ZGRhZTdkNDMxODY3NTQwZGUw
OTI4OTIyMTBkMzQxNTJkLi5kMjI0OGRjMmM5MTVmZTUzYjRmMzNhNjE5YWU0MGE4NTUzMTEwYzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQnVmZmVyLmgKQEAgLTQ1LDIxICs0NSwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVn
aXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVh
bU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVCdWZmZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlcj4gY3JlYXRlKFBBTDo6V2Vi
R1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0
cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQnVmZmVy
KGJ1ZmZlciwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVCdWZmZXIoYnVmZmVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJ1ZmZlcigpOwogCiBwcml2YXRlOgotICAg
IGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIAotICAgIFJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6QnVmZmVyJiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJik7CisgICAgUmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVCdWZmZXIoY29uc3QgUmVtb3RlQnVmZmVyJikgPSBkZWxldGU7CiAgICAg
UmVtb3RlQnVmZmVyKFJlbW90ZUJ1ZmZlciYmKSA9IGRlbGV0ZTsKQEAgLTc2LDcgKzc3LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6Oldl
YkdQVTo6QnVmZmVyPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9v
YmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7
CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IDQ0YTlkNTkxM2ZkM2U4YzFmZWM2OTYxYTVhY2Yy
OGEwMmQ4MjBiMzkuLmE5YzZhMmI2ZTYwM2Y0MDc4MGNhZWEwMDdiNTczYjJlNGQ2ZDRhMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmNwcApAQCAtMjksMjMgKzI5LDI4IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2lu
Y2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1v
dGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitS
ZW1vdGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21t
YW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RS
ZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29tbWFuZEJ1ZmZlcikKKyAgICAsIG1fb2Jq
ZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVh
cCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0
cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQ29tbWFu
ZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZmZXIoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
cmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEJ1ZmZl
cjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCmluZGV4IGRhNTZmYmE2YThj
MzYzYjY2MjI1OWU2YjZiNTAzZGU1YmNhNTYwMDcuLjE0MGMxYTQ4YTExZGVmOWNhYmFjOWE1MWM4
NGExY2RkYzc0MmQ4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oCkBAIC00MCwyMSAr
NDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3Mg
T2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVDb21t
YW5kQnVmZmVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShQQUw6Oldl
YkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVDb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZmZXIsIG9iamVjdEhlYXApKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEJ1ZmZlcihjb21tYW5k
QnVmZmVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRCdWZmZXIoKTsKIAogcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7
CiAKLSAgICBSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiwg
V2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVj
dEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1hbmRCdWZmZXIoY29u
c3QgUmVtb3RlQ29tbWFuZEJ1ZmZlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbW1hbmRCdWZm
ZXIoUmVtb3RlQ29tbWFuZEJ1ZmZlciYmKSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlcj4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+
IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lz
dHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4IDU2OGQwMTJhZmFkY2VmYTgxMjhhYzY5
M2MxN2M3Mjc0NGE0ZWQ1YzUuLmFjOTQ5ZWZhNGI2YjRlY2UyMmYyMTZjY2ExNjUzZTU3NjAwYjBk
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0yOCwzMiArMjgsNTYg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRC
dWZmZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaCIKKyNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oIgogI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQYXNz
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJX
ZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUNvbW1h
bmRFbmNvZGVyOjpSZW1vdGVDb21tYW5kRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29k
ZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6UmVtb3RlQ29tbWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1h
bmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0
UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGNvbW1hbmRFbmNvZGVyKQorICAgICwgbV9v
YmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RI
ZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdp
c3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6flJlbW90ZUNvbW1hbmRFbmNvZGVyKCkKIHsKKyAgICBtX29iamVjdFJlZ2lz
dHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3QgV2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVOVVNF
RF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAg
YXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJh
Y2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAg
IGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBy
ZW5kZXJQYXNzRW5jb2RlciA9IG1fYmFja2luZy0+YmVnaW5SZW5kZXJQYXNzKCpjb252ZXJ0ZWRE
ZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyID0gUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShyZW5kZXJQYXNzRW5jb2RlciwgbV9vYmplY3RSZWdpc3Ry
eSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KHJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6Q29tcHV0ZVBh
c3NEZXNjcmlwdG9yPiYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRp
Zmllcik7CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlw
dG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOworICAgIGlmIChkZXNjcmlwdG9yKSB7CisgICAgICAg
IGF1dG8gcmVzdWx0RGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKCpkZXNjcmlwdG9yKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdERlc2NyaXB0b3IpOworICAg
ICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gV1RGTW92ZShyZXN1bHREZXNjcmlwdG9yKTsKKyAg
ICAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gY29tcHV0ZVBhc3NFbmNvZGVyID0gbV9iYWNraW5nLT5iZWdpbkNvbXB1
dGVQYXNzKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIGNvbXB1dGVSZW5kZXJQYXNz
RW5jb2RlciA9IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKGNvbXB1dGVQYXNzRW5j
b2RlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBt
X29iamVjdEhlYXAuYWRkT2JqZWN0KGNvbXB1dGVSZW5kZXJQYXNzRW5jb2Rlcik7CiB9CiAKIHZv
aWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigKQEAgLTYzLDExICs4
NywxNCBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoCiAg
ICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwKICAgICBQQUw6OldlYkdQ
VTo6U2l6ZTY0IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNvdXJjZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1
ZmZlckZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1
ZmZlckZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9u
KTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+Y29weUJ1ZmZlclRvQnVmZmVyKCpjb252
ZXJ0ZWRTb3VyY2UsIHNvdXJjZU9mZnNldCwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5h
dGlvbk9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlC
dWZmZXJUb1RleHR1cmUoCkBAIC03NSw5ICsxMDIsMTYgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6OkltYWdlQ29weVRl
eHR1cmUmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXpl
KQogewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5h
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNv
dXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAg
QVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBB
U1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUg
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CisgICAgQVNT
RVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29u
dmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2JhY2tpbmctPmNvcHlCdWZmZXJUb1RleHR1cmUoKmNvbnZlcnRlZFNvdXJjZSwg
KmNvbnZlcnRlZERlc3RpbmF0aW9uLCAqY29udmVydGVkQ29weVNpemUpOwogfQogCiB2b2lkIFJl
bW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKApAQCAtODUsOSArMTE5LDE2
IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoCiAgICAg
Y29uc3QgV2ViR1BVOjpJbWFnZUNvcHlCdWZmZXImIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdl
YkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwot
ICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXpl
KTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0
byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAg
IGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFj
a2luZyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAo
IWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENv
cHlTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPmNvcHlUZXh0dXJlVG9C
dWZmZXIoKmNvbnZlcnRlZFNvdXJjZSwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCAqY29udmVydGVk
Q29weVNpemUpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRv
VGV4dHVyZSgKQEAgLTk1LDkgKzEzNiwxNiBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJHUFU6OkltYWdlQ29weVRleHR1cmUm
IGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewot
ICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJU
KGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2Jq
ZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNv
bnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVk
RGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2JhY2tpbmctPmNvcHlUZXh0dXJlVG9UZXh0dXJlKCpjb252ZXJ0ZWRTb3VyY2UsICpjb252
ZXJ0ZWREZXN0aW5hdGlvbiwgKmNvbnZlcnRlZENvcHlTaXplKTsKIH0KIAogdm9pZCBSZW1vdGVD
b21tYW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcigKQEAgLTEwNSwyOSArMTUzLDM3IEBAIHZvaWQgUmVt
b3RlQ29tbWFuZEVuY29kZXI6OmZpbGxCdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBk
ZXN0aW5hdGlvbk9mZnNldCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IHNpemUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25P
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3Rp
bmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoZGVzdGlu
YXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgaWYgKCFjb252
ZXJ0ZWREZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5maWxs
QnVmZmVyKCpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgZGVzdGluYXRpb25PZmZzZXQsIHNpemUpOwog
fQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBn
cm91cExhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAgICBtX2JhY2tp
bmctPnB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90
ZUNvbW1hbmRFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKIHsKKyAgICBtX2JhY2tpbmctPnBvcERl
YnVnR3JvdXAoKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdN
YXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcmtlckxh
YmVsKTsKKyAgICBtX2JhY2tpbmctPmluc2VydERlYnVnTWFya2VyKFdURk1vdmUobWFya2VyTGFi
ZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAoV2Vi
R1BVSWRlbnRpZmllciBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQog
ewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5k
ZXgpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBBU1NFUlQoY29udmVydGVkUXVl
cnlTZXQpOworICAgIGlmICghY29udmVydGVkUXVlcnlTZXQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fYmFja2luZy0+d3JpdGVUaW1lc3RhbXAoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUlu
ZGV4KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6cmVzb2x2ZVF1ZXJ5U2V0KApA
QCAtMTM3LDIyICsxOTMsMzEgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6cmVzb2x2ZVF1
ZXJ5U2V0KAogICAgIFdlYkdQVUlkZW50aWZpZXIgZGVzdGluYXRpb24sCiAgICAgUEFMOjpXZWJH
UFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlT
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFF1ZXJ5KTsKLSAgICBVTlVTRURfUEFSQU0ocXVl
cnlDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGVzdGluYXRpb25PZmZzZXQpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBB
U1NFUlQoY29udmVydGVkUXVlcnlTZXQpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24g
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7
CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBpZiAoIWNvbnZlcnRlZFF1
ZXJ5U2V0IHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9iYWNraW5nLT5yZXNvbHZlUXVlcnlTZXQoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBmaXJzdFF1ZXJ5
LCBxdWVyeUNvdW50LCAqY29udmVydGVkRGVzdGluYXRpb24sIGRlc3RpbmF0aW9uT2Zmc2V0KTsK
IH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdlYkdQVTo6Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fYmFja2luZy0+ZmluaXNoKCpjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZUNvbW1hbmRCdWZmZXIgPSBSZW1vdGVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9v
YmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90
ZUNvbW1hbmRCdWZmZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpzZXRMYWJl
bChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFj
a2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIuaAppbmRleCBjYjYwZTRiMTM4NmEyZTNlMGNk
ZDU5Yjc2YmYyZjhmNjY0ZWIzODA0Li5iYjYwNGFhN2M4YWRkYjRjMWYwYjllMDAwZGNiYmFhZjQ5
ODcyMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5oCkBAIC00NiwyMiArNDYsMjMg
QEAgc3RydWN0IENvbXB1dGVQYXNzRGVzY3JpcHRvcjsKIHN0cnVjdCBJbWFnZUNvcHlCdWZmZXI7
CiBzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZTsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmpl
Y3RSZWdpc3RyeTsKIHN0cnVjdCBSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVt
b3RlQ29tbWFuZEVuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+IGNyZWF0
ZShQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5jb2Rl
cj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1hbmRFbmNvZGVyKGNvbW1hbmRFbmNvZGVy
LCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1h
bmRFbmNvZGVyKGNvbW1hbmRFbmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRl
bnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRFbmNvZGVyKCk7
CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNs
YXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlQ29tbWFuZEVuY29kZXIoUEFMOjpXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQ29t
bWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAg
UmVtb3RlQ29tbWFuZEVuY29kZXIoY29uc3QgUmVtb3RlQ29tbWFuZEVuY29kZXImKSA9IGRlbGV0
ZTsKICAgICBSZW1vdGVDb21tYW5kRW5jb2RlcihSZW1vdGVDb21tYW5kRW5jb2RlciYmKSA9IGRl
bGV0ZTsKQEAgLTExOCw3ICsxMTksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3Ry
aW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4gbV9iYWNraW5n
OwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVh
cCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5j
b2Rlci5jcHAKaW5kZXggNDM1MGE5ZjZkZjAwZjQ1YzFjMjE1OWZjNjFiMzdjN2JlMjFlZjkwNC4u
OGIxMjMzMTU5NzRkYTY0YWIxMThmMjg1MmYyOTBjN2MyZDViY2RlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcApAQCAtMjksNzcgKzI5LDk5IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1
ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJl
bW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBh
c3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoY29tcHV0ZVBhc3NFbmNvZGVyKQorICAgICwgbV9vYmplY3RSZWdpc3Ry
eShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmpl
Y3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI6On5SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnku
cmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIGNvbXB1dGVQaXBlbGluZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBhdXRvIGNvbnZlcnRlZENv
bXB1dGVQaXBlbGluZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydENvbXB1dGVQaXBlbGluZUZy
b21CYWNraW5nKGNvbXB1dGVQaXBlbGluZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvbXB1dGVQ
aXBlbGluZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYmFja2luZy0+c2V0UGlwZWxpbmUoKmNvbnZlcnRlZENvbXB1dGVQaXBl
bGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpkaXNwYXRjaChQQUw6
OldlYkdQVTo6U2l6ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUzMj4geSwg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB6KQogewotICAgIFVOVVNFRF9QQVJB
TSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHopOworICAgIG1f
YmFja2luZy0+ZGlzcGF0Y2goeCwgeSwgeik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyOjpkaXNwYXRjaEluZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIs
IFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGluZGlyZWN0QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworICAg
IGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPmRpc3BhdGNoSW5kaXJlY3QoKmNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdlYkdQVUlkZW50aWZpZXIg
cXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVTRURf
UEFSQU0ocXVlcnlTZXQpOwotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRv
IGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UXVlcnlTZXRGcm9t
QmFja2luZyhxdWVyeVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAgICBp
ZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmct
PmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKmNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUlu
ZGV4KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KCkKIHsKKyAgICBtX2JhY2tpbmctPmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1
ZXJ5KCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKIHsK
KyAgICBtX2JhY2tpbmctPmVuZFBhc3MoKTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgV2ViR1BVSWRl
bnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6
OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIG9mZnNldHMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
ZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zm
c2V0cyk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0
ZWRCaW5kR3JvdXApOworICAgIGlmICghY29udmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2JhY2tpbmctPnNldEJpbmRHcm91cChpbmRleCwgKmNvbnZlcnRlZEJpbmRH
cm91cCwgV1RGTW92ZShvZmZzZXRzKSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewotICAgIFVOVVNFRF9Q
QVJBTShncm91cExhYmVsKTsKKyAgICBtX2JhY2tpbmctPnB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUo
Z3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6cG9wRGVi
dWdHcm91cCgpCiB7CisgICAgbV9iYWNraW5nLT5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJr
ZXJMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIG1fYmFja2lu
Zy0+aW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpOwogfQogCiB2b2lkIFJl
bW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFi
ZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXIuaAppbmRleCA3N2FmYmQ4ZTljNTRlZjYyNDcxZmQwODRkMzEyNmY4MWYxMjhl
YzUzLi4wMGY5ZGQzMGQ3MTY1ZWJmOThkM2JhNWE3ZmVhOGEwMWI2MGU5OGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTQxLDIxICs0MSwyMiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xh
c3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciBm
aW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6
Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4g
Y3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2Rl
ciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1
dGVQYXNzRW5jb2Rlciwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29tcHV0ZVBhc3NFbmNvZGVyLCBvYmplY3RSZWdp
c3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBP
YmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiwgV2Vi
R1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BV
OjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXIoY29uc3QgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyJikgPSBkZWxldGU7CiAgICAg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYmKSA9IGRl
bGV0ZTsKQEAgLTgzLDcgKzg0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiBtX2JhY2tp
bmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RI
ZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
LmNwcAppbmRleCA5YjlkOTA5NDgxOTJjNGJmMDAzNDFjZjhiZTY4ZjQ2ZmRlNGNmZGFjLi43MDE2
YTFmOTc5MDllYzJiNGI2ZmZkMGYxYjhiMzRiZjRmMTFlNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21wdXRlUGlwZWxpbmUuY3BwCkBAIC0yOCwzMCArMjgsMzggQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91cExheW91dC5oIgogI2luY2x1ZGUg
IldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgor
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUNvbXB1dGVQaXBlbGluZTo6UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpS
ZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0
ZVBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoY29tcHV0ZVBpcGVsaW5lKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShv
YmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVDb21wdXRlUGlwZWxpbmU6On5S
ZW1vdGVDb21wdXRlUGlwZWxpbmUoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2Jq
ZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpnZXRC
aW5kR3JvdXBMYXlvdXQodWludDMyX3QgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlm
aWVyKTsKKyAgICBhdXRvIGJpbmRHcm91cExheW91dCA9IG1fYmFja2luZy0+Z2V0QmluZEdyb3Vw
TGF5b3V0KGluZGV4KTsKKyAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJp
bmRHcm91cExheW91dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmplY3RSZWdpc3RyeSwg
bV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJl
bW90ZUJpbmRHcm91cExheW91dCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAg
IG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oCmluZGV4IGViMzQwNDNkNzQ4
ZmJmN2VmNmJlYTJiMzJkNTA5ZTZmMGNmMmIwMjMuLjg0ZGFhYjg2Y2M2OWRiNGYzMzUxZTFmYzEw
ZWYzNDYzYmE3NzdkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaApAQCAtNDAs
MjEgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNs
YXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4gY3JlYXRl
KFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVs
aW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5l
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90
ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RI
ZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0ZVBp
cGVsaW5lKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAg
ZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
KFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAg
ICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlm
aWVyKTsKIAogICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZShjb25zdCBSZW1vdGVDb21wdXRlUGlw
ZWxpbmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUmVtb3RlQ29tcHV0
ZVBpcGVsaW5lJiYpID0gZGVsZXRlOwpAQCAtNjgsNyArNjksOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmU+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhl
YXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3Bw
CmluZGV4IGI0MDEyYWE3ODY1ODdhNDEyNzRmMDhkYmZhZTVhMmNkOWY2MDUyOWIuLjg0NWM0M2I0
ZDE0MTUyM2RhNjQwOWJlODA0NDM4NjgxY2NiZjNlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAKQEAg
LTI4LDEzMSArMjgsMjkzIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRl
ICJSZW1vdGVCaW5kR3JvdXAuaCIKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCIK
KyNpbmNsdWRlICJSZW1vdGVCdWZmZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2Rl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGluZS5oIgorI2luY2x1ZGUgIlJlbW90
ZUV4dGVybmFsVGV4dHVyZS5oIgorI2luY2x1ZGUgIlJlbW90ZVBpcGVsaW5lTGF5b3V0LmgiCisj
aW5jbHVkZSAiUmVtb3RlUXVlcnlTZXQuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGlwZWxpbmUuaCIKKyNpbmNsdWRlICJS
ZW1vdGVTYW1wbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlU2hhZGVyTW9kdWxlLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyRGVzY3Jp
cHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVP
YmplY3RSZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkdQVU91dE9mTWVtb3J5RXJyb3IuaCIKKyNp
bmNsdWRlICJXZWJHUFVWYWxpZGF0aW9uRXJyb3IuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oPgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KKyNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmg+Cisj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1wbGVyLmg+CisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlLmg+CisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg+Cisj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlLmg+CisjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oPgorCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1SZW1vdGVEZXZpY2U6OlJlbW90ZURldmljZShQQUw6OldlYkdQVTo6
RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZURl
dmljZTo6UmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmljZSwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGRldmlj
ZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVj
dEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAg
IG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0K
IAogUmVtb3RlRGV2aWNlOjp+UmVtb3RlRGV2aWNlKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6ZGVz
dHJveSgpCiB7CisgICAgbV9iYWNraW5nLT5kZXN0cm95KCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2
aWNlOjpjcmVhdGVCdWZmZXIoY29uc3QgV2ViR1BVOjpCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNvbnZl
cnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNj
cmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252
ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1f
YmFja2luZy0+Y3JlYXRlQnVmZmVyKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJl
bW90ZUJ1ZmZlciA9IFJlbW90ZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlciwgbV9vYmplY3RSZWdpc3Ry
eSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KHJlbW90ZUJ1ZmZlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNv
bnN0IFdlYkdQVTo6VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5V
U0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1f
b2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VS
VChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGV4dHVyZSA9IG1fYmFja2luZy0+Y3JlYXRlVGV4
dHVyZSgqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVUZXh0dXJlID0gUmVt
b3RlVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmUsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVh
cCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVUZXh0dXJl
KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgV2ViR1BVOjpT
YW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRl
bnRpZmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERl
c2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBzYW1wbGVyID0gbV9iYWNraW5nLT5jcmVhdGVTYW1wbGVyKCpjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVNhbXBsZXIgPSBSZW1vdGVTYW1wbGVyOjpj
cmVhdGUoc2FtcGxlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVy
KTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVNhbXBsZXIpOwogfQogCiB2b2lk
IFJlbW90ZURldmljZTo6aW1wb3J0RXh0ZXJuYWxUZXh0dXJlKGNvbnN0IFdlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0o
aWRlbnRpZmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZERlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBleHRlcm5hbFRleHR1cmUgPSBtX2JhY2tpbmctPmltcG9ydEV4dGVy
bmFsVGV4dHVyZSgqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVFeHRlcm5h
bFRleHR1cmUgPSBSZW1vdGVFeHRlcm5hbFRleHR1cmU6OmNyZWF0ZShleHRlcm5hbFRleHR1cmUs
IG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmpl
Y3RIZWFwLmFkZE9iamVjdChyZW1vdGVFeHRlcm5hbFRleHR1cmUpOwogfQogCiB2b2lkIFJlbW90
ZURldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdlYkdQVTo6QmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRp
Zmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2Ny
aXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmNyZWF0ZUJpbmRHcm91cExh
eW91dCgqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlv
dXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2Jq
ZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFw
LmFkZE9iamVjdChyZW1vdGVCaW5kR3JvdXBMYXlvdXQpOwogfQogCiB2b2lkIFJlbW90ZURldmlj
ZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVOjpQaXBlbGluZUxheW91dERlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBV
TlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwor
ICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZy
b21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsK
KyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gcGlwZWxpbmVMYXlvdXQgPSBtX2JhY2tpbmctPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVtb3Rl
UGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZShwaXBlbGluZUxheW91dCwgbV9vYmplY3RSZWdpc3RyeSwg
bV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJl
bW90ZVBpcGVsaW5lTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUJpbmRH
cm91cChjb25zdCBXZWJHUFU6OkJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7
Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3Jp
cHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYmluZEdyb3VwID0gbV9iYWNraW5n
LT5jcmVhdGVCaW5kR3JvdXAoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3Rl
QmluZEdyb3VwID0gUmVtb3RlQmluZEdyb3VwOjpjcmVhdGUoYmluZEdyb3VwLCBtX29iamVjdFJl
Z2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRP
YmplY3QocmVtb3RlQmluZEdyb3VwKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVNo
YWRlck1vZHVsZShjb25zdCBXZWJHUFU6OlNoYWRlck1vZHVsZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVz
Y3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVy
dGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2Ny
aXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZl
cnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2hhZGVyTW9kdWxl
ID0gbV9iYWNraW5nLT5jcmVhdGVTaGFkZXJNb2R1bGUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwor
ICAgIGF1dG8gcmVtb3RlU2hhZGVyTW9kdWxlID0gUmVtb3RlU2hhZGVyTW9kdWxlOjpjcmVhdGUo
c2hhZGVyTW9kdWxlLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIp
OworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlU2hhZGVyTW9kdWxlKTsKIH0KIAog
dm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXZWJHUFU6OkNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BB
UkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gY29tcHV0ZVBpcGVsaW5lID0gbV9iYWNraW5nLT5jcmVhdGVD
b21wdXRlUGlwZWxpbmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlQ29t
cHV0ZVBpcGVsaW5lID0gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVs
aW5lLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1f
b2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTsKIH0KIAogdm9pZCBS
ZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdlYkdQVTo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVu
dGlmaWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVz
Y3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHJlbmRlclBpcGVsaW5lID0gbV9iYWNraW5nLT5jcmVhdGVSZW5kZXJQaXBl
bGluZSgqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVSZW5kZXJQaXBlbGlu
ZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG1fb2JqZWN0
UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChyZW1vdGVSZW5kZXJQaXBlbGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpj
cmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKLSAgICBVTlVTRURf
UEFSQU0oY2FsbGJhY2spOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252
ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fYmFja2luZy0+
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdlYWtQdHI8V2ViR1BVOjpP
YmplY3RIZWFwPihtX29iamVjdEhlYXApLCBvYmplY3RSZWdpc3RyeSA9IG1fb2JqZWN0UmVnaXN0
cnksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBjb21w
dXRlUGlwZWxpbmUpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJl
bW90ZUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0UmVnaXN0
cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgICAgIHdlYWtPYmplY3RIZWFw
LT5hZGRPYmplY3QocmVtb3RlQ29tcHV0ZVBpcGVsaW5lKTsKKyAgICAgICAgY2FsbGJhY2soKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5
bmMoY29uc3QgV2ViR1BVOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNF
RF9QQVJBTShpZGVudGlmaWVyKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIGF1
dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBp
ZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3lu
YygqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHdl
YWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1fb2JqZWN0SGVhcCks
IG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmllcl0gKFJlZjxQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYgcmVuZGVyUGlwZWxpbmUpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtPYmplY3RIZWFwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBh
dXRvIHJlbW90ZVJlbmRlclBpcGVsaW5lID0gUmVtb3RlUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShy
ZW5kZXJQaXBlbGluZSwgb2JqZWN0UmVnaXN0cnksICp3ZWFrT2JqZWN0SGVhcCwgaWRlbnRpZmll
cik7CisgICAgICAgIHdlYWtPYmplY3RIZWFwLT5hZGRPYmplY3QocmVtb3RlUmVuZGVyUGlwZWxp
bmUpOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZURldmlj
ZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OkNvbW1h
bmRFbmNvZGVyRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGlkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNv
ZGVyRGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKKyAgICBpZiAoZGVzY3JpcHRvcikg
eworICAgICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHREZXNjcmlw
dG9yKTsKKyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVzY3Jp
cHRvcik7CisgICAgICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgYXV0byBjb21tYW5kRW5jb2RlciA9IG1fYmFja2luZy0+Y3JlYXRl
Q29tbWFuZEVuY29kZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlQ29t
bWFuZEVuY29kZXIgPSBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKGNvbW1hbmRFbmNvZGVy
LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2Jq
ZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQ29tbWFuZEVuY29kZXIpOwogfQogCiB2b2lkIFJlbW90
ZURldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBXZWJHUFU6OlJlbmRlckJ1
bmRsZUVuY29kZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJB
TShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVy
dGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIHJlbmRlckJ1bmRsZUVuY29kZXIgPSBtX2JhY2tpbmctPmNyZWF0
ZVJlbmRlckJ1bmRsZUVuY29kZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2RlciA9IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0
ZShyZW5kZXJCdW5kbGVFbmNvZGVyLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlk
ZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVRdWVyeVNldChjb25zdCBX
ZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURf
UEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmpl
Y3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNv
bnZlcnRlZERlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBxdWVyeVNldCA9IG1fYmFja2luZy0+Y3JlYXRlUXVlcnlT
ZXQoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlUXVlcnlTZXQgPSBSZW1v
dGVRdWVyeVNldDo6Y3JlYXRlKHF1ZXJ5U2V0LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhl
YXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUXVlcnlT
ZXQpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6cHVzaEVycm9yU2NvcGUoUEFMOjpXZWJHUFU6
OkVycm9yRmlsdGVyIGVycm9yRmlsdGVyKQogewotICAgIFVOVVNFRF9QQVJBTShlcnJvckZpbHRl
cik7CisgICAgbV9iYWNraW5nLT5wdXNoRXJyb3JTY29wZShlcnJvckZpbHRlcik7CiB9CiAKIHZv
aWQgUmVtb3RlRGV2aWNlOjpwb3BFcnJvclNjb3BlKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6RXJyb3I+JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFVO
VVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgbV9iYWNraW5nLT5wb3BFcnJvclNjb3BlKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6RXJy
b3I+JiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgV1RGOjpzd2l0Y2hPbigqZXJyb3IsIFsmXSAoUmVmPFBBTDo6V2ViR1BVOjpP
dXRPZk1lbW9yeUVycm9yPiBvdXRPZk1lbW9yeUVycm9yKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayh7IFdlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvciB7IH0gfSk7CisgICAgICAgIH0sIFsmXSAoUmVm
PFBBTDo6V2ViR1BVOjpWYWxpZGF0aW9uRXJyb3I+IHZhbGlkYXRpb25FcnJvcikgeworICAgICAg
ICAgICAgY2FsbGJhY2soeyBXZWJHUFU6OlZhbGlkYXRpb25FcnJvciB7IHZhbGlkYXRpb25FcnJv
ci0+bWVzc2FnZSgpIH0gfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90
ZURldmljZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuaAppbmRleCA5ZWEyMGE3M2JiYmU1ZDA3NjM4
MWY4NzFkZjI2MmYyZDE4NDVjODNhLi40OTdjZGEwOTYxNGVlNDZhZDBjMTU3OTI4ZDE2YTIyYWI2
MGJlNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlRGV2aWNlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IENvbW1hbmRF
bmNvZGVyRGVzY3JpcHRvcjsKIHN0cnVjdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOwogc3Ry
dWN0IEV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3Mg
T2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yOwogc3RydWN0
IFF1ZXJ5U2V0RGVzY3JpcHRvcjsKIHN0cnVjdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRv
cjsKQEAgLTYwLDE3ICs2MSwxNyBAQCBzdHJ1Y3QgVGV4dHVyZURlc2NyaXB0b3I7CiAKIGNsYXNz
IFJlbW90ZURldmljZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVEZXZpY2U+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZURldmljZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmlj
ZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRGV2aWNlKGRldmljZSwgb2JqZWN0SGVh
cCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNlLCBv
YmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIH5S
ZW1vdGVEZXZpY2UoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsK
KyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVEZXZpY2UoUEFM
OjpXZWJHUFU6OkRldmljZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZURldmlj
ZShQQUw6OldlYkdQVTo6RGV2aWNlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6
T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRGV2aWNlKGNvbnN0
IFJlbW90ZURldmljZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZURldmljZShSZW1vdGVEZXZpY2Um
JikgPSBkZWxldGU7CkBAIC0xMDcsNyArMTA4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExh
YmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiBtX2JhY2tpbmc7
Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNw
cAppbmRleCA2OGJjNGQ5N2I1ZjBiODdmZTkxNmJkNzA1M2NkNDNkODQ1N2E2OTdjLi45NTNkMGU0
ZDgwYTZlZjhmZGIzZDc2MTU3ZDcyY2E0NDllODQwMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRl
cm5hbFRleHR1cmUuY3BwCkBAIC0yOSwyMyArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVy
bmFsVGV4dHVyZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlRXh0ZXJuYWxUZXh0
dXJlOjpSZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYg
ZXh0ZXJuYWxUZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVF
eHRlcm5hbFRleHR1cmU6OlJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVj
dFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhleHRlcm5hbFRleHR1cmUpCisgICAgLCBt
X29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVj
dEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJl
Z2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZUV4
dGVybmFsVGV4dHVyZTo6flJlbW90ZUV4dGVybmFsVGV4dHVyZSgpCiB7CisgICAgbV9vYmplY3RS
ZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVFeHRl
cm5hbFRleHR1cmU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJB
TShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKaW5k
ZXggZGZjZGUzZDc4ZGQyM2Q1ZGQ4MDNlZTUzY2I2OTQ0YzhmOGE4NWMzZC4uMzFkMWM1NDM5OTJi
YmJiZWYxMzQ2MmJkMTAzYmI4MjhlMWZmOTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4
dHVyZS5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFj
ZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQog
CiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0
dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1v
dGVFeHRlcm5hbFRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBl
eHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUV4dGVybmFsVGV4
dHVyZShleHRlcm5hbFRleHR1cmUsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKGV4dGVybmFsVGV4dHVyZSwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVFeHRlcm5hbFRleHR1cmUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2Jq
ZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVF
eHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYpOworICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZShQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKGNvbnN0IFJl
bW90ZUV4dGVybmFsVGV4dHVyZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUV4dGVybmFsVGV4dHVy
ZShSZW1vdGVFeHRlcm5hbFRleHR1cmUmJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJH
UFU6OkV4dGVybmFsVGV4dHVyZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhl
YXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJl
Z2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQ
VUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVS5jcHAKaW5kZXggYWQ0MGY1MDViY2I0MDYzNTYzNGM5NjVmZGZhYmZhYzFiMDcyNDg5Ni4u
MzgyZjhlMzZkZmYzYzg4ODA3OWE2ZDRiZmJlZjI1MzRjYTJjNWFmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApA
QCAtMjgsMjUgKzI4LDc2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRl
ICJSZW1vdGVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1
ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUFkYXB0ZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUdQVTo6UmVtb3RlR1BVKFBBTDo6V2Vi
R1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlR1BV
OjpSZW1vdGVHUFUoUEFMOjpXZWJHUFU6OkdQVSYgZ3B1LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoZ3B1KQorICAgICwgbV9vYmpl
Y3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFw
KQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3Ry
eS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVHUFU6On5S
ZW1vdGVHUFUoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRp
Zmllcik7CiB9CiAKLXZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6
OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9y
dGVkTGltaXRzJiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVy
KGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwg
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7Ci0gICAgVU5VU0VEX1BB
UkFNKGNhbGxiYWNrKTsKKyAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKKyAgICBBU1NFUlQoY29udmVydGVkT3B0
aW9ucyk7CisgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7CisgICAgICAgIGNhbGxiYWNrKFN0
cmluZ0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2JhY2tpbmctPnJlcXVlc3RBZGFwdGVyKCpjb252ZXJ0ZWRPcHRpb25zLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRyPFdlYkdQ
VTo6T2JqZWN0SGVhcD4obV9vYmplY3RIZWFwKSwgb2JqZWN0UmVnaXN0cnkgPSBtX29iamVjdFJl
Z2lzdHJ5LCBpZGVudGlmaWVyXSAoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0
ZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtPYmplY3RIZWFwIHx8ICFhZGFwdGVyKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZhaWx1cmUgaGVyZS4KKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHJlbW90ZUFkYXB0ZXIgPSBSZW1v
dGVBZGFwdGVyOjpjcmVhdGUoKmFkYXB0ZXIsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhl
YXAsIGlkZW50aWZpZXIpOworICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90
ZUFkYXB0ZXIpOworICAgICAgICBhdXRvIG5hbWUgPSBhZGFwdGVyLT5uYW1lKCk7CisgICAgICAg
IGNvbnN0IGF1dG8mIGZlYXR1cmVzID0gYWRhcHRlci0+ZmVhdHVyZXMoKTsKKyAgICAgICAgY29u
c3QgYXV0byYgbGltaXRzID0gYWRhcHRlci0+bGltaXRzKCk7CisgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUobmFtZSksIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgeyBmZWF0dXJlcy5mZWF0dXJl
cygpIH0sIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHsKKyAgICAgICAgICAgIGxpbWl0cy5tYXhU
ZXh0dXJlRGltZW5zaW9uMUQoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5z
aW9uMkQoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QoKSwKKyAg
ICAgICAgICAgIGxpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMoKSwKKyAgICAgICAgICAgIGxp
bWl0cy5tYXhCaW5kR3JvdXBzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4RHluYW1pY1VuaWZv
cm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhEeW5h
bWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCgpLAorICAgICAgICAgICAgbGltaXRz
Lm1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMu
bWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFN0b3Jh
Z2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTdG9yYWdl
VGV4dHVyZXNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFVuaWZvcm1C
dWZmZXJzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhVbmlmb3JtQnVm
ZmVyQmluZGluZ1NpemUoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTdG9yYWdlQnVmZmVyQmlu
ZGluZ1NpemUoKSwKKyAgICAgICAgICAgIGxpbWl0cy5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxp
Z25tZW50KCksCisgICAgICAgICAgICBsaW1pdHMubWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdu
bWVudCgpLAorICAgICAgICAgICAgbGltaXRzLm1heFZlcnRleEJ1ZmZlcnMoKSwKKyAgICAgICAg
ICAgIGxpbWl0cy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4
VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhJbnRlclN0
YWdlU2hhZGVyQ29tcG9uZW50cygpLAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3Jr
Z3JvdXBTdG9yYWdlU2l6ZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVJbnZvY2F0
aW9uc1Blcldvcmtncm91cCgpLAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3Jv
dXBTaXplWCgpLAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSgp
LAorICAgICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWigpLAorICAgICAg
ICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uKCksCisgICAgICAg
IH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCmluZGV4IGU0
OTJkMjljMjU2ZGI2OTI2OGViOGNmY2VjYjE5NjY2NTJiYTM2ZjAuLmYwOWU5MjUwNDJiMWYyODc3
ZGQ3ZmE4NDIwOThhZmY5ODFjNWFiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaApAQCAtNDIsMjIgKzQyLDIzIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7
CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiB9
CiAKIGNsYXNzIFJlbW90ZUdQVSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVHUFU+IGNyZWF0ZShQQUw6Oldl
YkdQVTo6R1BVJiBncHUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZUdQVT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVKGdwdSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVHUFUoZ3B1LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVh
cCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUdQVSgpOwogCiBw
cml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBP
YmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiwgV2ViR1BV
OjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlR1BVKFBBTDo6V2ViR1BVOjpHUFUmLCBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7
CiAKICAgICBSZW1vdGVHUFUoY29uc3QgUmVtb3RlR1BVJikgPSBkZWxldGU7CiAgICAgUmVtb3Rl
R1BVKFJlbW90ZUdQVSYmKSA9IGRlbGV0ZTsKQEAgLTY2LDEwICs2NywxMiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKLSAgICB2b2lkIHJlcXVlc3RBZGFw
dGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQ
VTo6U3VwcG9ydGVkTGltaXRzJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0
IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiwgV2ViR1BVSWRlbnRpZmllciwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVz
JiYsIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiYpPiYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQ
VTo6R1BVPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RI
ZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAg
V2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUu
bWVzc2FnZXMuaW4KaW5kZXggODY1OGU3ZjVjN2NlNDE2N2NjZDM0ZDU5MWQ1YjJmMTJlZTYxN2E3
Ny4uNDcwOTEwYjkyMzVmNDExNTNhNjBlNjQwYzg3Mzg0MTRkMzJjMzlkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFUubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUdQVSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7Ci0gICAg
dm9pZCBSZXF1ZXN0QWRhcHRlcihXZWJLaXQ6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25z
IG9wdGlvbnMpIC0+IChTdHJpbmcgbmFtZSwgV2ViS2l0OjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1
cmVzIHN1cHBvcnRlZEZlYXR1cmVzLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHN1
cHBvcnRlZExpbWl0cykgU3luY2hyb25vdXMKKyAgICB2b2lkIFJlcXVlc3RBZGFwdGVyKFdlYktp
dDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChTdHJpbmcgbmFtZSwgV2ViS2l0OjpXZWJHUFU6OlN1
cHBvcnRlZEZlYXR1cmVzIHN1cHBvcnRlZEZlYXR1cmVzLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9y
dGVkTGltaXRzIHN1cHBvcnRlZExpbWl0cykgU3luY2hyb25vdXMKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBp
cGVsaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCmluZGV4IGYxMGZhZGZlNjZjNDg1MDc1ZTkxNmQ1
ODYyODYwNWNmZDU0NDNjNWYuLjZjZDhiNjc3ZDU5MTgwMmM2MjlkYjZmZDM0ODc0NzZhYTNlNmUw
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwCkBAIC0yOSwyMyArMjksMjgg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFw
LmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1SZW1vdGVQaXBlbGluZUxheW91dDo6UmVtb3RlUGlwZWxpbmVMYXlvdXQoUEFMOjpXZWJH
UFU6OlBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwKQorUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0KFBB
TDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhwaXBlbGluZUxh
eW91dCkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29i
amVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewor
ICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsK
IH0KIAogUmVtb3RlUGlwZWxpbmVMYXlvdXQ6On5SZW1vdGVQaXBlbGluZUxheW91dCgpCiB7Cisg
ICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBSZW1vdGVQaXBlbGluZUxheW91dDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFi
ZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5
b3V0LmgKaW5kZXggZGNlOWRhNTBlOTA0NDJkMTIzMjQyNTg2OGY5NDkyZGMwNWJlZmYyYS4uMjNi
Y2FlYjYwNjQxMjBiNTMyMDcyYzczNjJhODZmMGY2YzY3ZjIwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXQuaApAQCAtNDAsMjEgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIH0KIAogY2xhc3MgUmVtb3RlUGlwZWxpbmVMYXlvdXQgZmluYWwgOiBwdWJsaWMgSVBDOjpT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlw
ZWxpbmVMYXlvdXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5l
TGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxS
ZW1vdGVQaXBlbGluZUxheW91dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYg
cGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVBpcGVsaW5lTGF5
b3V0KHBpcGVsaW5lTGF5b3V0LCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0LCBvYmplY3RSZWdpc3Ry
eSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZVBpcGVsaW5lTGF5b3V0KCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhl
YXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlUGlwZWxp
bmVMYXlvdXQoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiwgV2ViR1BVOjpPYmplY3RIZWFw
Jik7CisgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0
JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlk
ZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoY29uc3QgUmVtb3RlUGlwZWxp
bmVMYXlvdXQmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVQaXBlbGluZUxheW91dChSZW1vdGVQaXBl
bGluZUxheW91dCYmKSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UGlwZWxpbmVM
YXlvdXQ+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhl
YXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0
LmNwcAppbmRleCAxMGMzYjk3OGU5MjliMzVjOWI5MDViOTJiOTQ1NGIzN2UwMmIzZTk0Li5lMGNk
MWM1YzNkN2IxNTQ1NTVkZDExODkxZDZhYjIwMDdjYWY0YTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0
LmNwcApAQCAtMjksMjcgKzI5LDMzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldC5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUXVlcnlTZXQ6OlJlbW90ZVF1ZXJ5U2V0KFBBTDo6
V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCkKK1JlbW90ZVF1ZXJ5U2V0OjpSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQm
IHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcocXVlcnlTZXQpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJl
Z2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50
aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVF1ZXJ5U2V0Ojp+UmVtb3RlUXVlcnlTZXQo
KQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgUmVtb3RlUXVlcnlTZXQ6OmRlc3Ryb3koKQogeworICAgIG1fYmFja2luZy0+ZGVz
dHJveSgpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXJ5U2V0OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJl
bCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFiZWwo
V1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlT
ZXQuaAppbmRleCAxNjUwMmViODE3NTRiNTdjYmFhMDc5NDI5YzI4ZTRkZTQ1ZTc2OTA4Li5lMTdk
NzNjMzJlZjNlZjBmMzdkNmFiZWE1NTU5MGY5ZDA1MTI2MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5o
CkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFz
cyBSZW1vdGVRdWVyeVNldCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVRdWVyeVNldD4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlF1
ZXJ5U2V0JiBxdWVyeVNldCwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnks
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVlcnlTZXQo
cXVlcnlTZXQsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlUXVlcnlTZXQocXVlcnlTZXQsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlm
aWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUXVlcnlTZXQoKTsKIAogcHJpdmF0
ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0
UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVl
cnlTZXQmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVRdWVyeVNldChjb25zdCBSZW1vdGVRdWVyeVNl
dCYpID0gZGVsZXRlOwogICAgIFJlbW90ZVF1ZXJ5U2V0KFJlbW90ZVF1ZXJ5U2V0JiYpID0gZGVs
ZXRlOwpAQCAtNjgsNyArNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5n
JiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4gbV9iYWNraW5nOwotICAgIFJl
ZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmpl
Y3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwCmluZGV4IGRhMTE2NTE4MzU1MTNlMDljYTY3
Njg2NDRiNzgwNmM4ODYzZTE0NGMuLmRlYTY0MDk4ZmE2ZDQ1Yzg1NzM5MzQ0ZTVhYTdmMGYwODIz
YjlhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVldWUuY3BwCkBAIC0yOSwyOCArMjksNDQgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVF1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVRdWV1ZTo6UmVtb3Rl
UXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwKQorUmVtb3RlUXVldWU6OlJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVl
dWUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1f
YmFja2luZyhxdWV1ZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAg
ICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9i
YWNraW5nKTsKIH0KIAogUmVtb3RlUXVldWU6On5SZW1vdGVRdWV1ZSgpCiB7CisgICAgbV9vYmpl
Y3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVR
dWV1ZTo6c3VibWl0KFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiYmIGNvbW1hbmRCdWZmZXJzKQog
ewotICAgIFVOVVNFRF9QQVJBTShjb21tYW5kQnVmZmVycyk7CisgICAgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+PiBjb252ZXJ0ZWRDb21t
YW5kQnVmZmVyczsKKyAgICBjb252ZXJ0ZWRDb21tYW5kQnVmZmVycy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGNvbW1hbmRCdWZmZXJzLnNpemUoKSk7CisgICAgZm9yIChXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIgOiBjb21tYW5kQnVmZmVycykgeworICAgICAgICBhdXRvIGNvbnZlcnRlZENv
bW1hbmRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJh
Y2tpbmcoaWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChjb252ZXJ0ZWRDb21tYW5kQnVmZmVy
KTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRDb21tYW5kQnVmZmVyKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjb252ZXJ0ZWRDb21tYW5kQnVmZmVycy51bmNoZWNrZWRBcHBlbmQoKmNv
bnZlcnRlZENvbW1hbmRCdWZmZXIpOworICAgIH0KKyAgICBtX2JhY2tpbmctPnN1Ym1pdChXVEZN
b3ZlKGNvbnZlcnRlZENvbW1hbmRCdWZmZXJzKSk7CiB9CiAKIHZvaWQgUmVtb3RlUXVldWU6Om9u
U3VibWl0dGVkV29ya0RvbmUoV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJh
Y2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBtX2JhY2tpbmctPm9uU3Vi
bWl0dGVkV29ya0RvbmUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUg
eworICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlOjp3
cml0ZUJ1ZmZlcigKQEAgLTU4LDkgKzc0LDEyIEBAIHZvaWQgUmVtb3RlUXVldWU6OndyaXRlQnVm
ZmVyKAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgYnVmZmVyT2Zmc2V0LAogICAgIFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VE
X1BBUkFNKGJ1ZmZlck9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIGF1dG8g
Y29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tp
bmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKKyAgICBpZiAoIWNvbnZl
cnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT53cml0ZUJ1ZmZl
cigqY29udmVydGVkQnVmZmVyLCBidWZmZXJPZmZzZXQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSwgMCwgc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1ZTo6d3JpdGVUZXh0dXJl
KApAQCAtNjksMTAgKzg4LDE2IEBAIHZvaWQgUmVtb3RlUXVldWU6OndyaXRlVGV4dHVyZSgKICAg
ICBjb25zdCBXZWJHUFU6OkltYWdlRGF0YUxheW91dCYgZGF0YUxheW91dCwKICAgICBjb25zdCBX
ZWJHUFU6OkV4dGVudDNEJiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhTGF5b3V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBB
U1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkRGF0YUxheW91
dCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRhdGFMYXlvdXQpOworICAg
IEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWRTaXplID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc2l6ZSk7CisgICAgQVNTRVJUKGNv
bnZlcnRlZFNpemUpOworICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRl
ZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2JhY2tpbmctPndyaXRlVGV4dHVyZSgqY29udmVydGVkRGVzdGluYXRpb24sIGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSwgKmNvbnZlcnRlZERhdGFMYXlvdXQsICpjb252ZXJ0ZWRTaXplKTsKIH0K
IAogdm9pZCBSZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoCkBAIC04MCwx
NCArMTA1LDIxIEBAIHZvaWQgUmVtb3RlUXVldWU6OmNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJl
KAogICAgIGNvbnN0IFdlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYgZGVzdGluYXRpb24s
CiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURf
UEFSQU0oY29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9vYmplY3RSZWdp
c3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVkU291
cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0RnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0
aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEZyb21CYWNraW5nKGNvcHlTaXplKTsKKyAgICBBU1NFUlQoY29udmVydGVkQ29weVNp
emUpOworICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZERlc3RpbmF0
aW9uIHx8ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNr
aW5nLT5jb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgqY29udmVydGVkU291cmNlLCAqY29udmVy
dGVkRGVzdGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlUXVl
dWU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7
CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oCmluZGV4IGRmMzAxZGFkMTU4MzNkNjE3NzMyM2Q0Y2Rj
NjI1YTNlMmJkMmFjZWEuLmE1MGFmODI0NTFmYjlmYmVkYTk3YzEwNjVlNjkzNjVmMzlmN2IzODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVF1ZXVlLmgKQEAgLTQ5LDIxICs0OSwyMiBAQCBzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVy
ZTsKIHN0cnVjdCBJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkOwogc3RydWN0IEltYWdlRGF0YUxheW91
dDsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3Mg
UmVtb3RlUXVldWUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVldWU+IGNyZWF0ZShQQUw6OldlYkdQVTo6
UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGlj
IFJlZjxSZW1vdGVRdWV1ZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlKHF1ZXVlLCBvYmplY3RIZWFwKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlKHF1ZXVlLCBvYmplY3RSZWdpc3Ry
eSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZVF1ZXVlKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAg
ZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlUXVldWUoUEFMOjpXZWJH
UFU6OlF1ZXVlJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlUXVldWUoUEFMOjpX
ZWJHUFU6OlF1ZXVlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUXVldWUoY29uc3QgUmVtb3RlUXVl
dWUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVRdWV1ZShSZW1vdGVRdWV1ZSYmKSA9IGRlbGV0ZTsK
QEAgLTk1LDcgKzk2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsK
IAogICAgIFJlZjxQQUw6OldlYkdQVTo6UXVldWU+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BV
OjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
bV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsK
KyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwCmluZGV4IDk5NDA1NzllMmQ5MGU2
YWIwMTlmMzVkMGI5NjcxNGU5MTM2ODM4ZTcuLjE3ZTBhY2Y5MDE5YzM0ZDk5ZjJiMDY3NzI4NDFk
MzVkMzhmOGM5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHAKQEAgLTI5LDIzICsy
OSwyOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVj
dEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1SZW1vdGVSZW5kZXJCdW5kbGU6OlJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCkKK1JlbW90ZVJlbmRlckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BV
OjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2Jq
ZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHJlbmRlckJ1bmRsZSkKKyAgICAsIG1f
b2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0
SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVn
aXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlUmVu
ZGVyQnVuZGxlOjp+UmVtb3RlUmVuZGVyQnVuZGxlKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRs
ZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaAppbmRleCBjZTJhYjA0ZmNiMTQ1
NjlmZWEzZGU1Yjk0ZDc5NWE0Y2Q0YmY3Mjg4Li42YjgwZDU5YmE3MjcyODIyZGUwNzZhMmE1Nzdj
NjE3ZTE4OWExY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmgKQEAgLTQwLDIxICs0MCwy
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmpl
Y3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRlckJ1
bmRsZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6
UmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2Jq
ZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlUmVuZGVyQnVuZGxlKHJlbmRlckJ1bmRsZSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGUocmVuZGVyQnVuZGxlLCBvYmplY3RS
ZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
flJlbW90ZVJlbmRlckJ1bmRsZSgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVJl
bmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiwgV2ViR1BVOjpPYmplY3RIZWFw
Jik7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmLCBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRp
Zmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJCdW5kbGUoY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxl
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlKFJlbW90ZVJlbmRlckJ1bmRsZSYm
KSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVs
KFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPiBtX2JhY2tp
bmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RI
ZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXIuY3BwCmluZGV4IGFhNjUyN2YyZmY5OTk0ODM1NTRlNTlkZjhkNDVmZGJmZWNkY2I5
YjMuLjM1YmE2NTI5ODEzMjFhYWMwYTE5YWZmNmRiYzM4Njg3ZDM3ZGE2NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcApAQCAtMjgsNDkgKzI4LDYxIEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGUu
aCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1
bmRsZUVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1
bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCkKK1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29k
ZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1f
YmFja2luZyhyZW5kZXJCdW5kbGVFbmNvZGVyKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmpl
Y3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9p
ZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjp+
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1v
dmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVsaW5lKQogewotICAg
IFVOVVNFRF9QQVJBTShyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQ
aXBlbGluZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tp
bmcocmVuZGVyUGlwZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSk7
CisgICAgaWYgKCFjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9iYWNraW5nLT5zZXRQaXBlbGluZSgqY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEluZGV4QnVmZmVyKFdlYkdQVUlk
ZW50aWZpZXIgYnVmZmVyLCBQQUw6OldlYkdQVTo6SW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQsIFBB
TDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXpl
NjQ+IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGluZGV4Rm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZm
ZXIpOworICAgIGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2JhY2tpbmctPnNldEluZGV4QnVmZmVyKCpjb252ZXJ0ZWRCdWZmZXIsIGluZGV4Rm9ybWF0LCBv
ZmZzZXQsIHNpemUpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFZl
cnRleEJ1ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBXZWJHUFVJZGVudGlmaWVyIGJ1
ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc2xvdCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNpemUpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5j
b252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVm
ZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9iYWNraW5nLT5zZXRWZXJ0ZXhCdWZmZXIoc2xvdCwgKmNvbnZlcnRlZEJ1ZmZlciwgb2Zmc2V0
LCBzaXplKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3KFBBTDo6
V2ViR1BVOjpTaXplMzIgdmVydGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VD
b3VudCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0VmVydGV4LCBQQUw6OldlYkdQVTo6
U2l6ZTMyIGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHZlcnRleENvdW50KTsK
LSAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0
VmVydGV4KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7CisgICAgbV9iYWNraW5n
LT5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0
YW5jZSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWQo
UEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3Rh
bmNlQ291bnQsCkBAIC03OCw1NiArOTAsNzAgQEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFBBTDoKICAg
ICBQQUw6OldlYkdQVTo6U2lnbmVkT2Zmc2V0MzIgYmFzZVZlcnRleCwKICAgICBQQUw6OldlYkdQ
VTo6U2l6ZTMyIGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQp
OwotICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oZmly
c3RJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJB
TShmaXJzdEluc3RhbmNlKTsKKyAgICBtX2JhY2tpbmctPmRyYXdJbmRleGVkKGluZGV4Q291bnQs
IGluc3RhbmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVjdChXZWJHUFVJ
ZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zm
c2V0KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BB
UkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIp
OworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5kcmF3
SW5kaXJlY3QoKmNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChXZWJH
UFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0
T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VE
X1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVy
ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZm
ZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252
ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5k
cmF3SW5kZXhlZEluZGlyZWN0KCpjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZz
ZXQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldEJpbmRHcm91cChQ
QUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBiaW5kR3JvdXAsCiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+
PiYmIGR5bmFtaWNPZmZzZXRzKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsK
KyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJp
bmRHcm91cEZyb21CYWNraW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRH
cm91cCk7CisgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fYmFja2luZy0+c2V0QmluZEdyb3VwKGluZGV4LCAqY29udmVydGVkQmluZEdyb3VwLCBX
VEZNb3ZlKGR5bmFtaWNPZmZzZXRzKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2Rlcjo6cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKLSAgICBVTlVTRURf
UEFSQU0oZ3JvdXBMYWJlbCk7CisgICAgbV9iYWNraW5nLT5wdXNoRGVidWdHcm91cChXVEZNb3Zl
KGdyb3VwTGFiZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpwb3BE
ZWJ1Z0dyb3VwKCkKIHsKKyAgICBtX2JhY2tpbmctPnBvcERlYnVnR3JvdXAoKTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBt
YXJrZXJMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIG1fYmFj
a2luZy0+aW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaChjb25zdCBXZWJHUFU6OlJlbmRlckJ1
bmRsZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50
aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNj
cmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gcmVuZGVyQnVuZGxlID0gbV9iYWNraW5nLT5maW5pc2goKmNvbnZlcnRlZERl
c2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlUmVuZGVyQnVuZGxlID0gUmVtb3RlUmVuZGVyQnVu
ZGxlOjpjcmVhdGUocmVuZGVyQnVuZGxlLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAs
IGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUmVuZGVyQnVu
ZGxlKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRMYWJlbChTdHJp
bmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+
c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKaW5kZXggNWJmOTg1MjIxMDQ3NzQ3
NTJhMGQ1MWQ1MzdlNmQ1NjI3YzdiOTlhYy4uZjg3YjczZTAxYzdhYTRiMWI2NmQ0YzVhNzZhYWJi
NTUzZDc3MTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKQEAg
LTQyLDIyICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgUmVuZGVy
QnVuZGxlRGVzY3JpcHRvcjsKIH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciBm
aW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxl
RW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
cihyZW5kZXJCdW5kbGVFbmNvZGVyLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIocmVuZGVyQnVuZGxlRW5jb2Rlciwg
b2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIm
LCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFBB
TDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYs
IFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcihSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyJiYpID0gZGVsZXRlOwpAQCAtOTMsNyArOTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNv
ZGVyPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFw
OworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2Vi
R1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlci5jcHAKaW5kZXggZTFjOTcyOWNlMWFkMDk1ODYzZjY1MDQzMzBmOWQ1
MjE1ZTY0NTkyYS4uOTdiODEyMzQwNzBkNjJmYThkMmMzMWQ4YzVmODE3YWQ2MjhmYzhmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTI5LDQ4ICsyOSw1OSBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQ
QUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6UmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQ
YXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIDogbV9iYWNraW5nKHJlbmRlclBhc3NFbmNvZGVyKQorICAgICwgbV9vYmplY3RSZWdpc3Ry
eShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmpl
Y3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJl
bW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRQaXBlbGluZShXZWJHUFVJZGVudGlmaWVyIHJlbmRlclBpcGVsaW5lKQogewotICAg
IFVOVVNFRF9QQVJBTShyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQ
aXBlbGluZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tp
bmcocmVuZGVyUGlwZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSk7
CisgICAgaWYgKCFjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9iYWNraW5nLT5zZXRQaXBlbGluZSgqY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihXZWJHUFVJZGVu
dGlmaWVyIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0LCBQQUw6
OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0
PiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShp
bmRleEZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNpemUpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVy
KTsKKyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9i
YWNraW5nLT5zZXRJbmRleEJ1ZmZlcigqY29udmVydGVkQnVmZmVyLCBpbmRleEZvcm1hdCwgb2Zm
c2V0LCBzaXplKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4
QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMyIHNsb3QsIFdlYkdQVUlkZW50aWZpZXIgYnVmZmVy
LCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
U2l6ZTY0PiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzbG90KTsKLSAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRCdWZmZXJGcm9tQmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIp
OworICAgIGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Jh
Y2tpbmctPnNldFZlcnRleEJ1ZmZlcihzbG90LCAqY29udmVydGVkQnVmZmVyLCBvZmZzZXQsIHNp
emUpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KFBBTDo6V2ViR1BV
OjpTaXplMzIgdmVydGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwK
ICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0VmVydGV4LCBQQUw6OldlYkdQVTo6U2l6ZTMy
IGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHZlcnRleENvdW50KTsKLSAgICBV
TlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0VmVydGV4
KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7CisgICAgbV9iYWNraW5nLT5kcmF3
KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKFBBTDo6V2Vi
R1BVOjpTaXplMzIgaW5kZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUzMiBpbnN0YW5jZUNvdW50
LApAQCAtNzgsMTA5ICs4OSwxMzAgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJh
d0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6OlcKICAgICBQQUw6
OldlYkdQVTo6U2lnbmVkT2Zmc2V0MzIgYmFzZVZlcnRleCwKICAgICBQQUw6OldlYkdQVTo6U2l6
ZTMyIGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQpOwotICAg
IFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbmRl
eCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2VWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJz
dEluc3RhbmNlKTsKKyAgICBtX2JhY2tpbmctPmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3Rh
bmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwogfQogCiB2
b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kaXJlY3QoV2ViR1BVSWRlbnRpZmll
ciBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsK
LSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRp
cmVjdE9mZnNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBB
U1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOworICAgIGlmICghY29udmVydGVkSW5kaXJl
Y3RCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+ZHJhd0luZGlyZWN0
KCpjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KFdlYkdQVUlkZW50aWZp
ZXIgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5k
aXJlY3RCdWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAg
QVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGly
ZWN0QnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPmRyYXdJbmRleGVk
SW5kaXJlY3QoKmNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6
SW5kZXgzMiBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNP
ZmZzZXRzKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJp
bmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsKKyAgICBhdXRvIGNv
bnZlcnRlZEJpbmRHcm91cCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJpbmRHcm91cEZyb21C
YWNraW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CisgICAg
aWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2lu
Zy0+c2V0QmluZEdyb3VwKGluZGV4LCAqY29udmVydGVkQmluZEdyb3VwLCBXVEZNb3ZlKGR5bmFt
aWNPZmZzZXRzKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnB1c2hEZWJ1
Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFi
ZWwpOworICAgIG1fYmFja2luZy0+cHVzaERlYnVnR3JvdXAoV1RGTW92ZShncm91cExhYmVsKSk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnBvcERlYnVnR3JvdXAoKQogewor
ICAgIG1fYmFja2luZy0+cG9wRGVidWdHcm91cCgpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKLSAg
ICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIG1fYmFja2luZy0+aW5zZXJ0RGVidWdN
YXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyOjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LAogICAgIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsCiAgICAgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQogewotICAg
IFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0obWlu
RGVwdGgpOwotICAgIFVOVVNFRF9QQVJBTShtYXhEZXB0aCk7CisgICAgbV9iYWNraW5nLT5zZXRW
aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBtaW5EZXB0aCwgbWF4RGVwdGgpOwogfQogCiB2
b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTY2lzc29yUmVjdChQQUw6OldlYkdQVTo6
SW50ZWdlckNvb3JkaW5hdGUgeCwgUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIHksCiAg
ICAgUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIHdpZHRoLCBQQUw6OldlYkdQVTo6SW50
ZWdlckNvb3JkaW5hdGUgaGVpZ2h0KQogewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVT
RURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0o
aGVpZ2h0KTsKKyAgICBtX2JhY2tpbmctPnNldFNjaXNzb3JSZWN0KHgsIHksIHdpZHRoLCBoZWln
aHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRCbGVuZENvbnN0YW50
KFdlYkdQVTo6Q29sb3IgY29sb3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbG9yKTsKKyAgICBh
dXRvIGNvbnZlcnRlZENvbG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmco
Y29sb3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWRDb2xvcik7CisgICAgaWYgKCFjb252ZXJ0ZWRD
b2xvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5zZXRCbGVuZENvbnN0YW50
KCpjb252ZXJ0ZWRDb2xvcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNl
dFN0ZW5jaWxSZWZlcmVuY2UoUEFMOjpXZWJHUFU6OlN0ZW5jaWxWYWx1ZSBzdGVuY2lsVmFsdWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0ZW5jaWxWYWx1ZSk7CisgICAgbV9iYWNraW5nLT5zZXRT
dGVuY2lsUmVmZXJlbmNlKHN0ZW5jaWxWYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI6OmJlZ2luT2NjbHVzaW9uUXVlcnkoUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUlu
ZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBtX2JhY2tpbmctPmJl
Z2luT2NjbHVzaW9uUXVlcnkocXVlcnlJbmRleCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI6OmVuZE9jY2x1c2lvblF1ZXJ5KCkKIHsKKyAgICBtX2JhY2tpbmctPmVuZE9jY2x1
c2lvblF1ZXJ5KCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkoV2ViR1BVSWRlbnRpZmllciBxdWVyeVNldCwgUEFMOjpXZWJH
UFU6OlNpemUzMiBxdWVyeUluZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQg
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHF1ZXJ5U2V0KTsK
KyAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOworICAgIGlmICghY29udmVydGVkUXVlcnlT
ZXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+YmVnaW5QaXBlbGluZVN0YXRp
c3RpY3NRdWVyeSgqY29udmVydGVkUXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCiB7Cisg
ICAgbV9iYWNraW5nLT5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8V2ViR1BVSWRlbnRp
Zmllcj4mJiByZW5kZXJCdW5kbGVzKQogewotICAgIFVOVVNFRF9QQVJBTShyZW5kZXJCdW5kbGVz
KTsKKyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVy
QnVuZGxlPj4gY29udmVydGVkQnVuZGxlczsKKyAgICBjb252ZXJ0ZWRCdW5kbGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocmVuZGVyQnVuZGxlcy5zaXplKCkpOworICAgIGZvciAoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyIDogcmVuZGVyQnVuZGxlcykgeworICAgICAgICBhdXRvIGNvbnZl
cnRlZEJ1bmRsZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNr
aW5nKGlkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoY29udmVydGVkQnVuZGxlKTsKKyAgICAg
ICAgaWYgKCFjb252ZXJ0ZWRCdW5kbGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNv
bnZlcnRlZEJ1bmRsZXMudW5jaGVja2VkQXBwZW5kKCpjb252ZXJ0ZWRCdW5kbGUpOworICAgIH0K
KyAgICBtX2JhY2tpbmctPmV4ZWN1dGVCdW5kbGVzKFdURk1vdmUoY29udmVydGVkQnVuZGxlcykp
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjplbmRQYXNzKCkKIHsKKyAgICBt
X2JhY2tpbmctPmVuZFBhc3MoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAg
ICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggYjkzZjY4
OWUzMjlmZDY1NjE4OTY1NDhhZDFhMTQ5OGMyMTEwOTkxYS4uZmI2ZDNkYjU5YTkzMjE0YWQ4ZDQw
NGZkYWRjNWRjNzFhOTNlYWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIu
aApAQCAtNDMsMjEgKzQzLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2Vi
R1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xh
c3MgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NF
bmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5j
b2RlciYgcmVuZGVyUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJl
Z2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyKHJlbmRlclBhc3NFbmNvZGVyLCBvYmplY3RIZWFwKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKHJlbmRlclBhc3NF
bmNvZGVyLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0K
IAogICAgIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVu
ZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAot
ICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rl
ciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKFBB
TDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyKGNvbnN0IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImJikgPSBk
ZWxldGU7CkBAIC0xMTAsNyArMTExLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+IG1fYmFj
a2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVj
dEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5l
LmNwcAppbmRleCAzYTQwYTkwMzY0OTkxZWM2NGRkMzBiNDBkZGJlNzZiYmU5N2YxNzUyLi41YzFm
Y2NkMGY0MzdmNTA3ZmIzMzc4NTExMDI4MGZlNjA2MGViMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJl
bmRlclBpcGVsaW5lLmNwcApAQCAtMjgsMzAgKzI4LDM3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCIKICNpbmNsdWRlICJX
ZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJQaXBlbGluZTo6UmVtb3RlUmVuZGVyUGlw
ZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlUmVuZGVyUGlwZWxpbmU6OlJlbW90ZVJl
bmRlclBpcGVsaW5lKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUs
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFj
a2luZyhyZW5kZXJQaXBlbGluZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0
cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmll
ciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlUmVuZGVyUGlwZWxpbmU6On5SZW1vdGVSZW5kZXJQ
aXBlbGluZSgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0
KHVpbnQzMl90IGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0
byBiaW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmdldEJpbmRHcm91cExheW91dChpbmRleCk7
CisgICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6
OmNyZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVCaW5kR3JvdXBM
YXlvdXQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBpcGVsaW5lOjpzZXRMYWJlbChTdHJpbmcm
JiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+c2V0
TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGlwZWxpbmUuaAppbmRleCBmZGU4OGZjYWU2OTUxODA1OGMyNGY5ZDFlZDc3
Mjk1MjFjZTk5OGMxLi5iYzZiOTY1NzVkY2NkM2JmOWMwNmMyODkyMWNmOTVkNjBjODY2NTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2Ns
YXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVSZW5kZXJQaXBlbGluZSBmaW5h
bCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQ
aXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkK
KyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6
OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
b2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmUsIG9iamVjdEhlYXApKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxp
bmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAK
LSAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6OldlYkdQ
VTo6UmVuZGVyUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShj
b25zdCBSZW1vdGVSZW5kZXJQaXBlbGluZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBp
cGVsaW5lKFJlbW90ZVJlbmRlclBpcGVsaW5lJiYpID0gZGVsZXRlOwpAQCAtNjgsNyArNjksOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6
V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVj
dEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVj
dFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVTYW1wbGVyLmNwcAppbmRleCAwYjI0NmM4YzU2MGE3NzJhYmFlZTgwNGM2MWQ1NTg4
YTA3NjU2ZDFiLi5hNzZiNjk0NWQ1NzgzZmYwMGM4OTc5NWVkNDIzYzUyYjAwYzA0YmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNh
bXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlU2FtcGxlci5jcHAKQEAgLTI5LDIzICsyOSwyOCBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVP
YmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2Ft
cGxlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlU2FtcGxlcjo6UmVtb3RlU2Ft
cGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwKQorUmVtb3RlU2FtcGxlcjo6UmVtb3RlU2FtcGxlcihQQUw6OldlYkdQVTo6U2Ft
cGxlciYgc2FtcGxlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIDogbV9iYWNraW5nKHNhbXBsZXIpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVj
dFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lk
ZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVNhbXBsZXI6On5SZW1vdGVTYW1wbGVy
KCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwog
fQogCiB2b2lkIFJlbW90ZVNhbXBsZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAg
IFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxh
YmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaAppbmRleCAw
OGM5NzFlMTA2OWExYTY2NzVkOWMzYjI4NWQxNmE2ZmU3MTdlMmM0Li5hYzkwMzhhNWI5Y2E4N2Vj
YmY1YmZlNDFmODc0NjA0M2UwMDBjYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuaApAQCAtNDAsMjEgKzQw
LDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9i
amVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlU2FtcGxl
ciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNhbXBsZXIm
IHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVm
PFJlbW90ZVNhbXBsZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2Vi
R1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2FtcGxlcihzYW1wbGVyLCBvYmplY3RIZWFwKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZXIoc2FtcGxlciwgb2Jq
ZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIH5SZW1vdGVTYW1wbGVyKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVj
dEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlU2Ft
cGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJl
bW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVT
YW1wbGVyKGNvbnN0IFJlbW90ZVNhbXBsZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVTYW1wbGVy
KFJlbW90ZVNhbXBsZXImJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlNhbXBs
ZXI+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7
CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJH
UFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJN
b2R1bGUuY3BwCmluZGV4IDk3ZWYwOTNkNzc5YWE3NzFkZWRmZWNlODFlNThlZjg0N2U4ZGM0NGQu
LjQ1YWMwZDNmNzM2NWMxOWI1NDg4Y2MxZGQwOTRkMjJhMTQ3ZTAzNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVNoYWRlck1vZHVsZS5jcHAKQEAgLTI5LDI4ICsyOSw0NyBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVP
YmplY3RSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29t
cGlsYXRpb25JbmZvLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21w
aWxhdGlvbk1lc3NhZ2UuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNo
YWRlck1vZHVsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlU2hhZGVyTW9kdWxl
OjpSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9k
dWxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVTaGFkZXJNb2R1bGU6
OlJlbW90ZVNoYWRlck1vZHVsZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1
bGUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1f
YmFja2luZyhzaGFkZXJNb2R1bGUpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lz
dHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZp
ZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVNoYWRlck1vZHVsZTo6flJlbW90ZVNoYWRlck1v
ZHVsZSgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBSZW1vdGVTaGFkZXJNb2R1bGU6OmNvbXBpbGF0aW9uSW5mbyhXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkdQVTo6Q29tcGlsYXRpb25NZXNzYWdlPiYm
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIG1fYmFj
a2luZy0+Y29tcGlsYXRpb25JbmZvKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUmVm
PFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbkluZm8+JiYgY29tcGlsYXRpb25NZXNzYWdlKSBtdXRh
YmxlIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRNZXNzYWdlcyA9IGNvbXBpbGF0aW9uTWVzc2Fn
ZS0+bWVzc2FnZXMoKS5tYXAoW10gKGNvbnN0IFJlZjxQQUw6OldlYkdQVTo6Q29tcGlsYXRpb25N
ZXNzYWdlPiYgbWVzc2FnZSkgeworICAgICAgICAgICAgcmV0dXJuIFdlYkdQVTo6Q29tcGlsYXRp
b25NZXNzYWdlIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlLT5tZXNzYWdlKCksCisgICAgICAg
ICAgICAgICAgbWVzc2FnZS0+dHlwZSgpLAorICAgICAgICAgICAgICAgIG1lc3NhZ2UtPmxpbmVO
dW0oKSwKKyAgICAgICAgICAgICAgICBtZXNzYWdlLT5saW5lUG9zKCksCisgICAgICAgICAgICAg
ICAgbWVzc2FnZS0+b2Zmc2V0KCksCisgICAgICAgICAgICAgICAgbWVzc2FnZS0+bGVuZ3RoKCks
CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShj
b252ZXJ0ZWRNZXNzYWdlcykpOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZVNoYWRlck1vZHVs
ZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaAppbmRleCA2YTEyMGMwYjUzODA5
MWJhNzRkZmY0MTAzMGExZmM5NGQ5ZTNiOTQyLi5mOTdmMDE5NmJiMDY3ZWRiY2I5MjM1Y2RlYzEw
NjRlYzM0MTY3MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKQEAgLTQzLDIxICs0Mywy
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmpl
Y3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVNoYWRlck1v
ZHVsZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6
U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVsZT4gY3JlYXRlKFBBTDo6V2ViR1BV
OjpTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2Jq
ZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlU2hhZGVyTW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTaGFkZXJNb2R1bGUoc2hhZGVyTW9kdWxlLCBvYmplY3RS
ZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
flJlbW90ZVNoYWRlck1vZHVsZSgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVNo
YWRlck1vZHVsZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiwgV2ViR1BVOjpPYmplY3RIZWFw
Jik7CisgICAgUmVtb3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmLCBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRp
Zmllcik7CiAKICAgICBSZW1vdGVTaGFkZXJNb2R1bGUoY29uc3QgUmVtb3RlU2hhZGVyTW9kdWxl
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2hhZGVyTW9kdWxlKFJlbW90ZVNoYWRlck1vZHVsZSYm
KSA9IGRlbGV0ZTsKQEAgLTcxLDcgKzcyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVs
KFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiBtX2JhY2tp
bmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RI
ZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCmluZGV4IGY0MTRk
MmY5MjY2YjViYzAwZTRiZjU2YTZhN2YxMzEzZTI0MjIwNDQuLmEwMWY0MmQwMDllZTUyNmQxODY4
NzYwNTQ4NmEwNDQyZmE1N2Q0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcApAQCAtMjgsMzUgKzI4
LDU0IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVUZXh0
dXJlVmlldy5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJH
UFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KKyNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVyZShQQUw6Oldl
YkdQVTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQor
UmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVy
ZSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9i
YWNraW5nKHRleHR1cmUpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQog
ICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1f
YmFja2luZyk7CiB9CiAKIFJlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKCkKIHsKKyAgICBt
X29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZVRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OlRleHR1
cmVWaWV3RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlk
ZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3RGVz
Y3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKKyAgICBpZiAoZGVzY3JpcHRvcikgeworICAg
ICAgICBhdXRvIHJlc3VsdERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIEFTU0VSVChyZXN1bHREZXNjcmlwdG9yKTsK
KyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVzY3JpcHRvcik7
CisgICAgICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gdGV4dHVy
ZVZpZXcgPSBtX2JhY2tpbmctPmNyZWF0ZVZpZXcoKmNvbnZlcnRlZERlc2NyaXB0b3IpOworICAg
IGF1dG8gcmVtb3RlVGV4dHVyZVZpZXcgPSBSZW1vdGVUZXh0dXJlVmlldzo6Y3JlYXRlKHRleHR1
cmVWaWV3LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAg
IG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlVGV4dHVyZVZpZXcpOwogfQogCiB2b2lkIFJl
bW90ZVRleHR1cmU6OmRlc3Ryb3koKQogeworICAgIG1fYmFja2luZy0+ZGVzdHJveSgpOwogfQog
CiB2b2lkIFJlbW90ZVRleHR1cmU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVO
VVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVs
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaAppbmRleCA4ZDM1
ZWQyNDg5ZjU3NjNhYWYyOGYwNmU0ZWY4NzRhNWUwNjJkMmU3Li5kZmVjZjlkYWY3MDkxZTg5ODBl
OTNmZjBlNmNhYzBlNjUwYWE4NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaApAQCAtNDAsMjIgKzQwLDIz
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVj
dEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBUZXh0dXJlVmlld0Rlc2NyaXB0
b3I7CiB9CiAKIGNsYXNzIFJlbW90ZVRleHR1cmUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZT4g
Y3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0ZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlPiBjcmVhdGUoUEFMOjpX
ZWJHUFU6OlRleHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJl
Z2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRl
eHR1cmUodGV4dHVyZSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVUZXh0dXJlKHRleHR1cmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVu
dGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZSgpOwogCiBwcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUmLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVUZXh0dXJlKFBBTDo6V2ViR1BVOjpUZXh0
dXJlJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQ
VUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlVGV4dHVyZShjb25zdCBSZW1vdGVUZXh0dXJlJikg
PSBkZWxldGU7CiAgICAgUmVtb3RlVGV4dHVyZShSZW1vdGVUZXh0dXJlJiYpID0gZGVsZXRlOwpA
QCAtNzEsNyArNzIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwog
CiAgICAgUmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQ
VTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkm
IG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7
CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKaW5kZXggMTFhNGE3ODYzNmFmYmUx
YWJiZGIyNjM4NWJjZjg4ODg1MTE1MmNmMy4uYmU4NjNkZjVmNjQyYjg0YzEwMDcyNGY4MDdhNjY4
YjFmM2FlY2M1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5jcHAKQEAgLTI5LDIzICsyOSwy
OCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhl
YXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVJlbW90ZVRleHR1cmVWaWV3OjpSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4
dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitS
ZW1vdGVUZXh0dXJlVmlldzo6UmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVW
aWV3JiB0ZXh0dXJlVmlldywgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnks
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKHRleHR1cmVWaWV3KQorICAgICwgbV9vYmplY3RSZWdpc3Ry
eShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmpl
Y3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVUZXh0dXJlVmlldzo6flJl
bW90ZVRleHR1cmVWaWV3KCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdCht
X2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHR1cmVWaWV3OjpzZXRMYWJlbChTdHJp
bmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+
c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
VGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlVGV4dHVyZVZpZXcuaAppbmRleCAwMDA1ZmNhZGJlNDc3MThkZDlkMDlhZDQzOTQ5NjFk
NzM1MGRkZDJmLi40Njg3YzNiODMzOTlmNDM2NjRkOTIxMmZmM2E4Nzg0NDM5Y2JmNmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRl
eHR1cmVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVUZXh0dXJlVmlldy5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVj
dFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVUZXh0dXJlVmlldyBmaW5hbCA6IHB1YmxpYyBJ
UEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1v
dGVUZXh0dXJlVmlldz4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZp
ZXcsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVRleHR1cmVWaWV3PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmll
dywgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZpZXcodGV4dHVyZVZpZXcs
IG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVy
ZVZpZXcodGV4dHVyZVZpZXcsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVy
KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZVZpZXcoKTsKIAogcHJpdmF0
ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0
UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZp
ZXcmLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6Oldl
YkdQVTo6VGV4dHVyZVZpZXcmLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVUZXh0dXJlVmlldyhjb25z
dCBSZW1vdGVUZXh0dXJlVmlldyYpID0gZGVsZXRlOwogICAgIFJlbW90ZVRleHR1cmVWaWV3KFJl
bW90ZVRleHR1cmVWaWV3JiYpID0gZGVsZXRlOwpAQCAtNjYsNyArNjcsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpUZXh0
dXJlVmlldz4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0
SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAg
IFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmpl
Y3RIZWFwLmNwcAppbmRleCAwOTEyMjE5NGVjYzdlZjY5MGYwNjI3Yzg4YWQyOTRlNTM5M2E3MzM1
Li5kMGEwZWMzMDk0MjgwNTI1NDlkMzIxMjFkODQ5ZWY0Yzg5ZTBmNWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
T2JqZWN0SGVhcC5jcHAKQEAgLTI4LDI4ICsyOCwyOCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCi0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KLSNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUFkYXB0ZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVCdWZmZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNv
bW1hbmRFbmNvZGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21w
dXRlUGFzc0VuY29kZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNv
bXB1dGVQaXBlbGluZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2
aWNlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1
cmUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0
Lmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldC5oPgotI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaD4KLSNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2Rlci5oPgotI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaD4KLSNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lLmg+Ci0jaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1wbGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVTaGFkZXJNb2R1bGUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVRleHR1cmUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRl
eHR1cmVWaWV3Lmg+CisjaW5jbHVkZSAiUmVtb3RlQWRhcHRlci5oIgorI2luY2x1ZGUgIlJlbW90
ZUJpbmRHcm91cC5oIgorI2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91cExheW91dC5oIgorI2luY2x1
ZGUgIlJlbW90ZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRCdWZmZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2Rlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlci5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGluZS5oIgorI2luY2x1
ZGUgIlJlbW90ZURldmljZS5oIgorI2luY2x1ZGUgIlJlbW90ZUV4dGVybmFsVGV4dHVyZS5oIgor
I2luY2x1ZGUgIlJlbW90ZUdQVS5oIgorI2luY2x1ZGUgIlJlbW90ZVBpcGVsaW5lTGF5b3V0Lmgi
CisjaW5jbHVkZSAiUmVtb3RlUXVlcnlTZXQuaCIKKyNpbmNsdWRlICJSZW1vdGVRdWV1ZS5oIgor
I2luY2x1ZGUgIlJlbW90ZVJlbmRlckJ1bmRsZS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlclBpcGVsaW5lLmgiCisjaW5jbHVkZSAiUmVtb3RlU2FtcGxlci5o
IgorI2luY2x1ZGUgIlJlbW90ZVNoYWRlck1vZHVsZS5oIgorI2luY2x1ZGUgIlJlbW90ZVRleHR1
cmUuaCIKKyNpbmNsdWRlICJSZW1vdGVUZXh0dXJlVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogCkBAIC02MSwxODAgKzYxLDI2OCBAQCBPYmplY3RIZWFwOjp+T2JqZWN0SGVh
cCgpCiB7CiB9CiAKLVBBTDo6V2ViR1BVOjpBZGFwdGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0QWRh
cHRlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0
SGVhcDo6YWRkT2JqZWN0KFJlbW90ZUFkYXB0ZXImIGFkYXB0ZXIpCiB7Ci0gICAgYXV0byBpdGVy
YXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBt
X29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BV
OjpBZGFwdGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6QWRhcHRlcj4+KGl0ZXJhdG9yLT52
YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZhZGFwdGVyLCBh
ZGFwdGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwog
fQogCi1QQUw6OldlYkdQVTo6QmluZEdyb3VwKiBPYmplY3RIZWFwOjpjb252ZXJ0QmluZEdyb3Vw
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFw
OjphZGRPYmplY3QoUmVtb3RlQmluZEdyb3VwJiBiaW5kR3JvdXApCiB7Ci0gICAgYXV0byBpdGVy
YXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBt
X29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BV
OjpCaW5kR3JvdXA+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXA+PihpdGVyYXRv
ci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmYmluZEdy
b3VwLCBiaW5kR3JvdXApOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIE9iamVjdEhlYXA6OmNv
bnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQmIGJp
bmRHcm91cExheW91dCkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0ZXJh
dG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Omdl
dDxSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRy
KCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZiaW5kR3JvdXBMYXlvdXQsIGJp
bmRHcm91cExheW91dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkJ1ZmZlciogT2JqZWN0SGVhcDo6Y29udmVydEJ1ZmZl
ckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVh
cDo6YWRkT2JqZWN0KFJlbW90ZUJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6QnVm
ZmVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKS5w
dHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmJ1ZmZlciwgYnVmZmVyKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6
OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogT2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRCdWZmZXJG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6
OmFkZE9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQogewotICAgIGF1
dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0
b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6
OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRC
dWZmZXI+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZCgmY29tbWFuZEJ1ZmZlciwgY29tbWFuZEJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkNvbW1hbmRF
bmNvZGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1v
dGVDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpDb21t
YW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPj4oaXRl
cmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmNv
bW1hbmRFbmNvZGVyLCBjb21tYW5kRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rl
ciogT2JqZWN0SGVhcDo6Y29udmVydENvbXB1dGVQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyKQogewotICAgIGF1dG8gaXRl
cmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBh
c3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoJmNvbXB1dGVQYXNzRW5jb2RlciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tcHV0ZVBpcGVsaW5l
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFw
OjphZGRPYmplY3QoUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCiB7Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChp
dGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpD
b21wdXRlUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZCgmY29tcHV0ZVBpcGVsaW5lLCBjb21wdXRlUGlwZWxpbmUpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2Vi
R1BVOjpEZXZpY2UqIE9iamVjdEhlYXA6OmNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVE
ZXZpY2UmIGRldmljZSkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1
ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFM
OjpXZWJHUFU6OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1
bHQgPSBtX29iamVjdHMuYWRkKCZkZXZpY2UsIGRldmljZSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4
dHVyZSogT2JqZWN0SGVhcDo6Y29udmVydEV4dGVybmFsVGV4dHVyZUZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90
ZUV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlKQogewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6RXh0
ZXJuYWxUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPj4o
aXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
JmV4dGVybmFsVGV4dHVyZSwgZXh0ZXJuYWxUZXh0dXJlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6R1BVKiBPYmplY3RI
ZWFwOjpjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
dm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlR1BVJiBncHUpCiB7Ci0gICAgYXV0byBp
dGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9
PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2Vi
R1BVOjpHUFU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpHUFU+PihpdGVyYXRvci0+dmFsdWUp
LnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmZ3B1LCBncHUpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2Vi
R1BVOjpQaXBlbGluZUxheW91dCogT2JqZWN0SGVhcDo6Y29udmVydFBpcGVsaW5lTGF5b3V0RnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjph
ZGRPYmplY3QoUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0KQogewotICAgIGF1
dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0
b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6
OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpQaXBlbGlu
ZUxheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29i
amVjdHMuYWRkKCZwaXBlbGluZUxheW91dCwgcGlwZWxpbmVMYXlvdXQpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpRdWVy
eVNldCogT2JqZWN0SGVhcDo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUXVlcnlT
ZXQmIHF1ZXJ5U2V0KQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVu
dGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+PihpdGVyYXRvci0+dmFs
dWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBB
TDo6V2ViR1BVOjpRdWVyeVNldD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKCZxdWVyeVNldCwgcXVlcnlTZXQpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpRdWV1
ZSogT2JqZWN0SGVhcDo6Y29udmVydFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUXVldWUmIHF1ZXVl
KQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxQQUw6OldlYkdQVTo6UXVldWU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpRdWV1
ZT4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKCZxdWV1ZSwgcXVldWUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyKiBPYmplY3RI
ZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVj
dHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5j
b2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKCZyZW5kZXJCdW5kbGVFbmNvZGVyLCByZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlKiBPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmpl
Y3QoUmVtb3RlUmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUpCiB7Ci0gICAgYXV0byBpdGVyYXRv
ciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29i
amVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpS
ZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+PihpdGVy
YXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcmVu
ZGVyQnVuZGxlLCByZW5kZXJCdW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciogT2Jq
ZWN0SGVhcDo6Y29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3Rz
LmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6UmVuZGVy
UGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRk
KCZyZW5kZXJQYXNzRW5jb2RlciwgcmVuZGVyUGFzc0VuY29kZXIpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpSZW5kZXJQ
aXBlbGluZSogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVt
b3RlUmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQogewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6UmVu
ZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4+KGl0
ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZy
ZW5kZXJQaXBlbGluZSwgcmVuZGVyUGlwZWxpbmUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpTYW1wbGVyKiBPYmplY3RI
ZWFwOjpjb252ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVNhbXBsZXImIHNhbXBsZXIpCiB7
Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFBBTDo6V2ViR1BVOjpTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6U2FtcGxl
cj4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKCZzYW1wbGVyLCBzYW1wbGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBPYmplY3RIZWFw
Ojpjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlU2hhZGVyTW9kdWxlJiBzaGFk
ZXJNb2R1bGUpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZp
ZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFs
dWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBB
TDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmc2hhZGVyTW9kdWxlLCBzaGFkZXJNb2R1bGUpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6
V2ViR1BVOjpUZXh0dXJlKiBPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJl
bW90ZVRleHR1cmUmIHRleHR1cmUpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5m
aW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwg
IXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlPj4oaXRlcmF0
b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0
PFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZ0ZXh0dXJlLCB0ZXh0dXJlKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6
VGV4dHVyZVZpZXcqIE9iamVjdEhlYXA6OmNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJl
bW90ZVRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldykKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
YmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5l
bmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmVW
aWV3Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+PihpdGVyYXRvci0+dmFs
dWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmdGV4dHVyZVZpZXcs
IHRleHR1cmVWaWV3KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVBZGFwdGVyJiBh
ZGFwdGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYWRhcHRlcik7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVh
cDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUJpbmRHcm91cCYgYmluZEdyb3VwKQoreworICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmYmluZEdyb3VwKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVt
b3RlQmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQpCit7CisgICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMucmVtb3ZlKCZiaW5kR3JvdXBMYXlvdXQpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1v
dGVCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUo
JmJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQg
T2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZm
ZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21tYW5kQnVmZmVy
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RI
ZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyKQor
eworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tbWFuZEVuY29kZXIpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6
OnJlbW92ZU9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2Rl
cikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbXB1dGVQYXNzRW5j
b2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2Jq
ZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVs
aW5lKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tcHV0ZVBpcGVs
aW5lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmpl
Y3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlRGV2aWNlJiBkZXZpY2UpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZkZXZpY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVF
eHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5yZW1vdmUoJmV4dGVybmFsVGV4dHVyZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUdQ
VSYgZ3B1KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmZ3B1KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpy
ZW1vdmVPYmplY3QoUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0KQoreworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcGlwZWxpbmVMYXlvdXQpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVRdWVyeVNldCYgcXVlcnlTZXQpCit7CisgICAgYXV0byByZXN1bHQgPSBt
X29iamVjdHMucmVtb3ZlKCZxdWVyeVNldCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXVlJiBx
dWV1ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnF1ZXVlKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpy
ZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2Rl
cikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlckJ1bmRsZUVu
Y29kZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9i
amVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSkK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlckJ1bmRsZSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6
cmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlcikK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlclBhc3NFbmNvZGVy
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RI
ZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQor
eworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmcmVuZGVyUGlwZWxpbmUpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6
OnJlbW92ZU9iamVjdChSZW1vdGVTYW1wbGVyJiBzYW1wbGVyKQoreworICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLnJlbW92ZSgmc2FtcGxlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVNoYWRl
ck1vZHVsZSYgc2hhZGVyTW9kdWxlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJl
bW92ZSgmc2hhZGVyTW9kdWxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
K30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZSYgdGV4dHVy
ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnRleHR1cmUpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJl
bW92ZU9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZ0ZXh0dXJlVmlldyk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VU9iamVjdEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVT2JqZWN0SGVhcC5oCmluZGV4IDlkOGZhMTA0NDczNTU1M2Y5NDU2ZTE1N2MzZmM1OTEx
OWYzNGY4ZWMuLmExNmNkMjY2OTgxMzc3Y2E5MThlNTEwYjY4ZmM4NWYzOGU0MTlkOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2Jq
ZWN0SGVhcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVT2JqZWN0SGVhcC5oCkBAIC0yNyw3NCArMjcsMTIwIEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKLSNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Lmgi
Ci0jaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx2YXJpYW50PgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgUmVtb3RlQWRhcHRlcjsK
K2NsYXNzIFJlbW90ZUJpbmRHcm91cDsKK2NsYXNzIFJlbW90ZUJpbmRHcm91cExheW91dDsKK2Ns
YXNzIFJlbW90ZUJ1ZmZlcjsKK2NsYXNzIFJlbW90ZUNvbW1hbmRCdWZmZXI7CitjbGFzcyBSZW1v
dGVDb21tYW5kRW5jb2RlcjsKK2NsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcjsKK2NsYXNz
IFJlbW90ZUNvbXB1dGVQaXBlbGluZTsKK2NsYXNzIFJlbW90ZURldmljZTsKK2NsYXNzIFJlbW90
ZUV4dGVybmFsVGV4dHVyZTsKK2NsYXNzIFJlbW90ZUdQVTsKK2NsYXNzIFJlbW90ZVBpcGVsaW5l
TGF5b3V0OworY2xhc3MgUmVtb3RlUXVlcnlTZXQ7CitjbGFzcyBSZW1vdGVRdWV1ZTsKK2NsYXNz
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI7CitjbGFzcyBSZW1vdGVSZW5kZXJCdW5kbGU7Citj
bGFzcyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcjsKK2NsYXNzIFJlbW90ZVJlbmRlclBpcGVsaW5l
OworY2xhc3MgUmVtb3RlU2FtcGxlcjsKK2NsYXNzIFJlbW90ZVNoYWRlck1vZHVsZTsKK2NsYXNz
IFJlbW90ZVRleHR1cmU7CitjbGFzcyBSZW1vdGVUZXh0dXJlVmlldzsKK30KIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIAotY2xhc3MgT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBXZWJH
UFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQgeworY2xhc3MgT2JqZWN0SGVhcCBmaW5hbCA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxPYmplY3RIZWFwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxPYmplY3RIZWFwPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgT2JqZWN0SGVhcCgpKTsKLSAgICB9Ci0KKyAgICBPYmplY3RIZWFwKCk7CiAgICAgfk9i
amVjdEhlYXAoKTsKIAotcHJpdmF0ZToKLSAgICBPYmplY3RIZWFwKCk7CisgICAgdm9pZCBhZGRP
YmplY3QoUmVtb3RlQWRhcHRlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91
cCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUJpbmRHcm91cExheW91dCYpOworICAgIHZv
aWQgYWRkT2JqZWN0KFJlbW90ZUJ1ZmZlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUNv
bW1hbmRCdWZmZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21tYW5kRW5jb2RlciYp
OworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYpOworICAgIHZv
aWQgYWRkT2JqZWN0KFJlbW90ZUNvbXB1dGVQaXBlbGluZSYpOworICAgIHZvaWQgYWRkT2JqZWN0
KFJlbW90ZURldmljZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUV4dGVybmFsVGV4dHVy
ZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUdQVSYpOworICAgIHZvaWQgYWRkT2JqZWN0
KFJlbW90ZVBpcGVsaW5lTGF5b3V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUXVlcnlT
ZXQmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVRdWV1ZSYpOworICAgIHZvaWQgYWRkT2Jq
ZWN0KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1v
dGVSZW5kZXJCdW5kbGUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJQYXNzRW5j
b2RlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5lJik7CisgICAg
dm9pZCBhZGRPYmplY3QoUmVtb3RlU2FtcGxlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90
ZVNoYWRlck1vZHVsZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVRleHR1cmUmKTsKKyAg
ICB2b2lkIGFkZE9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYpOwogCi0gICAgUEFMOjpXZWJHUFU6
OkFkYXB0ZXIqIGNvbnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCogY29udmVydEJpbmRHcm91cEZyb21CYWNr
aW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBM
YXlvdXQqIGNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6QnVmZmVyKiBjb252ZXJ0QnVmZmVyRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZm
ZXIqIGNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBjb252ZXJ0Q29tbWFuZEVuY29k
ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6
Q29tcHV0ZVBhc3NFbmNvZGVyKiBjb252ZXJ0Q29tcHV0ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGlu
ZSogY29udmVydENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZp
bmFsOwotICAgIFBBTDo6V2ViR1BVOjpEZXZpY2UqIGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJl
KiBjb252ZXJ0RXh0ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgUEFMOjpXZWJHUFU6OkdQVSogY29udmVydEdQVUZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCogY29udmVy
dFBpcGVsaW5lTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAg
UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0KiBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UXVldWUqIGNvbnZlcnRRdWV1ZUZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGVFbmNvZGVyKiBjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUqIGNv
bnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAg
ICBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIGNvbnZlcnRSZW5kZXJQYXNzRW5jb2Rl
ckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpS
ZW5kZXJQaXBlbGluZSogY29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlNhbXBsZXIqIGNvbnZlcnRTYW1wbGVy
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlNo
YWRlck1vZHVsZSogY29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlKiBjb252ZXJ0VGV4dHVyZUZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJl
VmlldyogY29udmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlQWRhcHRlciYpOworICAgIHZvaWQgcmVt
b3ZlT2JqZWN0KFJlbW90ZUJpbmRHcm91cCYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90
ZUJpbmRHcm91cExheW91dCYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUJ1ZmZlciYp
OworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUNvbW1hbmRCdWZmZXImKTsKKyAgICB2b2lk
IHJlbW92ZU9iamVjdChSZW1vdGVDb21tYW5kRW5jb2RlciYpOworICAgIHZvaWQgcmVtb3ZlT2Jq
ZWN0KFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlciYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJl
bW90ZUNvbXB1dGVQaXBlbGluZSYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZURldmlj
ZSYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUV4dGVybmFsVGV4dHVyZSYpOworICAg
IHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZUdQVSYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJl
bW90ZVBpcGVsaW5lTGF5b3V0Jik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUXVlcnlT
ZXQmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVRdWV1ZSYpOworICAgIHZvaWQgcmVt
b3ZlT2JqZWN0KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXImKTsKKyAgICB2b2lkIHJlbW92ZU9i
amVjdChSZW1vdGVSZW5kZXJCdW5kbGUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlciYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVJlbmRlclBp
cGVsaW5lJik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlU2FtcGxlciYpOworICAgIHZv
aWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYpOworICAgIHZvaWQgcmVtb3ZlT2Jq
ZWN0KFJlbW90ZVRleHR1cmUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVUZXh0dXJl
VmlldyYpOwogCitwcml2YXRlOgogICAgIHVzaW5nIE9iamVjdCA9IHN0ZDo6dmFyaWFudDwKLSAg
ICAgICAgUmVmPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BV
OjpCaW5kR3JvdXA+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4s
Ci0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6QnVmZmVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2Vi
R1BVOjpDb21tYW5kQnVmZmVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5j
b2Rlcj4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiwKLSAg
ICAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+LAotICAgICAgICBSZWY8UEFM
OjpXZWJHUFU6OkRldmljZT4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0
dXJlPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpHUFU+LAotICAgICAgICBSZWY8UEFMOjpX
ZWJHUFU6OlBpcGVsaW5lTGF5b3V0PiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpRdWVyeVNl
dD4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6UXVldWU+LAotICAgICAgICBSZWY8UEFMOjpX
ZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OlJl
bmRlckJ1bmRsZT4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+
LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiwKLSAgICAgICAgUmVm
PFBBTDo6V2ViR1BVOjpTYW1wbGVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpTaGFkZXJN
b2R1bGU+LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmU+LAotICAgICAgICBSZWY8
UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PgorICAgICAgICBzdGQ6Om1vbm9zdGF0ZSwKKyAgICAg
ICAgUmVmPFJlbW90ZUFkYXB0ZXI+LAorICAgICAgICBSZWY8UmVtb3RlQmluZEdyb3VwPiwKKyAg
ICAgICAgUmVmPFJlbW90ZUJpbmRHcm91cExheW91dD4sCisgICAgICAgIFJlZjxSZW1vdGVCdWZm
ZXI+LAorICAgICAgICBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4sCisgICAgICAgIFJlZjxSZW1v
dGVDb21tYW5kRW5jb2Rlcj4sCisgICAgICAgIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+
LAorICAgICAgICBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPiwKKyAgICAgICAgUmVmPFJlbW90
ZURldmljZT4sCisgICAgICAgIFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+LAorICAgICAgICBS
ZWY8UmVtb3RlR1BVPiwKKyAgICAgICAgUmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0PiwKKyAgICAg
ICAgUmVmPFJlbW90ZVF1ZXJ5U2V0PiwKKyAgICAgICAgUmVmPFJlbW90ZVF1ZXVlPiwKKyAgICAg
ICAgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+LAorICAgICAgICBSZWY8UmVtb3RlUmVu
ZGVyQnVuZGxlPiwKKyAgICAgICAgUmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyPiwKKyAgICAg
ICAgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPiwKKyAgICAgICAgUmVmPFJlbW90ZVNhbXBsZXI+
LAorICAgICAgICBSZWY8UmVtb3RlU2hhZGVyTW9kdWxlPiwKKyAgICAgICAgUmVmPFJlbW90ZVRl
eHR1cmU+LAorICAgICAgICBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+CiAgICAgPjsKLSAgICBIYXNo
TWFwPFdlYkdQVUlkZW50aWZpZXIsIE9iamVjdD4gbV9vYmplY3RzOworICAgIEhhc2hNYXA8dm9p
ZCosIE9iamVjdD4gbV9vYmplY3RzOworCisgICAgT2JqZWN0UmVnaXN0cnkgbV9vYmplY3RSZWdp
c3RyeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
T2JqZWN0UmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMjdhMWE1ZmJlNGRlNDBiYmJlMmQ1NjVl
ZDBkYzMzNTdmZTA1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDM4
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVP
YmplY3RSZWdpc3RyeS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUFkYXB0ZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUJpbmRHcm91cC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdy
b3VwTGF5b3V0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIu
aD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXIuaD4K
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+Cisj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaD4K
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oPgor
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+CisjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4KKyNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+CisjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVUXVldWUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlckJ1bmRsZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
UmVuZGVyQnVuZGxlRW5jb2Rlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlclBpcGVsaW5lLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVTYW1wbGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJN
b2R1bGUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmUuaD4K
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CisKK25h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CisKK09iamVjdFJlZ2lzdHJ5OjpPYmplY3RSZWdpc3Ry
eSgpCit7Cit9CisKK09iamVjdFJlZ2lzdHJ5Ojp+T2JqZWN0UmVnaXN0cnkoKQoreworfQorCit2
b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYWRhcHRlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYg
YmluZEdyb3VwKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVy
LCBiaW5kR3JvdXApOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91
dCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYmluZEdy
b3VwTGF5b3V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIpCit7CisgICAgYXV0byByZXN1
bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbW1h
bmRCdWZmZXImIGNvbW1hbmRCdWZmZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIGNvbW1hbmRCdWZmZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rl
ciYgY29tbWFuZEVuY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlk
ZW50aWZpZXIsIGNvbW1hbmRFbmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVy
JiBjb21wdXRlUGFzc0VuY29kZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRk
KGlkZW50aWZpZXIsIGNvbXB1dGVQYXNzRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZSYgY29tcHV0ZVBpcGVsaW5lKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChpZGVudGlmaWVyLCBjb21wdXRlUGlwZWxpbmUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmlj
ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgZGV2aWNl
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2
b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUpCit7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGV4dGVybmFsVGV4dHVyZSk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9p
ZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UEFMOjpXZWJHUFU6OkdQVSYgZ3B1KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChpZGVudGlmaWVyLCBncHUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVM
YXlvdXQpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHBp
cGVsaW5lTGF5b3V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0KQoreworICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBxdWVyeVNldCk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RS
ZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJH
UFU6OlF1ZXVlJiBxdWV1ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRl
bnRpZmllciwgcXVldWUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJC
dW5kbGVFbmNvZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlm
aWVyLCByZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiByZW5k
ZXJCdW5kbGUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IHJlbmRlckJ1bmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNz
RW5jb2RlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwg
cmVuZGVyUGFzc0VuY29kZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlw
ZWxpbmUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHJl
bmRlclBpcGVsaW5lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlcikKK3sKKyAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgc2FtcGxlcik7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdp
c3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6
OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZChpZGVudGlmaWVyLCBzaGFkZXJNb2R1bGUpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0
ZXh0dXJlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCB0
ZXh0dXJlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwor
fQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQoreworICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCB0ZXh0dXJlVmlldyk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmpl
Y3RSZWdpc3RyeTo6cmVtb3ZlT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK1BBTDo6V2ViR1BVOjpBZGFwdGVyKiBP
YmplY3RSZWdpc3RyeTo6Y29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50
aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRhcHRl
cj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRhcHRlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpCaW5kR3JvdXAqIE9i
amVjdFJlZ2lzdHJ5Ojpjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVu
dGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRH
cm91cD4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdy
b3VwPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OkJpbmRHcm91
cExheW91dCogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLmdldCgp
OworfQorCitQQUw6OldlYkdQVTo6QnVmZmVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEJ1ZmZl
ckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisK
K1BBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbW1h
bmRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
YXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVy
YXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52
YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9y
LT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciogT2JqZWN0
UmVnaXN0cnk6OmNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21t
YW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
Q29tbWFuZEVuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBhc3NFbmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydENvbXB1dGVQYXNz
RW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJh
dG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI+PihpdGVyYXRv
ci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxp
bmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0Q29tcHV0ZVBpcGVsaW5lRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpX
ZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30K
KworUEFMOjpXZWJHUFU6OkRldmljZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnREZXZpY2VGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRv
ciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29i
amVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxQQUw6OldlYkdQVTo6RGV2aWNlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6
OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEV4dGVybmFs
VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJh
dG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmU+PihpdGVyYXRvci0+
dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4+KGl0ZXJh
dG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpHUFUqIE9iamVjdFJlZ2lzdHJ5
Ojpjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkdQVT4+KGl0ZXJhdG9yLT52YWx1ZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsK
K30KKworUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBPYmplY3RSZWdpc3RyeTo6Y29udmVy
dFBpcGVsaW5lTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0Pj4oaXRl
cmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6
OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dD4+
KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpRdWVyeVNldCogT2Jq
ZWN0UmVnaXN0cnk6OmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRp
Zmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWVyeVNl
dD4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+
PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6UXVldWUqIE9iamVj
dFJlZ2lzdHJ5Ojpjb252ZXJ0UXVldWVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIp
OworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVldWU+PihpdGVy
YXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6
Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXVlPj4oaXRlcmF0b3It
PnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIqIE9i
amVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2Vi
R1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQo
KTsKK30KKworUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4oaXRlcmF0
b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6Omdl
dDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+PihpdGVy
YXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIq
IE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsK
K30KKworUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBPYmplY3RSZWdpc3RyeTo6Y29udmVy
dFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPj4oaXRl
cmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6
OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4+
KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpTYW1wbGVyKiBPYmpl
Y3RSZWdpc3RyeTo6Y29udmVydFNhbXBsZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZp
ZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAm
c3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4+KGl0
ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUqIE9i
amVjdFJlZ2lzdHJ5Ojpjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChp
ZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlNo
YWRlck1vZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
U2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6
OlRleHR1cmUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2Vi
R1BVOjpUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OlRl
eHR1cmVWaWV3KiBPYmplY3RSZWdpc3RyeTo6Y29udmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29i
amVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVu
ZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFM
OjpXZWJHUFU6OlRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpUZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCisKKyNlbmRpZiAvLyBIQVZFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVPYmplY3RSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMzc3ODU0N2EzYTRi
YTM1NWE3NTIzZDJlY2Q2MjA2NTM3ZTEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmgKQEAg
LTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KyNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFj
ZSBQQUw6OldlYkdQVSB7CitjbGFzcyBBZGFwdGVyOworY2xhc3MgQmluZEdyb3VwOworY2xhc3Mg
QmluZEdyb3VwTGF5b3V0OworY2xhc3MgQnVmZmVyOworY2xhc3MgQ29tbWFuZEJ1ZmZlcjsKK2Ns
YXNzIENvbW1hbmRFbmNvZGVyOworY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOworY2xhc3MgQ29t
cHV0ZVBpcGVsaW5lOworY2xhc3MgRGV2aWNlOworY2xhc3MgRXh0ZXJuYWxUZXh0dXJlOworY2xh
c3MgR1BVOworY2xhc3MgUGlwZWxpbmVMYXlvdXQ7CitjbGFzcyBRdWVyeVNldDsKK2NsYXNzIFF1
ZXVlOworY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKK2NsYXNzIFJlbmRlckJ1bmRsZTsKK2Ns
YXNzIFJlbmRlclBhc3NFbmNvZGVyOworY2xhc3MgUmVuZGVyUGlwZWxpbmU7CitjbGFzcyBTYW1w
bGVyOworY2xhc3MgU2hhZGVyTW9kdWxlOworY2xhc3MgVGV4dHVyZTsKK2NsYXNzIFRleHR1cmVW
aWV3OworfQorCituYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgeworCitjbGFzcyBPYmplY3RSZWdp
c3RyeSBmaW5hbCA6IHB1YmxpYyBXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQgewor
cHVibGljOgorICAgIE9iamVjdFJlZ2lzdHJ5KCk7CisgICAgfk9iamVjdFJlZ2lzdHJ5KCk7CisK
KyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QWRhcHRl
ciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXAmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6QmluZEdyb3VwTGF5b3V0Jik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciwgUEFMOjpXZWJHUFU6OkJ1ZmZlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJik7CisgICAgdm9pZCBhZGRPYmpl
Y3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJik7CisgICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNz
RW5jb2RlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGlwZWxpbmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6RGV2aWNlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciwgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYpOworICAgIHZvaWQgYWRkT2Jq
ZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpHUFUmKTsKKyAgICB2b2lkIGFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmKTsKKyAg
ICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVlcnlTZXQm
KTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UXVl
dWUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
UmVuZGVyQnVuZGxlRW5jb2RlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJH
UFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImKTsKKyAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUm
KTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2Ft
cGxlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BV
OjpTaGFkZXJNb2R1bGUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6VGV4dHVyZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYpOworCisgICAgdm9pZCByZW1vdmVPYmplY3Qo
V2ViR1BVSWRlbnRpZmllcik7CisKKyAgICBQQUw6OldlYkdQVTo6QWRhcHRlciogY29udmVydEFk
YXB0ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQ
VTo6QmluZEdyb3VwKiBjb252ZXJ0QmluZEdyb3VwRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCogY29udmVydEJpbmRH
cm91cExheW91dEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6
V2ViR1BVOjpCdWZmZXIqIGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciogY29udmVydENvbW1hbmRC
dWZmZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQ
VTo6Q29tbWFuZEVuY29kZXIqIGNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIq
IGNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKKyAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBjb252ZXJ0Q29tcHV0ZVBp
cGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJH
UFU6OkRldmljZSogY29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZp
bmFsOworICAgIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIGNvbnZlcnRFeHRlcm5hbFRl
eHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQ
VTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Cisg
ICAgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UXVlcnlT
ZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwor
ICAgIFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIqIGNv
bnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmlu
YWw7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSogY29udmVydFJlbmRlckJ1bmRsZUZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpSZW5k
ZXJQYXNzRW5jb2RlciogY29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBjb252
ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAg
ICBQQUw6OldlYkdQVTo6U2FtcGxlciogY29udmVydFNhbXBsZXJGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBjb252ZXJ0
U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFM
OjpXZWJHUFU6OlRleHR1cmUqIGNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRp
ZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3KiBjb252ZXJ0VGV4dHVy
ZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKworcHJpdmF0ZToKKyAg
ICB1c2luZyBPYmplY3QgPSBzdGQ6OnZhcmlhbnQ8CisgICAgICAgIHN0ZDo6bW9ub3N0YXRlLAor
ICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiwKKyAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiwKKyAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0
PiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QnVmZmVyPiwK
KyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZl
cj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRF
bmNvZGVyPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NFbmNvZGVyPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6RGV2aWNlPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6R1BVPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+LAorICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpRdWVyeVNldD4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OlF1ZXVlPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiwKKyAgICAgICAgc3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+LAorICAgICAgICBz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTYW1wbGVyPiwKKyAgICAgICAgc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiwKKyAgICAgICAg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZT4sCisgICAgICAgIHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PgorICAgID47Cisg
ICAgSGFzaE1hcDxXZWJHUFVJZGVudGlmaWVyLCBPYmplY3Q+IG1fb2JqZWN0czsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaAppbmRleCA2MDA1Yzg4ZjgxYWUyOWFlMWQwMjEz
ZDRiYTkzYjU0ZDFlNWFjNmRjLi5hOTQ2OGY1MjdjNGMxZDExMzJhMGQ4NDNlMmQ0ZmYxMjZiYWZi
NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgKQEAgLTE4OSw3ICsxODksNyBAQCBzdHJ1
Y3QgVmVydGV4QXR0cmlidXRlOwogc3RydWN0IFZlcnRleEJ1ZmZlckxheW91dDsKIHN0cnVjdCBW
ZXJ0ZXhTdGF0ZTsKIAotY2xhc3MgQ29udmVydEZyb21CYWNraW5nQ29udGV4dCA6IHB1YmxpYyBS
ZWZDb3VudGVkPENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ+IHsKK2NsYXNzIENvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCmluZGV4IGIyMWVhMWJi
MjNkM2QzMTBiODQ4ZmI0ZWUyMWQ0MDhhZWZiYTJhOGIuLjVjODFiNGRjNDJhZGY5NDlkNDUyYWU1
OTY4NTY2MDI3Mzc1YjhhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCiBzdHJ1Y3QgU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CiAgICAgU3RyaW5nIGNvZGU7Ci0g
ICAgLy8gSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gc291cmNlTWFwOworICAgIC8vIEZJWE1F
OiBIb29rIHVwIHRoZSBzb3VyY2VNYXAuCiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDhlM2FkMTljOWY1N2E1ZGY0ODYwN2IwZjNmNjMzNDY5MDAyNTIwYjcuLjY0MWRmMTY0ZjllM2M4
NWUzZTQ3ODcxMThhMzU5M2Y2Nzg3NTFiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTQsNiArNTQsNyBA
QCBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcAogR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVT2JqZWN0UmVnaXN0cnkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdh
cmVMaXN0ZW5lclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTdjZTQwMGE5ZTA5YWQ4OTI1MDE0YTIwMGFjYjljMzM3MmEyNjAwNy4uNWIxODBlMTEy
YmZiYzE5MTcyMTY5MzI2NjFjZDlmMmVmZDFhYmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTE2LDEzICsyOTE2LDEzIEBACiAJ
CTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JNZXNzYWdlcy5oOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM5OEMwMUQyNzQ0NkEwMzAwMkNDQjc4IC8qIFJlbW90ZUdQVS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzk4
QzAxRTI3NDQ2QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOThD
MDFFMjc0NDZBMDMwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzk4QzAxRjI3NDQ2QTAzMDAyQ0NCNzggLyogUmVtb3RlUXVlcnlTZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlUXVlcnlTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5
OEMwMjAyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1bmRsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVSZW5kZXJCdW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5OEMwMjEyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZVF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5
OEMwMjIyNzQ0NkEwNDAwMkNDQjc4IC8qIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzk4QzAyMzI3NDQ2QTA1MDAyQ0NCNzggLyogUmVtb3RlU2hhZGVyTW9k
dWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVNoYWRlck1vZHVsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOThDMDI0Mjc0NDZBMDUwMDJDQ0I3OCAvKiBXZWJH
UFVPYmplY3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVU9iamVjdEhlYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzk4QzAyNDI3NDQ2QTA1MDAyQ0NCNzgg
LyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAyNTI3
NDQ2QTA2MDAyQ0NCNzggLyogUmVtb3RlVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVU
ZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDI2Mjc0NDZBMDYw
MDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDOThDMDI3Mjc0NDZBMDYwMDJDQ0I3OCAvKiBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzE3Miw2ICszMTcyLDggQEAKIAkJMUNCNzQ2QTQyNzQzQURCQTAw
RjE5ODc0IC8qIFdlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNw
ZWN0b3JVSU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklu
c3BlY3RvclVJTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5z
cGVjdG9yVUlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQkxQ0JENzUzQzI3NDdBQTMxMDA0RkEwRkYgLyogV2ViR1BVT2JqZWN0SGVhcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJHUFVPYmplY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUNCRDc1M0QyNzQ3QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0JGOTAxMjI3MTAxOEI1MDAwQzQ1N0QgLyogUXVhbGlmaWVkUmVzb3VyY2VIZWFw
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZFJlc291cmNlSGVhcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0M1NEFGRDI3MEY5NjU0MDA1QkY4QkUgLyogUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0YxOEYzRTI2QkI1RDkwMDA0QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTG9nSW5pdGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzQyNyw4ICs3NDI5LDEwIEBACiAJCQkJMUM5OEMwMzYyNzQ0NkEwOTAwMkNDQjc4
IC8qIFJlbW90ZVRleHR1cmVWaWV3LmNwcCAqLywKIAkJCQkxQzk4QzAyRTI3NDQ2QTA4MDAyQ0NC
NzggLyogUmVtb3RlVGV4dHVyZVZpZXcuaCAqLywKIAkJCQkxQzk4QzA4ODI3NDRCRDk5MDAyQ0NC
NzggLyogUmVtb3RlVGV4dHVyZVZpZXcubWVzc2FnZXMuaW4gKi8sCi0JCQkJMUM5OEMwMjQyNzQ0
NkEwNTAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICovLAotCQkJCTFDOThDMDFFMjc0
NDZBMDMwMDJDQ0I3OCAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8sCisJCQkJMUNCRDc1M0MyNzQ3
QUEzMTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICovLAorCQkJCTFDQkQ3NTNEMjc0
N0FBMzEwMDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8sCisJCQkJMUM5OEMwMjQyNzQ0
NkEwNTAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcCAqLywKKwkJCQkxQzk4QzAx
RTI3NDQ2QTAzMDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gV2ViR1BVOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1MDMsMTAg
Kzk1MDcsMTAgQEAKIAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxRjdCQjdFMjc0
NTY0QTEwMEM0NUE3MiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8sCiAJCQkJNTdBOUZGMTUyNTJD
NkFFRjAwNkEyMDQwIC8qIGxpYldURi5hICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0
NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKIAkJCQk1NzBEQUFCMDIzMDI3
M0QyMDBFOEZDMDQgLyogTmVhckZpZWxkLmZyYW1ld29yayAqLywKKwkJCQk1MUY3QkI3RTI3NDU2
NEExMDBDNDVBNzIgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovLAogCQkJKTsKIAkJCW5hbWUgPSBG
cmFtZXdvcmtzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEyMjI5LDggKzEyMjMz
LDggQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTUxRjdCQjdCMjc0NEM1MDcwMEM0NUE3
MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNTc5RkMy
NzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTFGN0JCN0IyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJDRDY5RjI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CkBAIC0xNDcwOCwxMiArMTQ3MTIsMTIgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAotCQkJCTUxRjdCQjdEMjc0NTY0MDQwMEM0NUE3MiAvKiBDb2RlU2lnbmluZy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMTU3QTAxMjcxN0I3RkIwMEVENTI4MCAvKiBBcmd1bWVudENvZGVycy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUY3QkI3RDI3NDU2NDA0MDBDNDVBNzIgLyogQ29kZVNp
Z25pbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1NzlGRjI3MTdCNkQyMDBFRDUyODAgLyog
RGFlbW9uRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUY3QkI3QzI3NDRDNTA3MDBD
NDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1
NzlGRTI3MTdCNkMxMDBFRDUyODAgLyogRGFlbW9uRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzE1NzlGQjI3MTdBRjUwMDBFRDUyODAgLyogRGFlbW9uVXRpbGl0aWVzLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFGN0JCN0MyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25u
ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyQ0Q2QTAyNzIzMzkzQTAwRjdGOEVDIC8q
IFdlYlB1c2hEYWVtb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1N0EwQzI3MTdDQTFEMDBF
RDUyODAgLyogV2ViUHVzaERhZW1vbk1haW4ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7Cg==
</data>
<flag name="commit-queue"
          id="469981"
          type_id="3"
          status="-"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444867</attachid>
            <date>2021-11-19 16:31:35 -0800</date>
            <delta_ts>2021-11-19 18:33:51 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-233358-20211119163134.patch</filename>
            <type>text/plain</type>
            <size>195032</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI3OTBhM2IxNTU2NDZlZTFi
MTRkNzhmMTU0Zjc0NWQzZDUwN2RhZTcuLmUwOTA1ZmZkNjUzZTU2YTE3YTdiNmE4Yjk4NmVjYmNl
NzUwZWZjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjc5IEBACisyMDIxLTExLTE5ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW1w
bGVtZW50IEdQVSBwcm9jZXNzJ3MgbWVzc2FnZSByZWNlaXZlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzM1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBUaGUgbWVzc2FnZSByZWNlaXZlcnMgaGF2ZSB0
d28gaGVscGVyIG9iamVjdHM6CisgICAgICAgIDEuIE9iamVjdEhlYXAsIHdoaWNoIG93bnMgYWxs
IHRoZSBtZXNzYWdlIHJlY2VpdmVycy4gVGhlcmUgaXMgaW50ZW5kZWQgdG8gYmUgb25seSBvbmUg
b2YgdGhlbSBwZXIgZG9jdW1lbnQuCisgICAgICAgIDIuIE9iamVjdFJlZ2lzdHJ5LCB3aGljaCBk
b2Vzbid0IG93biBhbnl0aGluZywgYnV0IG1haW50YWlucyBhIG1hcHBpbmcgZnJvbSBXZWJHUFVJ
ZGVudGlmaWVycyB0byBvYmplY3RzLiBUaGlzCisgICAgICAgICAgICAgICByZWdpc3RyeSBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSB3aGVuIGFuIG9iamVjdCBuZWVkcyB0byBiZSBkZXN0cm95ZWQsIHdl
IGhhdmUgdG8gbG9vayB1cCB3aGljaCBvYmplY3QgaXQKKyAgICAgICAgICAgICAgIGlzIGJ5IElE
LgorCisgICAgICAgIEJleW9uZCB0aGF0LCB0aGlzIHBhdGNoIGp1c3QgaG9va3MgdXAgdGhvc2Ug
dHdvIG1lc3NhZ2UgcmVjZWl2ZXJzLCBhbmQgdGhlbiBmb3J3YXJkcyBhbGwgcmVjZWl2ZWQgbWVz
c2FnZXMgdG8KKyAgICAgICAgdGhlIHZpcnR1YWwgaW50ZXJmYWNlIHRoYXQgaW1wbGVtZW50cyBX
ZWJHUFUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QWRhcHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6OlJlbW90ZUFkYXB0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBZGFwdGVyOjp+UmVtb3RlQWRhcHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6OnJlcXVlc3REZXZpY2UpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUJpbmRHcm91cDo6flJlbW90ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUJpbmRHcm91cDo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUJpbmRHcm91cExheW91dDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0Ojp+UmVtb3RlQmluZEdyb3VwTGF5b3V0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0OjpzZXRMYWJlbCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQnVmZmVyOjpSZW1vdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVCdWZmZXI6On5SZW1vdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVCdWZmZXI6Om1hcEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQnVmZmVyOjp1bm1h
cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ29tbWFuZEJ1ZmZlcjo6flJlbW90ZUNvbW1hbmRCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDb21tYW5kQnVmZmVyOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlbW90ZUNvbW1hbmRFbmNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6On5SZW1vdGVDb21tYW5kRW5jb2Rl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBh
c3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRl
UGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9CdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29k
ZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFu
ZEVuY29kZXI6OmZpbGxCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6cG9wRGVidWdHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRFbmNv
ZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjp3cml0ZVRpbWVzdGFtcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpyZXNvbHZlUXVlcnlTZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5k
RW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tbWFuZEVuY29kZXI6
OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1
dGVQYXNzRW5jb2Rlcjo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQYXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBl
bGluZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQaXBlbGluZTo6UmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5l
Ojp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
b21wdXRlUGlwZWxpbmU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVE
ZXZpY2U6OlJlbW90ZURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6flJl
bW90ZURldmljZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlRGV2aWNlOjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNl
OjppbXBvcnRFeHRlcm5hbFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6
OmNyZWF0ZUJpbmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6
Y3JlYXRlUGlwZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNy
ZWF0ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlU2hh
ZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRl
UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlw
ZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQ29t
bWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVJlbmRl
ckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVF1
ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpwdXNoRXJyb3JTY29wZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6cG9wRXJyb3JTY29wZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZURldmljZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUV4dGVybmFsVGV4dHVyZTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjp+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpzZXRMYWJlbCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjpSZW1vdGVHUFUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHUFU6On5SZW1vdGVHUFUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVl
c3RBZGFwdGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVH
UFUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVQaXBlbGluZUxheW91dDo6
UmVtb3RlUGlwZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVQaXBlbGluZUxh
eW91dDo6flJlbW90ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUGlw
ZWxpbmVMYXlvdXQ6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVl
cnlTZXQ6OlJlbW90ZVF1ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVlcnlTZXQ6
On5SZW1vdGVRdWVyeVNldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXJ5U2V0OjpkZXN0
cm95KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUXVlcnlTZXQ6OnNldExhYmVsKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUXVldWU6OlJlbW90ZVF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUXVldWU6On5SZW1vdGVRdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjpz
dWJtaXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVRdWV1ZTo6b25TdWJtaXR0ZWRXb3JrRG9u
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjp3cml0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjp3cml0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVRdWV1ZTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVRdWV1ZTo6c2V0TGFiZWwpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVF1ZXVlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
QnVuZGxlOjpSZW1vdGVSZW5kZXJCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJCdW5kbGU6On5SZW1vdGVSZW5kZXJCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJCdW5kbGU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6On5SZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
cjo6c2V0UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpzZXRJbmRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjpkcmF3SW5kZXhlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnBvcERlYnVnR3JvdXApOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnNldExhYmVsKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRpcmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFy
a2VyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZpZXdw
b3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFNjaXNz
b3JSZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldEJs
ZW5kQ29uc3RhbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0U3RlbmNpbFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyOjpiZWdpbk9jY2x1c2lvblF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OmVuZE9jY2x1c2lvblF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhl
Y3V0ZUJ1bmRsZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
ZW5kUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRM
YWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBpcGVs
aW5lOjpSZW1vdGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
clBpcGVsaW5lOjp+UmVtb3RlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyUGlwZWxpbmU6OnNldExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ft
cGxlcjo6flJlbW90ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVyOjpz
ZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2Ft
cGxlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRl
ck1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNoYWRlck1vZHVsZTo6UmVtb3Rl
U2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjp+UmVt
b3RlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjpj
b21waWxhdGlvbkluZm8pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTaGFkZXJNb2R1bGU6OnNl
dExhYmVsKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFk
ZXJNb2R1bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHR1cmU6On5SZW1vdGVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVRleHR1cmU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0
dXJlOjpzZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZVZpZXc6OlJl
bW90ZVRleHR1cmVWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZVZpZXc6On5S
ZW1vdGVUZXh0dXJlVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHR1cmVWaWV3Ojpz
ZXRMYWJlbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4
dHVyZVZpZXcuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVP
YmplY3RIZWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjphZGRP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OnJlbW92ZU9iamVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEFkYXB0ZXJG
cm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVh
cDo6Y29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0QmluZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2Jq
ZWN0SGVhcDo6Y29udmVydENvbW1hbmRCdWZmZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJv
bUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6
OmNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydENvbXB1dGVQaXBlbGluZUZyb21C
YWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpj
b252ZXJ0RGV2aWNlRnJvbUJhY2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEdQVUZyb21C
YWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpj
b252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRRdWV1ZUZy
b21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFw
Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJh
Y2tpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNv
bnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2lu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVy
dFNhbXBsZXJGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
T2JqZWN0SGVhcDo6Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNr
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252
ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6Ok9iamVjdFJlZ2lzdHJ5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6fk9iamVjdFJlZ2lzdHJ5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6cmVtb3ZlT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RSZWdpc3RyeTo6Y29udmVydEFkYXB0ZXJGcm9t
QmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRCaW5kR3JvdXBGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0
UmVnaXN0cnk6OmNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFja2luZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21tYW5k
QnVmZmVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5Ojpjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFj
a2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRD
b21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnk6OmNvbnZlcnREZXZpY2VGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2lu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRHUFVG
cm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNv
bnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpPYmplY3RSZWdpc3RyeTo6Y29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UXVldWVGcm9tQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJC
dW5kbGVFbmNvZGVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9t
QmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpP
YmplY3RSZWdpc3RyeTo6Y29udmVydFNhbXBsZXJGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRTaGFkZXJNb2R1bGVGcm9tQmFja2lu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRUZXh0
dXJlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
Ojpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0cnkuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmguCisg
ICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Lmg6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNz
Y2hlbWVzL1dlYktpdC54Y3NjaGVtZToKKwogMjAyMS0xMS0xOSAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEFkZCBjb252ZXJ0ZXJz
IGZyb20gc2VyaWFsaXphYmxlIGRlc2NyaXB0b3JzIHRvIGludGVyZmFjZSBkZXNjcmlwdG9ycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVC
dWZmZXIuaAppbmRleCBlNGYzODI5MDZjMzBkNzY3MmYxODU3NWNmM2ExOGQ4YWRjYWJlYTE2Li4z
ZmFlOTRhNGFiYWZjZWEzOTYwM2M0ODZkNmEwYTY3YjhiOGRlOWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXIuaApAQCAt
NTAsOCArNTAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwQXN5bmMoTWFwTW9k
ZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFNpemU2
ND4sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAgICAgc3RydWN0IE1hcHBlZFJhbmdl
IHsKLSAgICAgICAgY29uc3Qgdm9pZCogc291cmNlOwotICAgICAgICBzaXplX3QgYnl0ZUxlbmd0
aDsKKyAgICAgICAgdm9pZCogc291cmNlIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3QgYnl0
ZUxlbmd0aCB7IDAgfTsKICAgICB9OwogICAgIHZpcnR1YWwgTWFwcGVkUmFuZ2UgZ2V0TWFwcGVk
UmFuZ2Uoc3RkOjpvcHRpb25hbDxTaXplNjQ+IG9mZnNldCwgc3RkOjpvcHRpb25hbDxTaXplNjQ+
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVubWFwKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5jcHAK
aW5kZXggZTA0MDlhOWM0NjE0YTU0NjI0YWZkZmFhYTBlMmYxMzk1ZjQ3NjM1OC4uNDFiZGYxNjUy
MDZiMDk2OTlhYjE1MzYyMWFkM2MyZWUxZTg2ODg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuY3BwCkBA
IC0yOCwyOSArMjgsNzYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IlJlbW90ZURldmljZS5oIgogI2luY2x1ZGUgIldlYkdQVURldmljZURlc2NyaXB0b3IuaCIKICNp
bmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0
cnkuaCIKICNpbmNsdWRlICJXZWJHUFVTdXBwb3J0ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldl
YkdQVVN1cHBvcnRlZExpbWl0cy5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQWRhcHRlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVBZGFwdGVyOjpSZW1vdGVBZGFwdGVy
KFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXApCitSZW1vdGVBZGFwdGVyOjpSZW1vdGVBZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVy
JiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoYWRhcHRlcikKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVn
aXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRp
ZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQWRhcHRlcjo6flJlbW90ZUFkYXB0ZXIoKQog
eworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgUmVtb3RlQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBXZWJHUFU6OkRldmljZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BV
OjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKLSAgICBVTlVTRURfUEFS
QU0oY2FsbGJhY2spOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVn
aXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAg
Y2FsbGJhY2soeyB7IH0gfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
YmFja2luZy0+cmVxdWVzdERldmljZSgqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVj
dEhlYXA+KG1fb2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwg
aWRlbnRpZmllcl0gKFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiYmIGRldmljZSkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghd2Vha09iamVjdEhlYXApCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGF1dG8gcmVtb3RlRGV2aWNlID0gUmVtb3RlRGV2aWNlOjpjcmVhdGUoZGV2aWNlLCBvYmpl
Y3RSZWdpc3RyeSwgKndlYWtPYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICAgICAgd2Vha09i
amVjdEhlYXAtPmFkZE9iamVjdChyZW1vdGVEZXZpY2UpOworICAgICAgICBjb25zdCBhdXRvJiBm
ZWF0dXJlcyA9IGRldmljZS0+ZmVhdHVyZXMoKTsKKyAgICAgICAgY29uc3QgYXV0byYgbGltaXRz
ID0gZGV2aWNlLT5saW1pdHMoKTsKKyAgICAgICAgY2FsbGJhY2soV2ViR1BVOjpTdXBwb3J0ZWRG
ZWF0dXJlcyB7IGZlYXR1cmVzLmZlYXR1cmVzKCkgfSwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMg
eworICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCgpLAorICAgICAgICAg
ICAgbGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCgpLAorICAgICAgICAgICAgbGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24zRCgpLAorICAgICAgICAgICAgbGltaXRzLm1heFRleHR1cmVBcnJh
eUxheWVycygpLAorICAgICAgICAgICAgbGltaXRzLm1heEJpbmRHcm91cHMoKSwKKyAgICAgICAg
ICAgIGxpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCgpLAor
ICAgICAgICAgICAgbGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5
b3V0KCksCisgICAgICAgICAgICBsaW1pdHMubWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3Rh
Z2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlKCksCisg
ICAgICAgICAgICBsaW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSgpLAorICAg
ICAgICAgICAgbGltaXRzLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlKCksCisgICAg
ICAgICAgICBsaW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAg
ICAgICAgbGltaXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSgpLAorICAgICAgICAgICAg
bGltaXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSgpLAorICAgICAgICAgICAgbGltaXRz
Lm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAgICAgICAgICAgIGxpbWl0cy5t
aW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50KCksCisgICAgICAgICAgICBsaW1pdHMubWF4
VmVydGV4QnVmZmVycygpLAorICAgICAgICAgICAgbGltaXRzLm1heFZlcnRleEF0dHJpYnV0ZXMo
KSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSgpLAorICAg
ICAgICAgICAgbGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzKCksCisgICAgICAg
ICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplKCksCisgICAgICAgICAg
ICBsaW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwKCksCisgICAgICAgICAg
ICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYKCksCisgICAgICAgICAgICBsaW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0
ZVdvcmtncm91cFNpemVaKCksCisgICAgICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91
cHNQZXJEaW1lbnNpb24oKSwKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuaAppbmRleCA1MGYzN2U3ZTQ2NzA5OGExNzZmZTRjNDA3
ODMxNDlhMGMxZDM3N2UxLi4xZWEyYzEwMTg2ZTFiNmY4OGIwYTMyY2UwNDI3ODViZmMyOGFmMzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUFkYXB0ZXIuaApAQCAtNDEsMjMgKzQxLDI0IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogbmFtZXNwYWNlIFdlYkdQVSB7CiBzdHJ1Y3QgRGV2aWNlRGVzY3JpcHRvcjsKIGNsYXNzIE9i
amVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIHN0cnVjdCBTdXBwb3J0ZWRGZWF0dXJl
czsKIHN0cnVjdCBTdXBwb3J0ZWRMaW1pdHM7CiB9CiAKIGNsYXNzIFJlbW90ZUFkYXB0ZXIgZmlu
YWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlQWRhcHRlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFw
dGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1v
dGVBZGFwdGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0ZXIoYWRhcHRlciwgb2JqZWN0SGVhcCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBZGFwdGVyKGFkYXB0ZXIsIG9iamVjdFJl
Z2lzdHJ5LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
UmVtb3RlQWRhcHRlcigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFw
OworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZUFkYXB0ZXIo
UEFMOjpXZWJHUFU6OkFkYXB0ZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVB
ZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdl
YkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQWRhcHRl
cihjb25zdCBSZW1vdGVBZGFwdGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQWRhcHRlcihSZW1v
dGVBZGFwdGVyJiYpID0gZGVsZXRlOwpAQCAtNjksNyArNzAsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVxdWVzdERldmljZShjb25zdCBXZWJHUFU6OkRldmljZURlc2NyaXB0b3ImLCBXZWJHUFVJ
ZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViR1BVOjpTdXBwb3J0ZWRG
ZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4mJik7CiAKICAgICBSZWY8UEFM
OjpXZWJHUFU6OkFkYXB0ZXI+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFw
PiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdp
c3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVC
aW5kR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCaW5kR3JvdXAuY3BwCmluZGV4IDQ3MTBhNTQ1OTVlNmI0YjQyMGFiMTA5MjgzM2Y3MThj
NDkxMjMwYjQuLjA4NWY0OTUzODRlM2VmM2NjNDRhNTMyYzU2ODg1YjQxOWZmNDE3NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmlu
ZEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cC5jcHAKQEAgLTI5LDIzICsyOSwyOCBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJH
UFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
QmluZEdyb3VwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVCaW5kR3JvdXA6OlJl
bW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZUJpbmRHcm91cDo6UmVtb3RlQmluZEdyb3Vw
KFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwgV2ViR1BVOjpPYmplY3RSZWdpc3Ry
eSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGJpbmRHcm91cCkKKyAgICAs
IG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2Jq
ZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0
UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3Rl
QmluZEdyb3VwOjp+UmVtb3RlQmluZEdyb3VwKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJl
bW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUJpbmRHcm91cDo6c2V0
TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBt
X2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUJpbmRHcm91cC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuaAppbmRleCAwM2QxMGRmNDE1MjhhZDEyMmFhYTAzYmU3
NmE3ODAzYWJkOGFiODFiLi5jZTE0MDhjNjdkNTQ4MTJkOWRkNGMxN2U2M2RkMGIwYjI0NjcwZjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJpbmRHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQmluZEdyb3VwLmgKQEAgLTQwLDIxICs0MCwyMiBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2Jq
ZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91cCBmaW5hbCA6IHB1YmxpYyBJ
UEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1v
dGVCaW5kR3JvdXA+IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRH
cm91cD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwKGJpbmRHcm91cCwgb2JqZWN0SGVhcCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXAoYmluZEdyb3VwLCBv
YmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgflJlbW90ZUJpbmRHcm91cCgpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBP
YmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90
ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7
CisgICAgUmVtb3RlQmluZEdyb3VwKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmLCBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAK
ICAgICBSZW1vdGVCaW5kR3JvdXAoY29uc3QgUmVtb3RlQmluZEdyb3VwJikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlQmluZEdyb3VwKFJlbW90ZUJpbmRHcm91cCYmKSA9IGRlbGV0ZTsKQEAgLTY2LDcg
KzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJl
ZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2Jq
ZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2Jq
ZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAg
V2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmNwcAppbmRleCA4YzBmMGUxMWU3NzQ5
ZTk5OWYxNDE2NzFiMjVjODBjM2Q1ODY4Y2I5Li4wYjE2ZmYyOTg3ZDE1NDJhM2FhYTJhZWQwNjQy
ZWVhZjJlN2Q1MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuY3BwCkBAIC0y
OSwyMyArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpSZW1vdGVCaW5kR3JvdXBM
YXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OlJlbW90
ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBM
YXlvdXQsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6
IG1fYmFja2luZyhiaW5kR3JvdXBMYXlvdXQpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVj
dFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lk
ZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZUJpbmRHcm91cExheW91dDo6flJlbW90
ZUJpbmRHcm91cExheW91dCgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3Qo
bV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OnNldExhYmVs
KFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNr
aW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgKaW5kZXggZDBmZGFjYWVhMmE1NDM5ZDFj
YmU3MWM2YThmYjNlMTljODE4NTg1NS4uMjhkMGJlNGJiNDM5MDg3NTViYmY4OTM4ZWQyMDhlNjdm
ZGZjZmM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5oCkBAIC00MCwyMSArNDAs
MjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2Jq
ZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwTGF5b3V0PiBjcmVhdGUoUEFMOjpX
ZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0LCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXQs
IG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdy
b3VwTGF5b3V0KGJpbmRHcm91cExheW91dCwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXBMYXlvdXQo
KTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpX
ZWJHUFU6OkJpbmRHcm91cExheW91dCYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90
ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwog
CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFJlbW90ZUJpbmRHcm91cExheW91dCYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZUJpbmRHcm91cExheW91dChSZW1vdGVCaW5kR3JvdXBMYXlv
dXQmJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRM
YWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4g
bV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAg
ICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6
T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKaW5kZXgg
MGZjMjZlNGI1ODg5ZTA4MzEzZDZhN2I5M2Y3ZWQxNjRkZjU2ZWE5OC4uMzFhNmEyMzNjNzFmZmI0
NGY3MDMxYzU4MTc0YmRkYjNlYWI2NWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcApAQCAtMjksMzgg
KzI5LDY1IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2Jq
ZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVCdWZmZXI6OlJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQVTo6QnVm
ZmVyJiBidWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZUJ1ZmZl
cjo6UmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmpl
Y3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGJ1ZmZlcikK
KyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhl
YXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1f
b2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAog
UmVtb3RlQnVmZmVyOjp+UmVtb3RlQnVmZmVyKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJl
bW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5
bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpT
aXplNjQ+IHNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4m
Jik+JiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUJ1ZmZlcjo6bWFwQXN5bmMoUEFMOjpXZWJHUFU6
Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNp
emU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4m
Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcE1vZGVGbGFncyk7Ci0gICAg
VU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBp
ZiAobV9pc01hcHBlZCkgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIG1faXNNYXBwZWQgPSB0cnVlOworICAgIG1fbWFwTW9kZUZs
YWdzID0gbWFwTW9kZUZsYWdzOworCisgICAgbV9iYWNraW5nLT5tYXBBc3luYyhtYXBNb2RlRmxh
Z3MsIG9mZnNldCwgc2l6ZSwgW21hcE1vZGVGbGFncywgb2Zmc2V0LCBzaXplLCBzdHJvbmdUaGlz
ID0gUmVmPFJlbW90ZUJ1ZmZlcj4oKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYXBwZWRSYW5nZSA9IHN0cm9uZ1RoaXMtPm1f
YmFja2luZy0+Z2V0TWFwcGVkUmFuZ2Uob2Zmc2V0LCBzaXplKTsKKyAgICAgICAgc3Ryb25nVGhp
cy0+bV9tYXBwZWRSYW5nZSA9IG1hcHBlZFJhbmdlOworICAgICAgICBpZiAobWFwTW9kZUZsYWdz
ICYgUEFMOjpXZWJHUFU6Ok1hcE1vZGU6OlJFQUQpCisgICAgICAgICAgICBjYWxsYmFjayhWZWN0
b3I8dWludDhfdD4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcHBlZFJhbmdlLnNvdXJj
ZSksIG1hcHBlZFJhbmdlLmJ5dGVMZW5ndGgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y2FsbGJhY2soeyB7IH0gfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVtb3RlQnVmZmVyOjp1bm1h
cChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAg
ICBpZiAoIW1fbWFwcGVkUmFuZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9pc01h
cHBlZCk7CisKKyAgICBpZiAobV9tYXBNb2RlRmxhZ3MgJiBQQUw6OldlYkdQVTo6TWFwTW9kZTo6
V1JJVEUpCisgICAgICAgIG1lbWNweShtX21hcHBlZFJhbmdlLT5zb3VyY2UsIGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CisKKyAgICBtX2lzTWFwcGVkID0gZmFsc2U7CisgICAgbV9tYXBwZWRS
YW5nZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX21hcE1vZGVGbGFncyA9IDA7CiB9CiAKIHZvaWQg
UmVtb3RlQnVmZmVyOjpkZXN0cm95KCkKIHsKKyAgICBtX2JhY2tpbmctPmRlc3Ryb3koKTsKIH0K
IAogdm9pZCBSZW1vdGVCdWZmZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVO
VVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVs
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmgKaW5kZXggMTRhNDVh
N2RkYWU3ZDQzMTg2NzU0MGRlMDkyODkyMjEwZDM0MTUyZC4uMDE5OWI4ODc0ZDYyM2FlMTVkMmE4
MDUzOWU0OTNkNGJmMzk3MzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5oCkBAIC00NSwyMSArNDUsMjIgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVh
cDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVCdWZmZXIgZmluYWwg
OiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlQnVmZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVCdWZm
ZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFdlYkdQVTo6T2JqZWN0UmVn
aXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUJ1ZmZlcihidWZmZXIsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlQnVmZmVyKGJ1ZmZlciwgb2JqZWN0UmVnaXN0cnksIG9iamVj
dEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCdWZmZXIo
KTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1
ZmZlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZUJ1ZmZlcihQQUw6OldlYkdQ
VTo6QnVmZmVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQnVmZmVyKGNvbnN0IFJlbW90ZUJ1ZmZl
ciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUJ1ZmZlcihSZW1vdGVCdWZmZXImJikgPSBkZWxldGU7
CkBAIC02OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1N
ZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKIAotICAgIHZvaWQgbWFwQXN5bmMoUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFncywgc3Rk
OjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlNpemU2ND4gc2l6ZUZvck1hcCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3Rvcjx1aW50OF90PiYmKT4mJik7CisgICAgdm9pZCBtYXBBc3luYyhQQUw6OldlYkdQVTo6
TWFwTW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9mZnNldCwg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplRm9yTWFwLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYpPiYmKTsK
ICAgICB2b2lkIHVubWFwKFZlY3Rvcjx1aW50OF90PiYmKTsKIAogICAgIHZvaWQgZGVzdHJveSgp
OwpAQCAtNzYsNyArNzcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYm
KTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QnVmZmVyPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdl
YkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhl
YXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2lzTWFw
cGVkIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpCdWZmZXI6Ok1h
cHBlZFJhbmdlPiBtX21hcHBlZFJhbmdlOworICAgIFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxhZ3Mg
bV9tYXBNb2RlRmxhZ3MgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVm
ZmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KaW5kZXggNmNlZjEwMjE4ZTI5MjQxOWU1YWI3M2Vh
OTRjMDc4OTg4MjBkZjhiOC4uOTdhNTFmM2NhMmMzYjAxNzU5MGYyYzNiYmU2MzQzODM3OGNhNDVj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUJ1ZmZlciBOb3RS
ZWZDb3VudGVkIFN0cmVhbSB7Ci0gICAgdm9pZCBNYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9k
ZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBv
ZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkgLT4gKFZlY3Rv
cjx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgTWFwQXN5bmMoUEFMOjpXZWJH
UFU6Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUp
IC0+IChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YSkgU3luY2hyb25vdXMKICAg
ICB2b2lkIFVubWFwKFZlY3Rvcjx1aW50OF90PiBkYXRhKQogICAgIHZvaWQgRGVzdHJveSgpCiAg
ICAgdm9pZCBTZXRMYWJlbChTdHJpbmcgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVy
LmNwcAppbmRleCA0NGE5ZDU5MTNmZDNlOGMxZmVjNjk2MWE1YWNmMjhhMDJkODIwYjM5Li5hOWM2
YTJiNmU2MDNmNDA3ODBjYWVhMDA3YjU3M2IyZTRkNmQ0YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
bWFuZEJ1ZmZlci5jcHAKQEAgLTI5LDIzICsyOSwyOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmpl
Y3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6
UmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1
ZmZlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlQ29tbWFuZEJ1ZmZl
cjo6UmVtb3RlQ29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFu
ZEJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IDogbV9iYWNraW5nKGNvbW1hbmRCdWZmZXIpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVj
dFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lk
ZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZUNvbW1hbmRCdWZmZXI6On5SZW1vdGVD
b21tYW5kQnVmZmVyKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRCdWZmZXI6OnNldExhYmVsKFN0cmlu
ZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5z
ZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbW1hbmRCdWZmZXIuaAppbmRleCBkYTU2ZmJhNmE4YzM2M2I2NjIyNTllNmI2YjUw
M2RlNWJjYTU2MDA3Li4xNDBjMWE0OGExMWRlZjljYWJhYzlhNTFjODRhMWNkZGM3NDJkODVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbW1hbmRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXIuaApAQCAtNDAsMjEgKzQwLDIyIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFz
cyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlQ29tbWFuZEJ1ZmZlciBmaW5hbCA6
IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZm
ZXImIGNvbW1hbmRCdWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tbWFu
ZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlciwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVn
aXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29t
bWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1hbmRCdWZmZXIoY29tbWFuZEJ1ZmZlciwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVDb21tYW5kQnVmZmVyKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVj
dEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlQ29t
bWFuZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYsIFdlYkdQVTo6T2JqZWN0SGVh
cCYpOworICAgIFJlbW90ZUNvbW1hbmRCdWZmZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIm
LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVDb21tYW5kQnVmZmVyKGNvbnN0IFJlbW90ZUNvbW1hbmRC
dWZmZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVDb21tYW5kQnVmZmVyKFJlbW90ZUNvbW1hbmRC
dWZmZXImJikgPSBkZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+
IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7Cisg
ICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6
Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRF
bmNvZGVyLmNwcAppbmRleCA1NjhkMDEyYWZhZGNlZmE4MTI4YWM2OTNjMTdjNzI3NDRhNGVkNWM1
Li5hYzk0OWVmYTRiNmI0ZWNlMjJmMjE2Y2NhMTY1M2U1NzYwMGIwZDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMjgsMzIgKzI4LDU2IEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVk
ZSAiUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXIuaCIKICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuaCIKICNp
bmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0
cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVDb21tYW5kRW5jb2Rlcjo6UmVtb3Rl
Q29tbWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2Rl
ciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlQ29tbWFuZEVuY29kZXI6
OlJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFu
ZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICA6IG1fYmFja2luZyhjb21tYW5kRW5jb2RlcikKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2Jq
ZWN0UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1f
aWRlbnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQ29tbWFuZEVuY29kZXI6On5SZW1v
dGVDb21tYW5kRW5jb2RlcigpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3Qo
bV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5k
ZXJQYXNzKGNvbnN0IFdlYkdQVTo6UmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRv
cik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gY29udmVydGVkRGVz
Y3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3Ip
OworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERl
c2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVuZGVyUGFzc0VuY29kZXIg
PSBtX2JhY2tpbmctPmJlZ2luUmVuZGVyUGFzcygqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAg
YXV0byByZW1vdGVSZW5kZXJQYXNzRW5jb2RlciA9IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpj
cmVhdGUocmVuZGVyUGFzc0VuY29kZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVSZW5kZXJQYXNz
RW5jb2Rlcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0ZVBh
c3MoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJHUFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4mIGRl
c2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFS
QU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4gY29udmVydGVkRGVz
Y3JpcHRvcjsKKyAgICBpZiAoZGVzY3JpcHRvcikgeworICAgICAgICBhdXRvIHJlc3VsdERlc2Ny
aXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZygqZGVzY3JpcHRvcik7
CisgICAgICAgIEFTU0VSVChyZXN1bHREZXNjcmlwdG9yKTsKKyAgICAgICAgY29udmVydGVkRGVz
Y3JpcHRvciA9IFdURk1vdmUocmVzdWx0RGVzY3JpcHRvcik7CisgICAgICAgIGlmICghY29udmVy
dGVkRGVzY3JpcHRvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNv
bXB1dGVQYXNzRW5jb2RlciA9IG1fYmFja2luZy0+YmVnaW5Db21wdXRlUGFzcygqY29udmVydGVk
RGVzY3JpcHRvcik7CisgICAgYXV0byBjb21wdXRlUmVuZGVyUGFzc0VuY29kZXIgPSBSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShjb21wdXRlUGFzc0VuY29kZXIsIG1fb2JqZWN0UmVn
aXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9i
amVjdChjb21wdXRlUmVuZGVyUGFzc0VuY29kZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoCkBAIC02MywxMSArODcsMTQgQEAgdm9pZCBSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKAogICAgIFBBTDo6V2ViR1BVOjpT
aXplNjQgZGVzdGluYXRpb25PZmZzZXQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBzaXplKQog
ewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShzb3VyY2VPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRl
c3RpbmF0aW9uT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252
ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhz
b3VyY2UpOworICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2UpOworICAgIGF1dG8gY29udmVydGVk
RGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhz
b3VyY2UpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgaWYgKCFjb252
ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2JhY2tpbmctPmNvcHlCdWZmZXJUb0J1ZmZlcigqY29udmVydGVkU291cmNlLCBzb3Vy
Y2VPZmZzZXQsICpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgZGVzdGluYXRpb25PZmZzZXQsIHNpemUp
OwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKApA
QCAtNzUsOSArMTAyLDE2IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJU
b1RleHR1cmUoCiAgICAgY29uc3QgV2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlv
biwKICAgICBjb25zdCBXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNF
RF9QQVJBTShjb3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOworICAgIEFTU0VSVChjb252ZXJ0ZWRT
b3VyY2UpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERl
c3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5
U2l6ZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9u
IHx8ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5n
LT5jb3B5QnVmZmVyVG9UZXh0dXJlKCpjb252ZXJ0ZWRTb3VyY2UsICpjb252ZXJ0ZWREZXN0aW5h
dGlvbiwgKmNvbnZlcnRlZENvcHlTaXplKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6Y29weVRleHR1cmVUb0J1ZmZlcigKQEAgLTg1LDkgKzExOSwxNiBAQCB2b2lkIFJlbW90ZUNv
bW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKAogICAgIGNvbnN0IFdlYkdQVTo6SW1h
Z2VDb3B5QnVmZmVyJiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBXZWJHUFU6OkV4dGVudDNEJiBj
b3B5U2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShjb3B5U2l6ZSk7CisgICAgYXV0byBjb252
ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2Up
OworICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkRGVzdGlu
YXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7
CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZENv
cHlTaXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2Ug
fHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9iYWNraW5nLT5jb3B5VGV4dHVyZVRvQnVmZmVyKCpjb252ZXJ0ZWRT
b3VyY2UsICpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgKmNvbnZlcnRlZENvcHlTaXplKTsKIH0KIAog
dm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoCkBAIC05NSw5
ICsxMzYsMTYgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoCiAgICAgY29uc3QgV2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAg
ICBjb25zdCBXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TShjb3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhzb3VyY2UpOworICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2Up
OworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZl
cnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0
aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0RnJvbUJhY2tpbmcoY29weVNpemUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7
CisgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFj
b252ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5jb3B5
VGV4dHVyZVRvVGV4dHVyZSgqY29udmVydGVkU291cmNlLCAqY29udmVydGVkRGVzdGluYXRpb24s
ICpjb252ZXJ0ZWRDb3B5U2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmZp
bGxCdWZmZXIoCkBAIC0xMDUsMjkgKzE1MywzNyBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVy
OjpmaWxsQnVmZmVyKAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQs
CiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShkZXN0
aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0
UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NF
UlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+ZmlsbEJ1ZmZlcigqY29udmVydGVk
RGVzdGluYXRpb24sIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCBSZW1vdGVD
b21tYW5kRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZ3JvdXBMYWJlbCk7CisgICAgbV9iYWNraW5nLT5wdXNoRGVidWdHcm91
cChXVEZNb3ZlKGdyb3VwTGFiZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6
cG9wRGVidWdHcm91cCgpCiB7CisgICAgbV9iYWNraW5nLT5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAK
IHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1h
cmtlckxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7CisgICAgbV9iYWNr
aW5nLT5pbnNlcnREZWJ1Z01hcmtlcihXVEZNb3ZlKG1hcmtlckxhYmVsKSk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tbWFuZEVuY29kZXI6OndyaXRlVGltZXN0YW1wKFdlYkdQVUlkZW50aWZpZXIgcXVl
cnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVTRURfUEFS
QU0ocXVlcnlTZXQpOwotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRvIGNv
bnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0UXVlcnlTZXRGcm9tQmFj
a2luZyhxdWVyeVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAgICBpZiAo
IWNvbnZlcnRlZFF1ZXJ5U2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPndy
aXRlVGltZXN0YW1wKCpjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tbWFuZEVuY29kZXI6OnJlc29sdmVRdWVyeVNldCgKQEAgLTEzNywyMiArMTkzLDMx
IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OnJlc29sdmVRdWVyeVNldCgKICAgICBXZWJH
UFVJZGVudGlmaWVyIGRlc3RpbmF0aW9uLAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGVzdGlu
YXRpb25PZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oZmlyc3RRdWVyeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5Q291bnQpOwotICAgIFVO
VVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uT2Zm
c2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3RyeS5jb252
ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1
ZXJ5U2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252
ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCB8fCAhY29udmVy
dGVkRGVzdGluYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+cmVzb2x2
ZVF1ZXJ5U2V0KCpjb252ZXJ0ZWRRdWVyeVNldCwgZmlyc3RRdWVyeSwgcXVlcnlDb3VudCwgKmNv
bnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29tbWFuZEVuY29kZXI6OmZpbmlzaChjb25zdCBXZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9t
QmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7Cisg
ICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGNvbW1hbmRCdWZmZXIgPSBtX2JhY2tpbmctPmZpbmlzaCgqY29udmVydGVkRGVzY3JpcHRvcik7
CisgICAgYXV0byByZW1vdGVDb21tYW5kQnVmZmVyID0gUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbW1hbmRCdWZmZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRp
Zmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVDb21tYW5kQnVmZmVyKTsK
IH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdU
Rk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyLmgKaW5kZXggY2I2MGU0YjEzODZhMmUzZTBjZGQ1OWI3NmJmMmY4ZjY2NGVi
MzgwNC4uYmI2MDRhYTdjOGFkZGI0YzFmMGI5ZTAwMGRjYmJhYWY0OTg3MjI3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEVuY29kZXIuaApAQCAtNDYsMjIgKzQ2LDIzIEBAIHN0cnVjdCBDb21wdXRl
UGFzc0Rlc2NyaXB0b3I7CiBzdHJ1Y3QgSW1hZ2VDb3B5QnVmZmVyOwogc3RydWN0IEltYWdlQ29w
eVRleHR1cmU7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiBzdHJ1
Y3QgUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRFbmNvZGVy
IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNv
bW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+IGNyZWF0ZShQQUw6Oldl
YkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVDb21tYW5kRW5jb2Rlcihjb21tYW5kRW5jb2Rlciwgb2JqZWN0SGVhcCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kRW5jb2Rlcihjb21tYW5k
RW5jb2Rlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kRW5jb2RlcigpOwogCiBwcml2YXRlOgotICAg
IGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIAotICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rl
ciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6
V2ViR1BVOjpDb21tYW5kRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1hbmRFbmNv
ZGVyKGNvbnN0IFJlbW90ZUNvbW1hbmRFbmNvZGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29t
bWFuZEVuY29kZXIoUmVtb3RlQ29tbWFuZEVuY29kZXImJikgPSBkZWxldGU7CkBAIC0xMTgsNyAr
MTE5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJl
ZjxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXI+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BV
OjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYg
bV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsK
KyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3BwCmluZGV4IDQz
NTBhOWY2ZGYwMGY0NWMxYzIxNTlmYzYxYjM3YzdiZTIxZWY5MDQuLjhiMTIzMzE1OTc0ZGE2NGFi
MTE4ZjI4NTJmMjkwYzdjMmQ1YmNkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNz
RW5jb2Rlci5jcHAKQEAgLTI5LDc3ICsyOSw5OSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXI6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NF
bmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVh
cCkKK1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFBB
TDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQYXNzRW5jb2RlciwgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGNv
bXB1dGVQYXNzRW5jb2RlcikKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkp
CiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwg
bV9iYWNraW5nKTsKIH0KIAogUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjp+UmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxp
bmUoV2ViR1BVSWRlbnRpZmllciBjb21wdXRlUGlwZWxpbmUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGNvbXB1dGVQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUgPSBt
X29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhjb21wdXRl
UGlwZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpOworICAgIGlm
ICghY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Jh
Y2tpbmctPnNldFBpcGVsaW5lKCpjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpOwogfQogCiB2b2lk
IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB4
LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+IHksIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlNpemUzMj4geikKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh6KTsKKyAgICBtX2JhY2tpbmctPmRpc3BhdGNo
KHgsIHksIHopOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2hJ
bmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6
ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7
Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmco
aW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7Cisg
ICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9iYWNraW5nLT5kaXNwYXRjaEluZGlyZWN0KCpjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5k
aXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6YmVnaW5Q
aXBlbGluZVN0YXRpc3RpY3NRdWVyeShXZWJHUFVJZGVudGlmaWVyIHF1ZXJ5U2V0LCBQQUw6Oldl
YkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsK
LSAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNl
dCA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcocXVlcnlTZXQp
OworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7CisgICAgaWYgKCFjb252ZXJ0ZWRRdWVy
eVNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5iZWdpblBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KCpjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCiB7
CisgICAgbV9iYWNraW5nLT5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwogfQogCiB2b2lk
IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCiB7CisgICAgbV9iYWNraW5nLT5l
bmRQYXNzKCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3Jv
dXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgYmluZEdyb3Vw
LAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zm
c2V0Pj4mJiBvZmZzZXRzKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldHMpOworICAgIGF1dG8g
Y29udmVydGVkQmluZEdyb3VwID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QmluZEdyb3VwRnJv
bUJhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBBU1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsKKyAg
ICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNr
aW5nLT5zZXRCaW5kR3JvdXAoaW5kZXgsICpjb252ZXJ0ZWRCaW5kR3JvdXAsIFdURk1vdmUob2Zm
c2V0cykpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3Jv
dXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZ3JvdXBMYWJlbCk7
CisgICAgbV9iYWNraW5nLT5wdXNoRGVidWdHcm91cChXVEZNb3ZlKGdyb3VwTGFiZWwpKTsKIH0K
IAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnBvcERlYnVnR3JvdXAoKQogeworICAg
IG1fYmFja2luZy0+cG9wRGVidWdHcm91cCgpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKKyAgICBtX2JhY2tpbmctPmluc2VydERlYnVnTWFy
a2VyKFdURk1vdmUobWFya2VyTGFiZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJl
bCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKaW5k
ZXggNzdhZmJkOGU5YzU0ZWY2MjQ3MWZkMDg0ZDMxMjZmODFmMTI4ZWM1My4uMDBmOWRkMzBkNzE2
NWViZjk4ZDNiYTVhN2ZlYThhMDFiNjBlOThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlci5oCkBAIC00MSwyMSArNDEsMjIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5h
bWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5
OwogfQogCiBjbGFzcyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBD
OjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rl
ciYgY29tcHV0ZVBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisg
ICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcihjb21wdXRlUGFzc0VuY29kZXIsIG9i
amVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyKGNvbXB1dGVQYXNzRW5jb2Rlciwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAs
IGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXIoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBm
cmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXIoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYp
OworICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NF
bmNvZGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdl
YkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbnN0IFJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2RlcihSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImJikgPSBkZWxldGU7CkBAIC04Myw3ICs4
NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8
UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJH
UFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFw
OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5jcHAKaW5kZXggOWI5ZDkw
OTQ4MTkyYzRiZjAwMzQxY2Y4YmU2OGY0NmZkZTRjZmRhYy4uNzAxNmExZjk3OTA5ZWMyYjRiNmZm
ZDBmMWI4YjM0YmY0ZjExZTY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmNw
cApAQCAtMjgsMzAgKzI4LDM4IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFw
LmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dC5oPgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1SZW1vdGVDb21wdXRlUGlwZWxpbmU6OlJlbW90ZUNvbXB1dGVQaXBlbGluZShQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCkKK1JlbW90ZUNvbXB1dGVQaXBlbGluZTo6UmVtb3RlQ29tcHV0ZVBpcGVs
aW5lKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGNv
bXB1dGVQaXBlbGluZSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAg
ICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9i
YWNraW5nKTsKIH0KIAogUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjp+UmVtb3RlQ29tcHV0ZVBpcGVs
aW5lKCkKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVp
bnQzMl90IGluZGV4LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0byBi
aW5kR3JvdXBMYXlvdXQgPSBtX2JhY2tpbmctPmdldEJpbmRHcm91cExheW91dChpbmRleCk7Cisg
ICAgYXV0byByZW1vdGVCaW5kR3JvdXBMYXlvdXQgPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6OmNy
ZWF0ZShiaW5kR3JvdXBMYXlvdXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRl
bnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVCaW5kR3JvdXBMYXlv
dXQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQaXBlbGluZTo6c2V0TGFiZWwoU3RyaW5nJiYg
bGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExh
YmVsKFdURk1vdmUobGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1
dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21wdXRlUGlwZWxpbmUuaAppbmRleCBlYjM0MDQzZDc0OGZiZjdlZjZiZWEyYjMyZDUw
OWU2ZjBjZjJiMDIzLi44NGRhYWI4NmNjNjlkYjRmMzM1MWUxZmMxMGVmMzQ2M2JhNzc3ZGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbXB1dGVQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgKQEAgLTQwLDIxICs0MCwyMiBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOwor
Y2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQaXBlbGluZSBm
aW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGlwZWxpbmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4gY3JlYXRlKFBBTDo6
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RS
ZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0SGVh
cCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGlwZWxpbmUo
Y29tcHV0ZVBpcGVsaW5lLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbXB1dGVQaXBlbGluZSgpOwogCiBwcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZShQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lJiwgV2ViR1BVOjpPYmplY3RIZWFwJik7CisgICAgUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmLCBXZWJHUFU6Ok9iamVjdFJlZ2lz
dHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1v
dGVDb21wdXRlUGlwZWxpbmUoY29uc3QgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJikgPSBkZWxldGU7
CiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKFJlbW90ZUNvbXB1dGVQaXBlbGluZSYmKSA9IGRl
bGV0ZTsKQEAgLTY4LDcgKzY5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiBtX2JhY2tpbmc7
Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcAppbmRleCBiNDAxMmFhNzg2
NTg3YTQxMjc0ZjA4ZGJmYWU1YTJjZDlmNjA1MjliLi44NDVjNDNiNGQxNDE1MjNkYTY0MDliZTgw
NDQzODY4MWNjYmYzZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwCkBAIC0yOCwxMzEgKzI4LDI5MyBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3Vw
LmgiCisjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgiCisjaW5jbHVkZSAiUmVtb3Rl
QnVmZmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEVuY29kZXIuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDb21wdXRlUGlwZWxpbmUuaCIKKyNpbmNsdWRlICJSZW1vdGVFeHRlcm5hbFRleHR1cmUu
aCIKKyNpbmNsdWRlICJSZW1vdGVQaXBlbGluZUxheW91dC5oIgorI2luY2x1ZGUgIlJlbW90ZVF1
ZXJ5U2V0LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oIgorI2luY2x1
ZGUgIlJlbW90ZVJlbmRlclBpcGVsaW5lLmgiCisjaW5jbHVkZSAiUmVtb3RlU2FtcGxlci5oIgor
I2luY2x1ZGUgIlJlbW90ZVNoYWRlck1vZHVsZS5oIgorI2luY2x1ZGUgIlJlbW90ZVRleHR1cmUu
aCIKICNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaCIKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJXZWJHUFVPdXRPZk1lbW9yeUVycm9yLmgiCisjaW5jbHVkZSAiV2ViR1BVVmFs
aWRhdGlvbkVycm9yLmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5k
R3JvdXAuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91
cExheW91dC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
QnVmZmVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJEZXNj
cmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5j
b2Rlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29k
ZXJEZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21w
dXRlUGlwZWxpbmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVURldmljZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZXJu
YWxUZXh0dXJlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5h
bFRleHR1cmVEZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVQaXBlbGluZUxheW91dC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVRdWVyeVNldC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
UXVlcnlTZXREZXNjcmlwdG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVSZW5kZXJCdW5kbGVFbmNvZGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvci5oPgorI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oPgorI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2FtcGxlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVU2FtcGxlckRlc2NyaXB0b3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oPgorI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaD4KKwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UmVtb3RlRGV2aWNlOjpSZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2aWNlLCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVEZXZpY2U6OlJlbW90ZURldmlj
ZShQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhkZXZpY2UpCisgICAgLCBtX29iamVj
dFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXAp
CisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5
LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZURldmljZTo6
flJlbW90ZURldmljZSgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9p
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmRlc3Ryb3koKQogeworICAgIG1f
YmFja2luZy0+ZGVzdHJveSgpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQnVmZmVy
KGNvbnN0IFdlYkdQVTo6QnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBV
TlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNT
RVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBidWZmZXIgPSBtX2JhY2tpbmctPmNyZWF0ZUJ1
ZmZlcigqY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgYXV0byByZW1vdGVCdWZmZXIgPSBSZW1v
dGVCdWZmZXI6OmNyZWF0ZShidWZmZXIsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwg
aWRlbnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVCdWZmZXIpOwog
fQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXZWJHUFU6OlRleHR1
cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlm
aWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNv
bnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3Jp
cHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHRleHR1cmUgPSBtX2JhY2tpbmctPmNyZWF0ZVRleHR1cmUoKmNvbnZlcnRlZERl
c2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlVGV4dHVyZSA9IFJlbW90ZVRleHR1cmU6OmNyZWF0
ZSh0ZXh0dXJlLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOwor
ICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlVGV4dHVyZSk7CiB9CiAKIHZvaWQgUmVt
b3RlRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdlYkdQVTo6U2FtcGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURf
UEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1
dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNr
aW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBp
ZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2Ft
cGxlciA9IG1fYmFja2luZy0+Y3JlYXRlU2FtcGxlcigqY29udmVydGVkRGVzY3JpcHRvcik7Cisg
ICAgYXV0byByZW1vdGVTYW1wbGVyID0gUmVtb3RlU2FtcGxlcjo6Y3JlYXRlKHNhbXBsZXIsIG1f
b2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgbV9vYmplY3RI
ZWFwLmFkZE9iamVjdChyZW1vdGVTYW1wbGVyKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6Omlt
cG9ydEV4dGVybmFsVGV4dHVyZShjb25zdCBXZWJHUFU6OkV4dGVybmFsVGV4dHVyZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVT
RURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAg
IGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21C
YWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAg
ICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
ZXh0ZXJuYWxUZXh0dXJlID0gbV9iYWNraW5nLT5pbXBvcnRFeHRlcm5hbFRleHR1cmUoKmNvbnZl
cnRlZERlc2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlRXh0ZXJuYWxUZXh0dXJlID0gUmVtb3Rl
RXh0ZXJuYWxUZXh0dXJlOjpjcmVhdGUoZXh0ZXJuYWxUZXh0dXJlLCBtX29iamVjdFJlZ2lzdHJ5
LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3Qo
cmVtb3RlRXh0ZXJuYWxUZXh0dXJlKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUJp
bmRHcm91cExheW91dChjb25zdCBXZWJHUFU6OkJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBVTlVTRURfUEFS
QU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8g
Y29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5n
KGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAo
IWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYmluZEdy
b3VwTGF5b3V0ID0gbV9iYWNraW5nLT5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoKmNvbnZlcnRlZERl
c2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmluZEdy
b3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29i
amVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3Rl
QmluZEdyb3VwTGF5b3V0KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KGNvbnN0IFdlYkdQVTo6UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNvbnZlcnRl
ZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlw
dG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0
ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHBpcGVsaW5lTGF5b3V0
ID0gbV9iYWNraW5nLT5jcmVhdGVQaXBlbGluZUxheW91dCgqY29udmVydGVkRGVzY3JpcHRvcik7
CisgICAgYXV0byByZW1vdGVQaXBlbGluZUxheW91dCA9IFJlbW90ZVBpcGVsaW5lTGF5b3V0Ojpj
cmVhdGUocGlwZWxpbmVMYXlvdXQsIG1fb2JqZWN0UmVnaXN0cnksIG1fb2JqZWN0SGVhcCwgaWRl
bnRpZmllcik7CisgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChyZW1vdGVQaXBlbGluZUxheW91
dCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV2ViR1BV
OjpCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJB
TShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVy
dGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGJpbmRHcm91cCA9IG1fYmFja2luZy0+Y3JlYXRlQmluZEdyb3Vw
KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZUJpbmRHcm91cCA9IFJlbW90
ZUJpbmRHcm91cDo6Y3JlYXRlKGJpbmRHcm91cCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RI
ZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZUJpbmRH
cm91cCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3Qg
V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVO
VVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NF
UlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNoYWRlck1vZHVsZSA9IG1fYmFja2luZy0+Y3Jl
YXRlU2hhZGVyTW9kdWxlKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVNo
YWRlck1vZHVsZSA9IFJlbW90ZVNoYWRlck1vZHVsZTo6Y3JlYXRlKHNoYWRlck1vZHVsZSwgbV9v
YmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhl
YXAuYWRkT2JqZWN0KHJlbW90ZVNoYWRlck1vZHVsZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNl
OjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRG
cm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7
CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGNvbXB1dGVQaXBlbGluZSA9IG1fYmFja2luZy0+Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCpj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJl
bW90ZUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgbV9vYmplY3RSZWdp
c3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2Jq
ZWN0KHJlbW90ZUNvbXB1dGVQaXBlbGluZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVh
dGVSZW5kZXJQaXBlbGluZShjb25zdCBXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVOVVNFRF9Q
QVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisgICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tp
bmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGlm
ICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZW5k
ZXJQaXBlbGluZSA9IG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoKmNvbnZlcnRlZERl
c2NyaXB0b3IpOworICAgIGF1dG8gcmVtb3RlUmVuZGVyUGlwZWxpbmUgPSBSZW1vdGVSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKHJlbmRlclBpcGVsaW5lLCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVj
dEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlUmVu
ZGVyUGlwZWxpbmUpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmMoY29uc3QgV2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAg
ICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRG
cm9tQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7
CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2JhY2tpbmctPmNyZWF0ZUNvbXB1dGVQaXBl
bGluZUFzeW5jKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgd2Vha09iamVjdEhlYXAgPSBXZWFrUHRyPFdlYkdQVTo6T2JqZWN0SGVhcD4obV9vYmpl
Y3RIZWFwKSwgb2JqZWN0UmVnaXN0cnkgPSBtX29iamVjdFJlZ2lzdHJ5LCBpZGVudGlmaWVyXSAo
UmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgY29tcHV0ZVBpcGVsaW5lKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgYXV0byByZW1vdGVDb21wdXRlUGlwZWxpbmUgPSBSZW1vdGVDb21wdXRlUGlwZWxp
bmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhl
YXAsIGlkZW50aWZpZXIpOworICAgICAgICB3ZWFrT2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90
ZUNvbXB1dGVQaXBlbGluZSk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7CiB9CiAKIHZv
aWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFdlYkdQVTo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewot
ICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmll
cik7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2Ny
aXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkZXNjcmlwdG9yKTsK
KyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNj
cmlwdG9yKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2JhY2tpbmctPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmNvbnZlcnRlZERlc2Ny
aXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrT2JqZWN0SGVhcCA9IFdl
YWtQdHI8V2ViR1BVOjpPYmplY3RIZWFwPihtX29iamVjdEhlYXApLCBvYmplY3RSZWdpc3RyeSA9
IG1fb2JqZWN0UmVnaXN0cnksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBp
cGVsaW5lPiYmIHJlbmRlclBpcGVsaW5lKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrT2Jq
ZWN0SGVhcCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byByZW1vdGVSZW5kZXJQ
aXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG9i
amVjdFJlZ2lzdHJ5LCAqd2Vha09iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgICAgICB3ZWFr
T2JqZWN0SGVhcC0+YWRkT2JqZWN0KHJlbW90ZVJlbmRlclBpcGVsaW5lKTsKKyAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRF
bmNvZGVyKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViR1BVOjpDb21tYW5kRW5jb2RlckRlc2NyaXB0
b3I+JiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I+IGNv
bnZlcnRlZERlc2NyaXB0b3I7CisgICAgaWYgKGRlc2NyaXB0b3IpIHsKKyAgICAgICAgYXV0byBy
ZXN1bHREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoKmRl
c2NyaXB0b3IpOworICAgICAgICBBU1NFUlQocmVzdWx0RGVzY3JpcHRvcik7CisgICAgICAgIGNv
bnZlcnRlZERlc2NyaXB0b3IgPSBXVEZNb3ZlKHJlc3VsdERlc2NyaXB0b3IpOworICAgICAgICBp
ZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGF1dG8gY29tbWFuZEVuY29kZXIgPSBtX2JhY2tpbmctPmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCpj
b252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZUNvbW1hbmRFbmNvZGVyID0gUmVt
b3RlQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShjb21tYW5kRW5jb2RlciwgbV9vYmplY3RSZWdpc3Ry
eSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0
KHJlbW90ZUNvbW1hbmRFbmNvZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OmNyZWF0ZVJl
bmRlckJ1bmRsZUVuY29kZXIoY29uc3QgV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJv
bUJhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwor
ICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byByZW5kZXJCdW5kbGVFbmNvZGVyID0gbV9iYWNraW5nLT5jcmVhdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXIgPSBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpjcmVhdGUocmVuZGVyQnVuZGxlRW5j
b2RlciwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBt
X29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIpOwogfQogCiB2
b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlUXVlcnlTZXQoY29uc3QgV2ViR1BVOjpRdWVyeVNldERl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIp
OworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVy
dEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gcXVlcnlTZXQgPSBtX2JhY2tpbmctPmNyZWF0ZVF1ZXJ5U2V0KCpjb252ZXJ0ZWREZXNj
cmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVF1ZXJ5U2V0ID0gUmVtb3RlUXVlcnlTZXQ6OmNyZWF0
ZShxdWVyeVNldCwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsK
KyAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVF1ZXJ5U2V0KTsKIH0KIAogdm9pZCBS
ZW1vdGVEZXZpY2U6OnB1c2hFcnJvclNjb3BlKFBBTDo6V2ViR1BVOjpFcnJvckZpbHRlciBlcnJv
ckZpbHRlcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3JGaWx0ZXIpOworICAgIG1fYmFja2lu
Zy0+cHVzaEVycm9yU2NvcGUoZXJyb3JGaWx0ZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZTo6
cG9wRXJyb3JTY29wZShXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJHUFU6OkVycm9yPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJh
Y2spOworICAgIG1fYmFja2luZy0+cG9wRXJyb3JTY29wZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0gKHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkVycm9yPiYmIGVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCFlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpu
dWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6
c3dpdGNoT24oKmVycm9yLCBbJl0gKFJlZjxQQUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvcj4g
b3V0T2ZNZW1vcnlFcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2soeyBXZWJHUFU6Ok91dE9m
TWVtb3J5RXJyb3IgeyB9IH0pOworICAgICAgICB9LCBbJl0gKFJlZjxQQUw6OldlYkdQVTo6VmFs
aWRhdGlvbkVycm9yPiB2YWxpZGF0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsg
V2ViR1BVOjpWYWxpZGF0aW9uRXJyb3IgeyB2YWxpZGF0aW9uRXJyb3ItPm1lc3NhZ2UoKSB9IH0p
OworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2U6OnNldExhYmVs
KFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNr
aW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVEZXZpY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlRGV2aWNlLmgKaW5kZXggOWVhMjBhNzNiYmJlNWQwNzYzODFmODcxZGYyNjJmMmQxODQ1
YzgzYS4uNDk3Y2RhMDk2MTRlZTQ2YWQwYzE1NzkyOGQxNmEyMmFiNjBiZTc2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURl
dmljZS5oCkBAIC00OSw2ICs0OSw3IEBAIHN0cnVjdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I7
CiBzdHJ1Y3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKIHN0cnVjdCBFeHRlcm5hbFRleHR1
cmVEZXNjcmlwdG9yOwogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5Owog
c3RydWN0IFBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKIHN0cnVjdCBRdWVyeVNldERlc2NyaXB0
b3I7CiBzdHJ1Y3QgUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I7CkBAIC02MCwxNyArNjEs
MTcgQEAgc3RydWN0IFRleHR1cmVEZXNjcmlwdG9yOwogCiBjbGFzcyBSZW1vdGVEZXZpY2UgZmlu
YWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlRGV2aWNlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2aWNl
LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVE
ZXZpY2U+IGNyZWF0ZShQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZURldmljZShkZXZpY2UsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRGV2aWNlKGRldmljZSwgb2JqZWN0UmVnaXN0cnksIG9i
amVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3RlRGV2aWNlKCk7CiAK
IHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNz
IE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZpY2Um
LCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVEZXZpY2UoUEFMOjpXZWJHUFU6OkRl
dmljZSYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJH
UFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZURldmljZShjb25zdCBSZW1vdGVEZXZpY2UmKSA9
IGRlbGV0ZTsKICAgICBSZW1vdGVEZXZpY2UoUmVtb3RlRGV2aWNlJiYpID0gZGVsZXRlOwpAQCAt
MTA3LDcgKzEwOCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAK
ICAgICBSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6
Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBt
X29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwor
ICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHAKaW5kZXggNjhiYzRkOTdi
NWYwYjg3ZmU5MTZiZDcwNTNjZDQzZDg0NTdhNjk3Yy4uOTUzZDBlNGQ4MGE2ZWY4ZmRiM2Q3NjE1
N2Q3MmNhNDQ5ZTg0MDJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmNwcApA
QCAtMjksMjMgKzI5LDI4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUV4dGVybmFsVGV4dHVyZTo6UmVtb3RlRXh0ZXJu
YWxUZXh0dXJlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpS
ZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJu
YWxUZXh0dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX2JhY2tpbmcoZXh0ZXJuYWxUZXh0dXJlKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShv
YmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3Qo
bV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBSZW1vdGVFeHRlcm5hbFRleHR1cmU6On5S
ZW1vdGVFeHRlcm5hbFRleHR1cmUoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2Jq
ZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpzZXRM
YWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1f
YmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5oCmluZGV4IGRmY2RlM2Q3OGRkMjNk
NWRkODAzZWU1M2NiNjk0NGM4ZjhhODVjM2QuLjMxZDFjNTQzOTkyYmJiYmVmMTM0NjJiZDEwM2Ji
ODI4ZTFmZjk2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuaApAQCAtNDAsMjEg
KzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNz
IE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlRXh0
ZXJuYWxUZXh0dXJlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVybmFsVGV4dHVyZT4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJl
PiBjcmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlLCBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVFeHRlcm5hbFRleHR1cmUoZXh0ZXJuYWxUZXh0
dXJlLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUV4
dGVybmFsVGV4dHVyZShleHRlcm5hbFRleHR1cmUsIG9iamVjdFJlZ2lzdHJ5LCBvYmplY3RIZWFw
LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlRXh0ZXJuYWxUZXh0
dXJlKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhlYXA7CisgICAgZnJp
ZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFBB
TDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBS
ZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVy
KTsKIAogICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZShjb25zdCBSZW1vdGVFeHRlcm5hbFRleHR1
cmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVFeHRlcm5hbFRleHR1cmUoUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlJiYpID0gZGVsZXRlOwpAQCAtNjYsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1
cmU+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7
CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJH
UFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCmluZGV4IGFk
NDBmNTA1YmNiNDA2MzU2MzRjOTY1ZmRmYWJmYWMxYjA3MjQ4OTYuLjM4MmY4ZTM2ZGZmM2M4ODgw
NzlhNmQ0YmZiZWYyNTM0Y2EyYzVhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKQEAgLTI4LDI1ICsyOCw3NiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQWRhcHRlci5o
IgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1SZW1vdGVHUFU6OlJlbW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiBncHUsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZUdQVTo6UmVtb3RlR1BVKFBBTDo6
V2ViR1BVOjpHUFUmIGdwdSwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnks
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKGdwdSkKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0
UmVnaXN0cnkpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRl
bnRpZmllciwgbV9iYWNraW5nKTsKIH0KIAogUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkKIHsKKyAg
ICBtX29iamVjdFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCi12b2lk
IFJlbW90ZUdQVTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9w
dGlvbnMmIG9wdGlvbnMsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2Vi
R1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4mJiBj
YWxsYmFjaykKK3ZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJl
cXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYsIFdlYkdQVTo6U3VwcG9ydGVk
RmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Cisg
ICAgYXV0byBjb252ZXJ0ZWRPcHRpb25zID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJh
Y2tpbmcob3B0aW9ucyk7CisgICAgQVNTRVJUKGNvbnZlcnRlZE9wdGlvbnMpOworICAgIGlmICgh
Y29udmVydGVkT3B0aW9ucykgeworICAgICAgICBjYWxsYmFjayhTdHJpbmdJbXBsOjplbXB0eSgp
LCB7IHsgfSB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9iYWNraW5n
LT5yZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHdlYWtPYmplY3RIZWFwID0gV2Vha1B0cjxXZWJHUFU6Ok9iamVjdEhlYXA+KG1f
b2JqZWN0SGVhcCksIG9iamVjdFJlZ2lzdHJ5ID0gbV9vYmplY3RSZWdpc3RyeSwgaWRlbnRpZmll
cl0gKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKCF3ZWFrT2JqZWN0SGVhcCB8fCAhYWRhcHRlcikgeworICAgICAgICAgICAgLy8g
RklYTUU6IERlYWwgd2l0aCBmYWlsdXJlIGhlcmUuCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgYXV0byByZW1vdGVBZGFwdGVyID0gUmVtb3RlQWRhcHRlcjo6Y3JlYXRl
KCphZGFwdGVyLCBvYmplY3RSZWdpc3RyeSwgKndlYWtPYmplY3RIZWFwLCBpZGVudGlmaWVyKTsK
KyAgICAgICAgd2Vha09iamVjdEhlYXAtPmFkZE9iamVjdChyZW1vdGVBZGFwdGVyKTsKKyAgICAg
ICAgYXV0byBuYW1lID0gYWRhcHRlci0+bmFtZSgpOworICAgICAgICBjb25zdCBhdXRvJiBmZWF0
dXJlcyA9IGFkYXB0ZXItPmZlYXR1cmVzKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIGxpbWl0cyA9
IGFkYXB0ZXItPmxpbWl0cygpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG5hbWUpLCBXZWJH
UFU6OlN1cHBvcnRlZEZlYXR1cmVzIHsgZmVhdHVyZXMuZmVhdHVyZXMoKSB9LCBXZWJHUFU6OlN1
cHBvcnRlZExpbWl0cyB7CisgICAgICAgICAgICBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFE
KCksCisgICAgICAgICAgICBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJEKCksCisgICAgICAg
ICAgICBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEKCksCisgICAgICAgICAgICBsaW1pdHMu
bWF4VGV4dHVyZUFycmF5TGF5ZXJzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4QmluZEdyb3Vw
cygpLAorICAgICAgICAgICAgbGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVs
aW5lTGF5b3V0KCksCisgICAgICAgICAgICBsaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJz
UGVyUGlwZWxpbmVMYXlvdXQoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTYW1wbGVkVGV4dHVy
ZXNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICAgICAgbGltaXRzLm1heFNhbXBsZXJzUGVyU2hh
ZGVyU3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRl
clN0YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVy
U3RhZ2UoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0
YWdlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplKCks
CisgICAgICAgICAgICBsaW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplKCksCisgICAg
ICAgICAgICBsaW1pdHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCgpLAorICAgICAg
ICAgICAgbGltaXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAgICAgICAg
ICAgIGxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJzKCksCisgICAgICAgICAgICBsaW1pdHMubWF4VmVy
dGV4QXR0cmlidXRlcygpLAorICAgICAgICAgICAgbGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5
U3RyaWRlKCksCisgICAgICAgICAgICBsaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVu
dHMoKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUo
KSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAo
KSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgoKSwKKyAgICAg
ICAgICAgIGxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVkoKSwKKyAgICAgICAgICAgIGxp
bWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVooKSwKKyAgICAgICAgICAgIGxpbWl0cy5tYXhD
b21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbigpLAorICAgICAgICB9KTsKKyAgICB9KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAppbmRleCBlNDkyZDI5YzI1NmRiNjkyNjhl
YjhjZmNlY2IxOTY2NjUyYmEzNmYwLi5mMDllOTI1MDQyYjFmMjg3N2RkN2ZhODQyMDk4YWZmOTgx
YzVhYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUdQVS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlR1BVLmgKQEAgLTQyLDIyICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVn
aXN0cnk7CiBzdHJ1Y3QgUmVxdWVzdEFkYXB0ZXJPcHRpb25zOwogfQogCiBjbGFzcyBSZW1vdGVH
UFUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkdQVSYgZ3B1LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVHUFU+
IGNyZWF0ZShQQUw6OldlYkdQVTo6R1BVJiBncHUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9i
amVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZUdQVShncHUsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlR1BVKGdwdSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVHUFUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAK
LSAgICBSZW1vdGVHUFUoUEFMOjpXZWJHUFU6OkdQVSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOwor
ICAgIFJlbW90ZUdQVShQQUw6OldlYkdQVTo6R1BVJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYs
IFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlR1BV
KGNvbnN0IFJlbW90ZUdQVSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUdQVShSZW1vdGVHUFUmJikg
PSBkZWxldGU7CkBAIC02NiwxMCArNjcsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6
OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0
cyYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RB
ZGFwdGVyT3B0aW9ucyYsIFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBv
cnRlZExpbWl0cyYmKT4mJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNraW5n
OwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6
Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVh
cCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2VzLmluCmluZGV4
IDg2NThlN2Y1YzdjZTQxNjdjY2QzNGQ1OTFkNWIyZjEyZWU2MTdhNzcuLjQ3MDkxMGI5MjM1ZjQx
MTUzYTYwZTY0MGM4NzM4NDE0ZDMyYzM5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2VzLmlu
CkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAt
PiBSZW1vdGVHUFUgTm90UmVmQ291bnRlZCBTdHJlYW0gewotICAgIHZvaWQgUmVxdWVzdEFkYXB0
ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyBvcHRpb25zKSAtPiAoU3Ry
aW5nIG5hbWUsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyBzdXBwb3J0ZWRGZWF0
dXJlcywgV2ViS2l0OjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyBzdXBwb3J0ZWRMaW1pdHMpIFN5
bmNocm9ub3VzCisgICAgdm9pZCBSZXF1ZXN0QWRhcHRlcihXZWJLaXQ6OldlYkdQVTo6UmVxdWVz
dEFkYXB0ZXJPcHRpb25zIG9wdGlvbnMsIFdlYktpdDo6V2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKSAtPiAoU3RyaW5nIG5hbWUsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyBz
dXBwb3J0ZWRGZWF0dXJlcywgV2ViS2l0OjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyBzdXBwb3J0
ZWRMaW1pdHMpIFN5bmNocm9ub3VzCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5l
TGF5b3V0LmNwcAppbmRleCBmMTBmYWRmZTY2YzQ4NTA3NWU5MTZkNTg2Mjg2MDVjZmQ1NDQzYzVm
Li42Y2Q4YjY3N2Q1OTE4MDJjNjI5ZGI2ZmQzNDg3NDc2YWEzZTZlMGMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVBpcGVsaW5lTGF5b3V0LmNwcApAQCAtMjksMjMgKzI5LDI4IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldl
YkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVQaXBlbGluZUxheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUGlwZWxp
bmVMYXlvdXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91
dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90
ZVBpcGVsaW5lTGF5b3V0OjpSZW1vdGVQaXBlbGluZUxheW91dChQQUw6OldlYkdQVTo6UGlwZWxp
bmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RS
ZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocGlwZWxpbmVMYXlvdXQpCisgICAgLCBtX29i
amVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhl
YXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lz
dHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVBpcGVs
aW5lTGF5b3V0Ojp+UmVtb3RlUGlwZWxpbmVMYXlvdXQoKQogeworICAgIG1fb2JqZWN0UmVnaXN0
cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUGlwZWxpbmVM
YXlvdXQ6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJl
bCk7CisgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5oCmluZGV4IGRjZTlk
YTUwZTkwNDQyZDEyMzI0MjU4NjhmOTQ5MmRjMDViZWZmMmEuLjIzYmNhZWI2MDY0MTIwYjUzMjA3
MmM3MzYyYTg2ZjBmNmM2N2YyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmgKQEAg
LTQwLDIxICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJl
bW90ZVBpcGVsaW5lTGF5b3V0IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2Vp
dmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0PiBjcmVh
dGUoUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlv
dXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBX
ZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91
dCwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVQaXBl
bGluZUxheW91dChwaXBlbGluZUxheW91dCwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVQaXBlbGluZUxheW91dCgp
OwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBj
bGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2Vi
R1BVOjpQaXBlbGluZUxheW91dCYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZVBp
cGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAg
IFJlbW90ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFJlbW90ZVBpcGVsaW5lTGF5b3V0JikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoUmVtb3RlUGlwZWxpbmVMYXlvdXQmJikgPSBk
ZWxldGU7CkBAIC02Niw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJp
bmcmJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0PiBtX2JhY2tpbmc7
Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFw
JiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5jcHAKaW5kZXggMTBjM2I5
NzhlOTI5YjM1YzliOTA1YjkyYjk0NTRiMzdlMDJiM2U5NC4uZTBjZDFjNWMzZDdiMTU0NTU1ZGQx
MTg5MWQ2YWIyMDA3Y2FmNGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5jcHAKQEAgLTI5LDI3ICsy
OSwzMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVU9iamVj
dEhlYXAuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlTZXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVJlbW90ZVF1ZXJ5U2V0OjpSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQm
IHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVRdWVyeVNl
dDo6UmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgb2JqZWN0UmVnaXN0cnksIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHF1
ZXJ5U2V0KQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1f
b2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7
CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcp
OwogfQogCiBSZW1vdGVRdWVyeVNldDo6flJlbW90ZVF1ZXJ5U2V0KCkKIHsKKyAgICBtX29iamVj
dFJlZ2lzdHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVF1
ZXJ5U2V0OjpkZXN0cm95KCkKIHsKKyAgICBtX2JhY2tpbmctPmRlc3Ryb3koKTsKIH0KIAogdm9p
ZCBSZW1vdGVRdWVyeVNldDo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmgKaW5kZXggMTY1MDJl
YjgxNzU0YjU3Y2JhYTA3OTQyOWMyOGU0ZGU0NWU3NjkwOC4uZTE3ZDczYzMyZWYzZWYwZjM3ZDZh
YmVhNTU1OTBmOWQwNTEyNjM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuaApAQCAtNDAsMjEgKzQwLDIy
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVj
dEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAogY2xhc3MgUmVtb3RlUXVlcnlTZXQg
ZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UmVtb3RlUXVlcnlTZXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVlcnlTZXQm
IHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVRdWVyeVNldD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQs
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5U2V0LCBvYmplY3RI
ZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5
U2V0LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgflJlbW90ZVF1ZXJ5U2V0KCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAg
UmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiwgV2ViR1BVOjpPYmplY3RIZWFw
Jik7CisgICAgUmVtb3RlUXVlcnlTZXQoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiwgV2ViR1BVOjpP
YmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwog
CiAgICAgUmVtb3RlUXVlcnlTZXQoY29uc3QgUmVtb3RlUXVlcnlTZXQmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVRdWVyeVNldChSZW1vdGVRdWVyeVNldCYmKSA9IGRlbGV0ZTsKQEAgLTY4LDcgKzY5
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQ
QUw6OldlYkdQVTo6UXVlcnlTZXQ+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RI
ZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RS
ZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJH
UFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVF1ZXVlLmNwcAppbmRleCBkYTExNjUxODM1NTEzZTA5Y2E2NzY4NjQ0Yjc4MDZjODg2M2Ux
NDRjLi5kZWE2NDA5OGZhNmQ0NWM4NTczOTM0NGU1YWE3ZjBmMDgyM2I5YTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXVlLmNwcApAQCAtMjksMjggKzI5LDQ0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWV1ZS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUXVldWU6OlJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BV
OjpRdWV1ZSYgcXVldWUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZVF1
ZXVlOjpSZW1vdGVRdWV1ZShQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocXVldWUpCisg
ICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFw
KG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29i
amVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJl
bW90ZVF1ZXVlOjp+UmVtb3RlUXVldWUoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3Zl
T2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUXVldWU6OnN1Ym1pdChWZWN0
b3I8V2ViR1BVSWRlbnRpZmllcj4mJiBjb21tYW5kQnVmZmVycykKIHsKLSAgICBVTlVTRURfUEFS
QU0oY29tbWFuZEJ1ZmZlcnMpOworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBB
TDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4gY29udmVydGVkQ29tbWFuZEJ1ZmZlcnM7CisgICAg
Y29udmVydGVkQ29tbWFuZEJ1ZmZlcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb21tYW5kQnVm
ZmVycy5zaXplKCkpOworICAgIGZvciAoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyIDogY29t
bWFuZEJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRDb21tYW5kQnVmZmVyID0gbV9v
YmplY3RSZWdpc3RyeS5jb252ZXJ0Q29tbWFuZEJ1ZmZlckZyb21CYWNraW5nKGlkZW50aWZpZXIp
OworICAgICAgICBBU1NFUlQoY29udmVydGVkQ29tbWFuZEJ1ZmZlcik7CisgICAgICAgIGlmICgh
Y29udmVydGVkQ29tbWFuZEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29u
dmVydGVkQ29tbWFuZEJ1ZmZlcnMudW5jaGVja2VkQXBwZW5kKCpjb252ZXJ0ZWRDb21tYW5kQnVm
ZmVyKTsKKyAgICB9CisgICAgbV9iYWNraW5nLT5zdWJtaXQoV1RGTW92ZShjb252ZXJ0ZWRDb21t
YW5kQnVmZmVycykpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlOjpvblN1Ym1pdHRlZFdvcmtEb25l
KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNF
RF9QQVJBTShjYWxsYmFjayk7CisgICAgbV9iYWNraW5nLT5vblN1Ym1pdHRlZFdvcmtEb25lKFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1ZTo6d3JpdGVCdWZmZXIoCkBAIC01
OCw5ICs3NCwxMiBAQCB2b2lkIFJlbW90ZVF1ZXVlOjp3cml0ZUJ1ZmZlcigKICAgICBQQUw6Oldl
YkdQVTo6U2l6ZTY0IGJ1ZmZlck9mZnNldCwKICAgICBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQog
ewotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShidWZmZXJPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9
IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlcik7CisgICAg
QVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+d3JpdGVCdWZmZXIoKmNvbnZlcnRlZEJ1ZmZl
ciwgYnVmZmVyT2Zmc2V0LCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDAsIHN0ZDo6bnVsbG9w
dCk7CiB9CiAKIHZvaWQgUmVtb3RlUXVldWU6OndyaXRlVGV4dHVyZSgKQEAgLTY5LDEwICs4OCwx
NiBAQCB2b2lkIFJlbW90ZVF1ZXVlOjp3cml0ZVRleHR1cmUoCiAgICAgY29uc3QgV2ViR1BVOjpJ
bWFnZURhdGFMYXlvdXQmIGRhdGFMYXlvdXQsCiAgICAgY29uc3QgV2ViR1BVOjpFeHRlbnQzRCYg
c2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YUxheW91dCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNpemUpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX29iamVjdFJlZ2lzdHJ5
LmNvbnZlcnRGcm9tQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERl
c3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZERhdGFMYXlvdXQgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRGcm9tQmFja2luZyhkYXRhTGF5b3V0KTsKKyAgICBBU1NFUlQoY29udmVydGVk
RGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkU2l6ZSA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEZyb21CYWNraW5nKHNpemUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRTaXplKTsKKyAg
ICBpZiAoIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAh
Y29udmVydGVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT53cml0ZVRl
eHR1cmUoKmNvbnZlcnRlZERlc3RpbmF0aW9uLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksICpj
b252ZXJ0ZWREYXRhTGF5b3V0LCAqY29udmVydGVkU2l6ZSk7CiB9CiAKIHZvaWQgUmVtb3RlUXVl
dWU6OmNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlKApAQCAtODAsMTQgKzEwNSwyMSBAQCB2b2lk
IFJlbW90ZVF1ZXVlOjpjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgKICAgICBjb25zdCBXZWJH
UFU6OkltYWdlQ29weVRleHR1cmVUYWdnZWQmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFdlYkdQ
VTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAg
IFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsK
KyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21C
YWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBj
b252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5n
KGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1
dG8gY29udmVydGVkQ29weVNpemUgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
Zyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNv
bnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVk
Q29weVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+Y29weUV4dGVybmFs
SW1hZ2VUb1RleHR1cmUoKmNvbnZlcnRlZFNvdXJjZSwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCAq
Y29udmVydGVkQ29weVNpemUpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlOjpzZXRMYWJlbChTdHJp
bmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIG1fYmFja2luZy0+
c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UXVldWUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UXVldWUuaAppbmRleCBkZjMwMWRhZDE1ODMzZDYxNzczMjNkNGNkYzYyNWEzZTJiZDJhY2VhLi5h
NTBhZjgyNDUxZmI5ZmJlZGE5N2MxMDY1ZTY5MzY1ZjM5ZjdiMzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oCkBA
IC00OSwyMSArNDksMjIgQEAgc3RydWN0IEltYWdlQ29weVRleHR1cmU7CiBzdHJ1Y3QgSW1hZ2VD
b3B5VGV4dHVyZVRhZ2dlZDsKIHN0cnVjdCBJbWFnZURhdGFMYXlvdXQ7CiBjbGFzcyBPYmplY3RI
ZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVF1ZXVlIGZpbmFs
IDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlbW90ZVF1ZXVlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVldWU+
IGNyZWF0ZShQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVRdWV1ZShxdWV1ZSwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVRdWV1ZShxdWV1ZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhlYXAsIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVRdWV1ZSgpOwogCiBwcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVuZCBjbGFzcyBPYmpl
Y3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpRdWV1ZSYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZVF1ZXVlKFBBTDo6V2ViR1BVOjpRdWV1ZSYsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlm
aWVyKTsKIAogICAgIFJlbW90ZVF1ZXVlKGNvbnN0IFJlbW90ZVF1ZXVlJikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlUXVldWUoUmVtb3RlUXVldWUmJikgPSBkZWxldGU7CkBAIC05NSw3ICs5Niw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBSZWY8UEFMOjpX
ZWJHUFU6OlF1ZXVlPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9v
YmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7
CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
QnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyQnVuZGxlLmNwcAppbmRleCA5OTQwNTc5ZTJkOTBlNmFiMDE5ZjM1ZDBiOTY3MTRl
OTEzNjgzOGU3Li4xN2UwYWNmOTAxOWMzNGQ5OWYyYjA2NzcyODQxZDM1ZDM4ZjhjOWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJl
bmRlckJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3BwCkBAIC0yOSwyMyArMjksMjggQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVJlbmRlckJ1bmRsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlUmVu
ZGVyQnVuZGxlOjpSZW1vdGVSZW5kZXJCdW5kbGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSYg
cmVuZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVSZW5k
ZXJCdW5kbGU6OlJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiBy
ZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICA6IG1fYmFja2luZyhyZW5kZXJCdW5kbGUpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9i
amVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdCht
X2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9CiAKIFJlbW90ZVJlbmRlckJ1bmRsZTo6flJlbW90
ZVJlbmRlckJ1bmRsZSgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9p
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGU6OnNldExhYmVsKFN0cmlu
ZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5z
ZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyQnVuZGxlLmgKaW5kZXggY2UyYWIwNGZjYjE0NTY5ZmVhM2RlNWI5NGQ3OTVh
NGNkNGJmNzI4OC4uNmI4MGQ1OWJhNzI3MjgyMmRlMDc2YTJhNTc3YzYxN2UxODlhMWNhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCkBAIC00MCwyMSArNDAsMjIgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9i
amVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVSZW5kZXJCdW5kbGUgZmluYWwgOiBwdWJs
aWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
UmVtb3RlUmVuZGVyQnVuZGxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSYgcmVu
ZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVSZW5kZXJCdW5kbGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiBy
ZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZShy
ZW5kZXJCdW5kbGUsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlUmVuZGVyQnVuZGxlKHJlbmRlckJ1bmRsZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhl
YXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJCdW5k
bGUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmll
bmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVSZW5kZXJCdW5kbGUoUEFMOjpX
ZWJHUFU6OlJlbmRlckJ1bmRsZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZVJl
bmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVt
b3RlUmVuZGVyQnVuZGxlKGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZSYpID0gZGVsZXRlOwogICAg
IFJlbW90ZVJlbmRlckJ1bmRsZShSZW1vdGVSZW5kZXJCdW5kbGUmJikgPSBkZWxldGU7CkBAIC02
Niw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAg
ICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJH
UFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFw
OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcAppbmRl
eCBhYTY1MjdmMmZmOTk5NDgzNTU0ZTU5ZGY4ZDQ1ZmRiZmVjZGNiOWIzLi4zNWJhNjUyOTgxMzIx
YWFjMGExOWFmZjZkYmMzODY4N2QzN2RhNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2Rlci5jcHAKQEAgLTI4LDQ5ICsyOCw2MSBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyQnVuZGxlLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0SGVhcC5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5k
ZXJCdW5kbGVFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCitSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFBBTDo6V2ViR1BV
OjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyQnVu
ZGxlRW5jb2RlcikKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkpCiAgICAg
LCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwgbV9iYWNr
aW5nKTsKIH0KIAogUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6flJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXIoKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0UGlwZWxpbmUo
V2ViR1BVSWRlbnRpZmllciByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVu
ZGVyUGlwZWxpbmUpOworICAgIGF1dG8gY29udmVydGVkUmVuZGVyUGlwZWxpbmUgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5l
KTsKKyAgICBBU1NFUlQoY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOworICAgIGlmICghY29udmVy
dGVkUmVuZGVyUGlwZWxpbmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+c2V0
UGlwZWxpbmUoKmNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihXZWJHUFVJZGVudGlmaWVyIGJ1ZmZlciwg
UEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0LCBQQUw6OldlYkdQVTo6U2l6ZTY0
IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAg
IFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRleEZvcm1hdCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1
dG8gY29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJh
Y2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKKyAgICBpZiAoIWNv
bnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5zZXRJbmRl
eEJ1ZmZlcigqY29udmVydGVkQnVmZmVyLCBpbmRleEZvcm1hdCwgb2Zmc2V0LCBzaXplKTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIoUEFMOjpX
ZWJHUFU6OkluZGV4MzIgc2xvdCwgV2ViR1BVSWRlbnRpZmllciBidWZmZXIsIFBBTDo6V2ViR1BV
OjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3QpOwotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBh
dXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21C
YWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYgKCFj
b252ZXJ0ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+c2V0VmVy
dGV4QnVmZmVyKHNsb3QsICpjb252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZv
aWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhdyhQQUw6OldlYkdQVTo6U2l6ZTMyIHZl
cnRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291bnQsCiAgICAgUEFMOjpX
ZWJHUFU6OlNpemUzMiBmaXJzdFZlcnRleCwgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluc3Rh
bmNlKQogewotICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGluc3RhbmNlQ291bnQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFZlcnRleCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOworICAgIG1fYmFja2luZy0+ZHJhdyh2ZXJ0ZXhDb3Vu
dCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkKFBBTDo6V2ViR1BVOjpTaXpl
MzIgaW5kZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUzMiBpbnN0YW5jZUNvdW50LApAQCAtNzgs
NTYgKzkwLDcwIEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJhd0luZGV4ZWQo
UEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6CiAgICAgUEFMOjpXZWJHUFU6OlNp
Z25lZE9mZnNldDMyIGJhc2VWZXJ0ZXgsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdElu
c3RhbmNlKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleENvdW50KTsKLSAgICBVTlVTRURfUEFS
QU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5kZXgpOwotICAgIFVO
VVNFRF9QQVJBTShiYXNlVmVydGV4KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7
CisgICAgbV9iYWNraW5nLT5kcmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5jZUNvdW50LCBm
aXJzdEluZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKTsKIH0KIAogdm9pZCBSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRpcmVj
dEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBVTlVT
RURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNl
dCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnku
Y29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQoY29u
dmVydGVkSW5kaXJlY3RCdWZmZXIpOworICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+ZHJhd0luZGlyZWN0KCpjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QoV2ViR1BVSWRlbnRpZmllciBpbmRp
cmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBV
TlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9m
ZnNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0
cnkuY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkSW5kaXJlY3RCdWZmZXIpOworICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZm
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+ZHJhd0luZGV4ZWRJbmRpcmVj
dCgqY29udmVydGVkSW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4
MzIgaW5kZXgsIFdlYkdQVUlkZW50aWZpZXIgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0
cykKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShiaW5kR3Jv
dXApOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7CisgICAgYXV0byBjb252ZXJ0
ZWRCaW5kR3JvdXAgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2lu
ZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAgIGlmICgh
Y29udmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPnNl
dEJpbmRHcm91cChpbmRleCwgKmNvbnZlcnRlZEJpbmRHcm91cCwgV1RGTW92ZShkeW5hbWljT2Zm
c2V0cykpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnB1c2hEZWJ1Z0dy
b3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwp
OworICAgIG1fYmFja2luZy0+cHVzaERlYnVnR3JvdXAoV1RGTW92ZShncm91cExhYmVsKSk7CiB9
CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCiB7Cisg
ICAgbV9iYWNraW5nLT5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKKyAgICBtX2JhY2tpbmctPmluc2VydERlYnVn
TWFya2VyKFdURk1vdmUobWFya2VyTGFiZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjpmaW5pc2goY29uc3QgV2ViR1BVOjpSZW5kZXJCdW5kbGVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBhdXRv
IGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRGcm9tQmFja2lu
ZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYg
KCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlbmRl
ckJ1bmRsZSA9IG1fYmFja2luZy0+ZmluaXNoKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBh
dXRvIHJlbW90ZVJlbmRlckJ1bmRsZSA9IFJlbW90ZVJlbmRlckJ1bmRsZTo6Y3JlYXRlKHJlbmRl
ckJ1bmRsZSwgbV9vYmplY3RSZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAg
ICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KHJlbW90ZVJlbmRlckJ1bmRsZSk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUo
bGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlci5oCmluZGV4IDViZjk4NTIyMTA0Nzc0NzUyYTBkNTFkNTM3ZTZkNTYy
N2M3Yjk5YWMuLmY4N2I3M2UwMWM3YWE0YjFiNjZkNGM1YTc2YWFiYjU1M2Q3NzE2MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oCkBAIC00MiwyMiArNDIsMjMgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVh
cDsKK2NsYXNzIE9iamVjdFJlZ2lzdHJ5Owogc3RydWN0IFJlbmRlckJ1bmRsZURlc2NyaXB0b3I7
CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBD
OjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNv
ZGVyJiByZW5kZXJCdW5kbGVFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAp
CisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGUoUEFMOjpX
ZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6
T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIocmVuZGVyQnVuZGxlRW5j
b2Rlciwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyKHJlbmRlckJ1bmRsZUVuY29kZXIsIG9iamVjdFJlZ2lzdHJ5LCBv
YmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgflJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXIoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAg
ICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RI
ZWFwJik7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVy
QnVuZGxlRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIo
Y29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXIoUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlciYmKSA9IGRlbGV0ZTsK
QEAgLTkzLDcgKzk0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsK
IAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4gbV9iYWNraW5nOwot
ICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9i
amVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYg
bV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIu
Y3BwCmluZGV4IGUxYzk3MjljZTFhZDA5NTg2M2Y2NTA0MzMwZjlkNTIxNWU2NDU5MmEuLjk3Yjgx
MjM0MDcwZDYyZmE4ZDJjMzFkOGM1ZjgxN2FkNjI4ZmM4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0yOSw0OCArMjksNTkgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRl
clBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmpl
Y3RIZWFwKQorUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
KFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIsIFdlYkdQ
VTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhy
ZW5kZXJQYXNzRW5jb2RlcikKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkp
CiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwg
bV9iYWNraW5nKTsKIH0KIAogUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6On5SZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlcigpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUo
V2ViR1BVSWRlbnRpZmllciByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVu
ZGVyUGlwZWxpbmUpOworICAgIGF1dG8gY29udmVydGVkUmVuZGVyUGlwZWxpbmUgPSBtX29iamVj
dFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5l
KTsKKyAgICBBU1NFUlQoY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOworICAgIGlmICghY29udmVy
dGVkUmVuZGVyUGlwZWxpbmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+c2V0
UGlwZWxpbmUoKmNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6c2V0SW5kZXhCdWZmZXIoV2ViR1BVSWRlbnRpZmllciBidWZmZXIsIFBB
TDo6V2ViR1BVOjpJbmRleEZvcm1hdCBpbmRleEZvcm1hdCwgUEFMOjpXZWJHUFU6OlNpemU2NCBv
ZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXhGb3JtYXQpOwotICAg
IFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBhdXRv
IGNvbnZlcnRlZEJ1ZmZlciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEJ1ZmZlckZyb21CYWNr
aW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYgKCFjb252
ZXJ0ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2luZy0+c2V0SW5kZXhC
dWZmZXIoKmNvbnZlcnRlZEJ1ZmZlciwgaW5kZXhGb3JtYXQsIG9mZnNldCwgc2l6ZSk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcihQQUw6OldlYkdQ
VTo6SW5kZXgzMiBzbG90LCBXZWJHUFVJZGVudGlmaWVyIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNp
emU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAg
VU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1dG8g
Y29udmVydGVkQnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0QnVmZmVyRnJvbUJhY2tp
bmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKKyAgICBpZiAoIWNvbnZl
cnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5zZXRWZXJ0ZXhC
dWZmZXIoc2xvdCwgKmNvbnZlcnRlZEJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdyhQQUw6OldlYkdQVTo6U2l6ZTMyIHZlcnRleENv
dW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291bnQsCiAgICAgUEFMOjpXZWJHUFU6
OlNpemUzMiBmaXJzdFZlcnRleCwgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluc3RhbmNlKQog
ewotICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3Rh
bmNlQ291bnQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFZlcnRleCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGZpcnN0SW5zdGFuY2UpOworICAgIG1fYmFja2luZy0+ZHJhdyh2ZXJ0ZXhDb3VudCwgaW5z
dGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4
Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwKQEAgLTc4LDEwOSArODks
MTMwIEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OmRyYXdJbmRleGVkKFBBTDo6V2Vi
R1BVOjpTaXplMzIgaW5kZXhDb3VudCwgUEFMOjpXCiAgICAgUEFMOjpXZWJHUFU6OlNpZ25lZE9m
ZnNldDMyIGJhc2VWZXJ0ZXgsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluc3RhbmNl
KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleENvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oaW5z
dGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5kZXgpOwotICAgIFVOVVNFRF9Q
QVJBTShiYXNlVmVydGV4KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7CisgICAg
bV9iYWNraW5nLT5kcmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdElu
ZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KFdlYkdQVUlkZW50aWZpZXIgaW5kaXJlY3RCdWZmZXIs
IFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGluZGlyZWN0QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworICAg
IGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRC
dWZmZXJGcm9tQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPmRyYXdJbmRpcmVjdCgqY29udmVydGVkSW5kaXJl
Y3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6ZHJhd0luZGV4ZWRJbmRpcmVjdChXZWJHUFVJZGVudGlmaWVyIGluZGlyZWN0QnVmZmVy
LCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJB
TShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0
QnVmZmVyRnJvbUJhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJ
bmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9iYWNraW5nLT5kcmF3SW5kZXhlZEluZGlyZWN0KCpjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIFdl
YkdQVUlkZW50aWZpZXIgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6
V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykKIHsKLSAgICBV
TlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShiaW5kR3JvdXApOwotICAgIFVO
VVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAg
PSBtX29iamVjdFJlZ2lzdHJ5LmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhiaW5kR3JvdXAp
OworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAgIGlmICghY29udmVydGVkQmlu
ZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tpbmctPnNldEJpbmRHcm91cChp
bmRleCwgKmNvbnZlcnRlZEJpbmRHcm91cCwgV1RGTW92ZShkeW5hbWljT2Zmc2V0cykpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBn
cm91cExhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAgICBtX2JhY2tp
bmctPnB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKIHsKKyAgICBtX2JhY2tpbmctPnBv
cERlYnVnR3JvdXAoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6aW5zZXJ0
RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1h
cmtlckxhYmVsKTsKKyAgICBtX2JhY2tpbmctPmluc2VydERlYnVnTWFya2VyKFdURk1vdmUobWFy
a2VyTGFiZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3Bv
cnQoZmxvYXQgeCwgZmxvYXQgeSwKICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LAogICAg
IGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1pbkRlcHRoKTsKLSAgICBVTlVT
RURfUEFSQU0obWF4RGVwdGgpOworICAgIG1fYmFja2luZy0+c2V0Vmlld3BvcnQoeCwgeSwgd2lk
dGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERlcHRoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3QoUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRl
IHgsIFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSB5LAogICAgIFBBTDo6V2ViR1BVOjpJ
bnRlZ2VyQ29vcmRpbmF0ZSB3aWR0aCwgUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIGhl
aWdodCkKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAg
IFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CisgICAgbV9i
YWNraW5nLT5zZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmxlbmRDb25zdGFudChXZWJHUFU6OkNvbG9yIGNv
bG9yKQogewotICAgIFVOVVNFRF9QQVJBTShjb2xvcik7CisgICAgYXV0byBjb252ZXJ0ZWRDb2xv
ciA9IG1fb2JqZWN0UmVnaXN0cnkuY29udmVydEZyb21CYWNraW5nKGNvbG9yKTsKKyAgICBBU1NF
UlQoY29udmVydGVkQ29sb3IpOworICAgIGlmICghY29udmVydGVkQ29sb3IpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYmFja2luZy0+c2V0QmxlbmRDb25zdGFudCgqY29udmVydGVkQ29sb3Ip
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpzZXRTdGVuY2lsUmVmZXJlbmNl
KFBBTDo6V2ViR1BVOjpTdGVuY2lsVmFsdWUgc3RlbmNpbFZhbHVlKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGVuY2lsVmFsdWUpOworICAgIG1fYmFja2luZy0+c2V0U3RlbmNpbFJlZmVyZW5jZShz
dGVuY2lsVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpiZWdpbk9j
Y2x1c2lvblF1ZXJ5KFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVT
RURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAgbV9iYWNraW5nLT5iZWdpbk9jY2x1c2lvblF1ZXJ5
KHF1ZXJ5SW5kZXgpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjplbmRPY2Ns
dXNpb25RdWVyeSgpCiB7CisgICAgbV9iYWNraW5nLT5lbmRPY2NsdXNpb25RdWVyeSgpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1
ZXJ5KFdlYkdQVUlkZW50aWZpZXIgcXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJ
bmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlTZXQpOwotICAgIFVOVVNFRF9QQVJBTShx
dWVyeUluZGV4KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhxdWVyeVNldCk7CisgICAgQVNTRVJUKGNvbnZl
cnRlZFF1ZXJ5U2V0KTsKKyAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2JhY2tpbmctPmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKmNvbnZl
cnRlZFF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQogeworICAgIG1fYmFja2luZy0+ZW5k
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPFdlYkdQVUlkZW50aWZpZXI+JiYgcmVuZGVyQnVu
ZGxlcykKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVuZGVyQnVuZGxlcyk7CisgICAgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4+IGNvbnZlcnRl
ZEJ1bmRsZXM7CisgICAgY29udmVydGVkQnVuZGxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJl
bmRlckJ1bmRsZXMuc2l6ZSgpKTsKKyAgICBmb3IgKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
ciA6IHJlbmRlckJ1bmRsZXMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRCdW5kbGUgPSBtX29i
amVjdFJlZ2lzdHJ5LmNvbnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhpZGVudGlmaWVyKTsK
KyAgICAgICAgQVNTRVJUKGNvbnZlcnRlZEJ1bmRsZSk7CisgICAgICAgIGlmICghY29udmVydGVk
QnVuZGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb252ZXJ0ZWRCdW5kbGVzLnVu
Y2hlY2tlZEFwcGVuZCgqY29udmVydGVkQnVuZGxlKTsKKyAgICB9CisgICAgbV9iYWNraW5nLT5l
eGVjdXRlQnVuZGxlcyhXVEZNb3ZlKGNvbnZlcnRlZEJ1bmRsZXMpKTsKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCiB7CisgICAgbV9iYWNraW5nLT5lbmRQYXNz
KCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldExhYmVsKFN0cmluZyYm
IGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5zZXRM
YWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IGI5M2Y2ODllMzI5ZmQ2NTYxODk2NTQ4
YWQxYTE0OThjMjExMDk5MWEuLmZiNmQzZGI1OWE5MzIxNGFkOGQ0MDRmZGFkYzVkYzcxYTkzZWFj
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKQEAgLTQzLDIxICs0Mywy
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmpl
Y3RIZWFwOworY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUEFM
OjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlciwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NF
bmNvZGVyLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcihy
ZW5kZXJQYXNzRW5jb2Rlciwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihyZW5kZXJQYXNzRW5jb2Rlciwgb2JqZWN0UmVn
aXN0cnksIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXIoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVh
cDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVj
dEhlYXAmKTsKKyAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlcihQQUw6OldlYkdQVTo6UmVuZGVy
UGFzc0VuY29kZXImLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiwgV2ViR1BVOjpPYmplY3RIZWFw
JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcihjb25z
dCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyKFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJiYpID0gZGVsZXRlOwpAQCAtMTEwLDcg
KzExMSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBS
ZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiBtX2JhY2tpbmc7Ci0gICAgUmVmPFdl
YkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhl
YXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAKaW5kZXggM2E0MGE5
MDM2NDk5MWVjNjRkZDMwYjQwZGRiZTc2YmJlOTdmMTc1Mi4uNWMxZmNjZDBmNDM3ZjUwN2ZiMzM3
ODUxMTAyODBmZTYwNjBlYjA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAK
QEAgLTI4LDMwICsyOCwzNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVk
ZSAiUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5o
IgorI2luY2x1ZGUgIldlYkdQVU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotUmVtb3RlUmVuZGVyUGlwZWxpbmU6OlJlbW90ZVJlbmRlclBpcGVsaW5lKFBBTDo6V2ViR1BV
OjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCkKK1JlbW90ZVJlbmRlclBpcGVsaW5lOjpSZW1vdGVSZW5kZXJQaXBlbGluZShQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdFJl
Z2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyUGlwZWxp
bmUpCisgICAgLCBtX29iamVjdFJlZ2lzdHJ5KG9iamVjdFJlZ2lzdHJ5KQogICAgICwgbV9vYmpl
Y3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAg
ICBtX29iamVjdFJlZ2lzdHJ5LmFkZE9iamVjdChtX2lkZW50aWZpZXIsIG1fYmFja2luZyk7CiB9
CiAKIFJlbW90ZVJlbmRlclBpcGVsaW5lOjp+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKQogeworICAg
IG1fb2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBpbmRleCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIGF1dG8gYmluZEdyb3VwTGF5b3V0
ID0gbV9iYWNraW5nLT5nZXRCaW5kR3JvdXBMYXlvdXQoaW5kZXgpOworICAgIGF1dG8gcmVtb3Rl
QmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3Vw
TGF5b3V0LCBtX29iamVjdFJlZ2lzdHJ5LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAg
IG1fb2JqZWN0SGVhcC5hZGRPYmplY3QocmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJQaXBlbGluZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFi
ZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVs
aW5lLmgKaW5kZXggZmRlODhmY2FlNjk1MTgwNThjMjRmOWQxZWQ3NzI5NTIxY2U5OThjMS4uYmM2
Yjk2NTc1ZGNjZDNiZjljMDZjMjg5MjFjZjk1ZDYwYzg2NjU4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyUGlwZWxpbmUuaApAQCAtNDAsMjEgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3Ry
eTsKIH0KIAogY2xhc3MgUmVtb3RlUmVuZGVyUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgSVBDOjpT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVu
ZGVyUGlwZWxpbmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBp
cGVsaW5lLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxS
ZW1vdGVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYg
cmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBpcGVs
aW5lKHJlbmRlclBpcGVsaW5lLCBvYmplY3RIZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZVJlbmRlclBpcGVsaW5lKHJlbmRlclBpcGVsaW5lLCBvYmplY3RSZWdpc3Ry
eSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZVJlbmRlclBpcGVsaW5lKCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIE9iamVjdEhl
YXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAgUmVtb3RlUmVuZGVy
UGlwZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiwgV2ViR1BVOjpPYmplY3RIZWFw
Jik7CisgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5l
JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlk
ZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmUoY29uc3QgUmVtb3RlUmVuZGVy
UGlwZWxpbmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShSZW1vdGVSZW5k
ZXJQaXBlbGluZSYmKSA9IGRlbGV0ZTsKQEAgLTY4LDcgKzY5LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGlw
ZWxpbmU+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhl
YXA7CisgICAgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5j
cHAKaW5kZXggMGIyNDZjOGM1NjBhNzcyYWJhZWU4MDRjNjFkNTU4OGEwNzY1NmQxYi4uYTc2YjY5
NDVkNTc4M2ZmMDBjODk3OTVlZDQyM2M1MmIwMGMwNGJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuY3Bw
CkBAIC0yOSwyMyArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNhbXBsZXIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVJlbW90ZVNhbXBsZXI6OlJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6
OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90
ZVNhbXBsZXI6OlJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIsIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2lu
ZyhzYW1wbGVyKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAs
IG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tp
bmcpOwogfQogCiBSZW1vdGVTYW1wbGVyOjp+UmVtb3RlU2FtcGxlcigpCiB7CisgICAgbV9vYmpl
Y3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVT
YW1wbGVyOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFi
ZWwpOworICAgIG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmgKaW5kZXggMDhjOTcxZTEwNjlhMWE2Njc1
ZDljM2IyODVkMTZhNmZlNzE3ZTJjNC4uYWM5MDM4YTViOWNhODdlY2JmNWJmZTQxZjg3NDYwNDNl
MDAwY2EzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmgKQEAgLTQwLDIxICs0MCwyMiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3Mg
T2JqZWN0UmVnaXN0cnk7CiB9CiAKIGNsYXNzIFJlbW90ZVNhbXBsZXIgZmluYWwgOiBwdWJsaWMg
SVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVt
b3RlU2FtcGxlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBzYW1wbGVyLCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyPiBj
cmVhdGUoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6T2JqZWN0UmVnaXN0
cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVNhbXBsZXIoc2FtcGxlciwgb2JqZWN0SGVhcCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVyKHNhbXBsZXIsIG9iamVjdFJlZ2lzdHJ5LCBvYmpl
Y3RIZWFwLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlU2FtcGxl
cigpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBPYmplY3RIZWFwOworICAgIGZyaWVu
ZCBjbGFzcyBPYmplY3RSZWdpc3RyeTsKIAotICAgIFJlbW90ZVNhbXBsZXIoUEFMOjpXZWJHUFU6
OlNhbXBsZXImLCBXZWJHUFU6Ok9iamVjdEhlYXAmKTsKKyAgICBSZW1vdGVTYW1wbGVyKFBBTDo6
V2ViR1BVOjpTYW1wbGVyJiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlU2FtcGxlcihjb25zdCBSZW1v
dGVTYW1wbGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2FtcGxlcihSZW1vdGVTYW1wbGVyJiYp
ID0gZGVsZXRlOwpAQCAtNjYsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGFiZWwo
U3RyaW5nJiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpTYW1wbGVyPiBtX2JhY2tpbmc7Ci0g
ICAgUmVmPFdlYkdQVTo6T2JqZWN0SGVhcD4gbV9vYmplY3RIZWFwOworICAgIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CisgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBt
X29iamVjdEhlYXA7CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcAppbmRleCA5
N2VmMDkzZDc3OWFhNzcxZGVkZmVjZTgxZTU4ZWY4NDdlOGRjNDRkLi40NWFjMGQzZjczNjVjMTli
NTQ4OGNjMWRkMDk0ZDIyYTE0N2UwMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3Bw
CkBAIC0yOSwyOCArMjksNDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXBpbGF0aW9uSW5mby5oPgor
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdlLmg+
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVNoYWRlck1vZHVsZTo6UmVtb3RlU2hhZGVyTW9k
dWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlU2hhZGVyTW9kdWxlOjpSZW1vdGVTaGFkZXJNb2R1
bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVj
dFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoc2hhZGVyTW9k
dWxlKQorICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2Jq
ZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Cisg
ICAgbV9vYmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwog
fQogCiBSZW1vdGVTaGFkZXJNb2R1bGU6On5SZW1vdGVTaGFkZXJNb2R1bGUoKQogeworICAgIG1f
b2JqZWN0UmVnaXN0cnkucmVtb3ZlT2JqZWN0KG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVt
b3RlU2hhZGVyTW9kdWxlOjpjb21waWxhdGlvbkluZm8oV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJHUFU6OkNvbXBpbGF0aW9uTWVzc2FnZT4mJik+JiYgY2FsbGJhY2spCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBtX2JhY2tpbmctPmNvbXBpbGF0aW9u
SW5mbyhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJlZjxQQUw6OldlYkdQVTo6Q29t
cGlsYXRpb25JbmZvPiYmIGNvbXBpbGF0aW9uTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgICAgIGF1
dG8gY29udmVydGVkTWVzc2FnZXMgPSBjb21waWxhdGlvbk1lc3NhZ2UtPm1lc3NhZ2VzKCkubWFw
KFtdIChjb25zdCBSZWY8UEFMOjpXZWJHUFU6OkNvbXBpbGF0aW9uTWVzc2FnZT4mIG1lc3NhZ2Up
IHsKKyAgICAgICAgICAgIHJldHVybiBXZWJHUFU6OkNvbXBpbGF0aW9uTWVzc2FnZSB7CisgICAg
ICAgICAgICAgICAgbWVzc2FnZS0+bWVzc2FnZSgpLAorICAgICAgICAgICAgICAgIG1lc3NhZ2Ut
PnR5cGUoKSwKKyAgICAgICAgICAgICAgICBtZXNzYWdlLT5saW5lTnVtKCksCisgICAgICAgICAg
ICAgICAgbWVzc2FnZS0+bGluZVBvcygpLAorICAgICAgICAgICAgICAgIG1lc3NhZ2UtPm9mZnNl
dCgpLAorICAgICAgICAgICAgICAgIG1lc3NhZ2UtPmxlbmd0aCgpLAorICAgICAgICAgICAgfTsK
KyAgICAgICAgfSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY29udmVydGVkTWVzc2FnZXMp
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBSZW1vdGVTaGFkZXJNb2R1bGU6OnNldExhYmVsKFN0cmlu
ZyYmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV9iYWNraW5nLT5z
ZXRMYWJlbChXVEZNb3ZlKGxhYmVsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
aGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlU2hhZGVyTW9kdWxlLmgKaW5kZXggNmExMjBjMGI1MzgwOTFiYTc0ZGZmNDEwMzBhMWZj
OTRkOWUzYjk0Mi4uZjk3ZjAxOTZiYjA2N2VkYmNiOTIzNWNkZWMxMDY0ZWMzNDE2NzJiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
aGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCkBAIC00MywyMSArNDMsMjIgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgT2JqZWN0SGVhcDsKK2NsYXNzIE9i
amVjdFJlZ2lzdHJ5OwogfQogCiBjbGFzcyBSZW1vdGVTaGFkZXJNb2R1bGUgZmluYWwgOiBwdWJs
aWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
UmVtb3RlU2hhZGVyTW9kdWxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYgc2hh
ZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVTaGFkZXJNb2R1bGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBz
aGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNoYWRlck1vZHVsZShz
aGFkZXJNb2R1bGUsIG9iamVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlU2hhZGVyTW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0UmVnaXN0cnksIG9iamVjdEhl
YXAsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVTaGFkZXJNb2R1
bGUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmll
bmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAgICBSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpX
ZWJHUFU6OlNoYWRlck1vZHVsZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYpOworICAgIFJlbW90ZVNo
YWRlck1vZHVsZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiwgV2ViR1BVOjpPYmplY3RSZWdp
c3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVt
b3RlU2hhZGVyTW9kdWxlKGNvbnN0IFJlbW90ZVNoYWRlck1vZHVsZSYpID0gZGVsZXRlOwogICAg
IFJlbW90ZVNoYWRlck1vZHVsZShSZW1vdGVTaGFkZXJNb2R1bGUmJikgPSBkZWxldGU7CkBAIC03
MSw3ICs3Miw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAg
ICBSZWY8UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJH
UFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5
JiBtX29iamVjdFJlZ2lzdHJ5OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFw
OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcAppbmRleCBmNDE0ZDJmOTI2NmI1YmMwMGU0YmY1
NmE2YTdmMTMxM2UyNDIyMDQ0Li5hMDFmNDJkMDA5ZWU1MjZkMTg2ODc2MDU0ODZhMDQ0MmZhNTdk
NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKQEAgLTI4LDM1ICsyOCw1NCBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXcuaCIKICNpbmNs
dWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnku
aCIKICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVJlbW90ZVRleHR1cmU6OlJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUmIHRl
eHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCkKK1JlbW90ZVRleHR1cmU6OlJl
bW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyh0ZXh0dXJlKQor
ICAgICwgbV9vYmplY3RSZWdpc3RyeShvYmplY3RSZWdpc3RyeSkKICAgICAsIG1fb2JqZWN0SGVh
cChvYmplY3RIZWFwKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9v
YmplY3RSZWdpc3RyeS5hZGRPYmplY3QobV9pZGVudGlmaWVyLCBtX2JhY2tpbmcpOwogfQogCiBS
ZW1vdGVUZXh0dXJlOjp+UmVtb3RlVGV4dHVyZSgpCiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5y
ZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlOjpjcmVh
dGVWaWV3KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3I+
JiBkZXNjcmlwdG9yLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3I+IGNvbnZlcnRl
ZERlc2NyaXB0b3I7CisgICAgaWYgKGRlc2NyaXB0b3IpIHsKKyAgICAgICAgYXV0byByZXN1bHRE
ZXNjcmlwdG9yID0gbV9vYmplY3RSZWdpc3RyeS5jb252ZXJ0RnJvbUJhY2tpbmcoKmRlc2NyaXB0
b3IpOworICAgICAgICBBU1NFUlQocmVzdWx0RGVzY3JpcHRvcik7CisgICAgICAgIGNvbnZlcnRl
ZERlc2NyaXB0b3IgPSBXVEZNb3ZlKHJlc3VsdERlc2NyaXB0b3IpOworICAgICAgICBpZiAoIWNv
bnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VS
VChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHRleHR1cmVWaWV3ID0gbV9iYWNraW5n
LT5jcmVhdGVWaWV3KCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlbW90ZVRleHR1
cmVWaWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlVmlldywgbV9vYmplY3RS
ZWdpc3RyeSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBtX29iamVjdEhlYXAuYWRk
T2JqZWN0KHJlbW90ZVRleHR1cmVWaWV3KTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlOjpkZXN0
cm95KCkKIHsKKyAgICBtX2JhY2tpbmctPmRlc3Ryb3koKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0
dXJlOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwp
OworICAgIG1fYmFja2luZy0+c2V0TGFiZWwoV1RGTW92ZShsYWJlbCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmgKaW5kZXggOGQzNWVkMjQ4OWY1NzYzYWFmMjhm
MDZlNGVmODc0YTVlMDYyZDJlNy4uZGZlY2Y5ZGFmNzA5MWU4OTgwZTkzZmYwZTZjYWMwZTY1MGFh
ODVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVUZXh0dXJlLmgKQEAgLTQwLDIyICs0MCwyMyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBPYmplY3RIZWFwOworY2xhc3MgT2Jq
ZWN0UmVnaXN0cnk7CiBzdHJ1Y3QgVGV4dHVyZVZpZXdEZXNjcmlwdG9yOwogfQogCiBjbGFzcyBS
ZW1vdGVUZXh0dXJlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6VGV4dHVyZSYgdGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorICAg
IHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0
ZXh0dXJlLCBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBvYmplY3RSZWdpc3RyeSwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVUZXh0dXJlKHRleHR1cmUsIG9i
amVjdEhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZSh0
ZXh0dXJlLCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgflJlbW90ZVRleHR1cmUoKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0SGVhcDsKKyAgICBmcmllbmQgY2xhc3MgT2JqZWN0UmVnaXN0cnk7CiAKLSAg
ICBSZW1vdGVUZXh0dXJlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RIZWFw
Jik7CisgICAgUmVtb3RlVGV4dHVyZShQQUw6OldlYkdQVTo6VGV4dHVyZSYsIFdlYkdQVTo6T2Jq
ZWN0UmVnaXN0cnkmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAog
ICAgIFJlbW90ZVRleHR1cmUoY29uc3QgUmVtb3RlVGV4dHVyZSYpID0gZGVsZXRlOwogICAgIFJl
bW90ZVRleHR1cmUoUmVtb3RlVGV4dHVyZSYmKSA9IGRlbGV0ZTsKQEAgLTcxLDcgKzcyLDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6Oldl
YkdQVTo6VGV4dHVyZT4gbV9iYWNraW5nOwotICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1f
b2JqZWN0SGVhcDsKKyAgICBXZWJHUFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5
OworICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1
cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZVZpZXcuY3BwCmluZGV4IDExYTRhNzg2MzZhZmJlMWFiYmRiMjYzODViY2Y4ODg4
NTExNTJjZjMuLmJlODYzZGY1ZjY0MmI4NGMxMDA3MjRmODA3YTY2OGIxZjNhZWNjNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4
dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCkBAIC0yOSwyMyArMjksMjggQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVRleHR1cmVWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVUZXh0dXJl
Vmlldzo6UmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJl
VmlldywgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwKQorUmVtb3RlVGV4dHVyZVZpZXc6
OlJlbW90ZVRleHR1cmVWaWV3KFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcs
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFj
a2luZyh0ZXh0dXJlVmlldykKKyAgICAsIG1fb2JqZWN0UmVnaXN0cnkob2JqZWN0UmVnaXN0cnkp
CiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogeworICAgIG1fb2JqZWN0UmVnaXN0cnkuYWRkT2JqZWN0KG1faWRlbnRpZmllciwg
bV9iYWNraW5nKTsKIH0KIAogUmVtb3RlVGV4dHVyZVZpZXc6On5SZW1vdGVUZXh0dXJlVmlldygp
CiB7CisgICAgbV9vYmplY3RSZWdpc3RyeS5yZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBSZW1vdGVUZXh0dXJlVmlldzo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUo
bGFiZWwpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3
LmgKaW5kZXggMDAwNWZjYWRiZTQ3NzE4ZGQ5ZDA5YWQ0Mzk0OTYxZDczNTBkZGQyZi4uNDY4N2Mz
YjgzMzk5ZjQzNjY0ZDkyMTJmZjNhODc4NDQzOWNiZjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZp
ZXcuaApAQCAtNDAsMjEgKzQwLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CitjbGFzcyBPYmplY3RSZWdpc3RyeTsKIH0KIAog
Y2xhc3MgUmVtb3RlVGV4dHVyZVZpZXcgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+IGNy
ZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVj
dEhlYXAmIG9iamVjdEhlYXApCisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlVmlldz4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYgdGV4dHVyZVZpZXcsIFdlYkdQVTo6T2JqZWN0
UmVnaXN0cnkmIG9iamVjdFJlZ2lzdHJ5LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3KHRleHR1cmVWaWV3LCBvYmplY3RIZWFwKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3KHRleHR1cmVWaWV3
LCBvYmplY3RSZWdpc3RyeSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgflJlbW90ZVRleHR1cmVWaWV3KCk7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIE9iamVjdEhlYXA7CisgICAgZnJpZW5kIGNsYXNzIE9iamVjdFJlZ2lzdHJ5OwogCi0gICAg
UmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiwgV2ViR1BVOjpPYmpl
Y3RIZWFwJik7CisgICAgUmVtb3RlVGV4dHVyZVZpZXcoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3
JiwgV2ViR1BVOjpPYmplY3RSZWdpc3RyeSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlk
ZW50aWZpZXIpOwogCiAgICAgUmVtb3RlVGV4dHVyZVZpZXcoY29uc3QgUmVtb3RlVGV4dHVyZVZp
ZXcmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVUZXh0dXJlVmlldyhSZW1vdGVUZXh0dXJlVmlldyYm
KSA9IGRlbGV0ZTsKQEAgLTY2LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExhYmVs
KFN0cmluZyYmKTsKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+IG1fYmFja2lu
ZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29iamVjdEhlYXA7CisgICAgV2ViR1BV
OjpPYmplY3RSZWdpc3RyeSYgbV9vYmplY3RSZWdpc3RyeTsKKyAgICBXZWJHUFU6Ok9iamVjdEhl
YXAmIG1fb2JqZWN0SGVhcDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5jcHAKaW5kZXgg
MDkxMjIxOTRlY2M3ZWY2OTBmMDYyN2M4OGFkMjk0ZTUzOTNhNzMzNS4uZDBhMGVjMzA5NDI4MDUy
NTQ5ZDMyMTIxZDg0OWVmNGM4OWUwZjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3BwCkBA
IC0yOCwyOCArMjgsMjggQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVBZGFwdGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVCaW5kR3JvdXAuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRH
cm91cExheW91dC5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVy
Lmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+
Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oPgot
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg+
Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaD4K
LSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURldmljZS5oPgotI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlLmg+Ci0jaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dC5oPgotI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlTZXQuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJCdW5kbGUuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KLSNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVU2FtcGxlci5oPgotI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2hhZGVy
TW9kdWxlLmg+Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlLmg+
Ci0jaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlldy5oPgorI2lu
Y2x1ZGUgIlJlbW90ZUFkYXB0ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXAuaCIKKyNp
bmNsdWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCIKKyNpbmNsdWRlICJSZW1vdGVCdWZmZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQ29t
bWFuZEVuY29kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVDb21wdXRlUGlwZWxpbmUuaCIKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2Uu
aCIKKyNpbmNsdWRlICJSZW1vdGVFeHRlcm5hbFRleHR1cmUuaCIKKyNpbmNsdWRlICJSZW1vdGVH
UFUuaCIKKyNpbmNsdWRlICJSZW1vdGVQaXBlbGluZUxheW91dC5oIgorI2luY2x1ZGUgIlJlbW90
ZVF1ZXJ5U2V0LmgiCisjaW5jbHVkZSAiUmVtb3RlUXVldWUuaCIKKyNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJCdW5kbGUuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5k
ZXJQaXBlbGluZS5oIgorI2luY2x1ZGUgIlJlbW90ZVNhbXBsZXIuaCIKKyNpbmNsdWRlICJSZW1v
dGVTaGFkZXJNb2R1bGUuaCIKKyNpbmNsdWRlICJSZW1vdGVUZXh0dXJlLmgiCisjaW5jbHVkZSAi
UmVtb3RlVGV4dHVyZVZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIApAQCAt
NjEsMTgwICs2MSwyNjggQEAgT2JqZWN0SGVhcDo6fk9iamVjdEhlYXAoKQogewogfQogCi1QQUw6
OldlYkdQVTo6QWRhcHRlciogT2JqZWN0SGVhcDo6Y29udmVydEFkYXB0ZXJGcm9tQmFja2luZyhX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChS
ZW1vdGVBZGFwdGVyJiBhZGFwdGVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6QWRhcHRlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Omdl
dDxSZWY8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmYWRhcHRlciwgYWRhcHRlcik7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6
OkJpbmRHcm91cCogT2JqZWN0SGVhcDo6Y29udmVydEJpbmRHcm91cEZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90
ZUJpbmRHcm91cCYgYmluZEdyb3VwKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPj4oaXRl
cmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmJpbmRHcm91cCwgYmluZEdyb3VwKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6
OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0KiBPYmplY3RIZWFwOjpjb252ZXJ0QmluZEdyb3VwTGF5
b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RI
ZWFwOjphZGRPYmplY3QoUmVtb3RlQmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQpCiB7
Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BV
OjpCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVz
dWx0ID0gbV9vYmplY3RzLmFkZCgmYmluZEdyb3VwTGF5b3V0LCBiaW5kR3JvdXBMYXlvdXQpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6
V2ViR1BVOjpCdWZmZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1v
dGVCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9yLT52
YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8
UEFMOjpXZWJHUFU6OkJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKCZidWZmZXIsIGJ1ZmZlcik7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkNvbW1hbmRC
dWZmZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3Rl
Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
YmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5l
bmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRC
dWZmZXI+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4oaXRlcmF0b3It
PnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmNvbW1hbmRC
dWZmZXIsIGNvbW1hbmRCdWZmZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciogT2JqZWN0SGVh
cDo6Y29udmVydENvbW1hbmRFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXIm
IGNvbW1hbmRFbmNvZGVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChp
ZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXI+PihpdGVy
YXRvci0+dmFsdWUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpn
ZXQ8UmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkucHRy
KCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21tYW5kRW5jb2RlciwgY29t
bWFuZEVuY29kZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIqIE9iamVjdEhlYXA6OmNv
bnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3Rz
LmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8
fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5j
b2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJh
dG9yLT52YWx1ZSkucHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZjb21w
dXRlUGFzc0VuY29kZXIsIGNvbXB1dGVQYXNzRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZSogT2JqZWN0SGVhcDo6Y29udmVydENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90
ZUNvbXB1dGVQaXBlbGluZSYgY29tcHV0ZVBpcGVsaW5lKQogewotICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPj4o
aXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
JmNvbXB1dGVQaXBlbGluZSwgY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6RGV2aWNlKiBPYmpl
Y3RIZWFwOjpjb252ZXJ0RGV2aWNlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQordm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoUmVtb3RlRGV2aWNlJiBkZXZpY2UpCiB7
Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+
PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZCgmZGV2aWNlLCBkZXZpY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7CiB9CiAKLVBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUqIE9iamVjdEhlYXA6
OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUm
IGV4dGVybmFsVGV4dHVyZSkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4+KGl0
ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6
OmdldDxSZWY8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSku
cHRyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKCZleHRlcm5hbFRleHR1cmUs
IGV4dGVybmFsVGV4dHVyZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OkdQVSogT2JqZWN0SGVhcDo6Y29udmVydEdQVUZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6
YWRkT2JqZWN0KFJlbW90ZUdQVSYgZ3B1KQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0
b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0
PFJlZjxQQUw6OldlYkdQVTo6R1BVPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJmdwdSwgZ3B1KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlv
dXQqIE9iamVjdEhlYXA6OmNvbnZlcnRQaXBlbGluZUxheW91dEZyb21CYWNraW5nKFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVBp
cGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
YmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5l
bmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OlBpcGVsaW5l
TGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRv
ci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcGlwZWxp
bmVMYXlvdXQsIHBpcGVsaW5lTGF5b3V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6UXVlcnlTZXQqIE9iamVjdEhlYXA6
OmNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVF1ZXJ5U2V0JiBxdWVyeVNldCkKIHsK
LSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYg
KGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6UXVlcnlT
ZXQ+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3Rz
LmFkZCgmcXVlcnlTZXQsIHF1ZXJ5U2V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6UXVldWUqIE9iamVjdEhlYXA6OmNv
bnZlcnRRdWV1ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQg
T2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVF1ZXVlJiBxdWV1ZSkKIHsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJH
UFU6OlF1ZXVlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6UXVldWU+PihpdGVyYXRvci0+dmFs
dWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcXVldWUsIHF1ZXVl
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1Q
QUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRl
ckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2
b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5k
ZXJCdW5kbGVFbmNvZGVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChp
ZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBz
dGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRvci0+
dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcmVuZGVyQnVu
ZGxlRW5jb2RlciwgcmVuZGVyQnVuZGxlRW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSog
T2JqZWN0SGVhcDo6Y29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlckJ1
bmRsZSYgcmVuZGVyQnVuZGxlKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4oaXRl
cmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIo
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnJlbmRlckJ1bmRsZSwgcmVuZGVy
QnVuZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwog
fQogCi1QQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIE9iamVjdEhlYXA6OmNvbnZlcnRS
ZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyJiByZW5k
ZXJQYXNzRW5jb2RlcikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPj4oaXRl
cmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUp
LnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcmVuZGVyUGFzc0VuY29k
ZXIsIHJlbmRlclBhc3NFbmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIE9iamVjdEhl
YXA6OmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3ZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVJlbmRlclBpcGVsaW5l
JiByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQo
aWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPj4oaXRl
cmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpLnB0
cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmcmVuZGVyUGlwZWxpbmUsIHJl
bmRlclBpcGVsaW5lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCi1QQUw6OldlYkdQVTo6U2FtcGxlciogT2JqZWN0SGVhcDo6Y29udmVydFNhbXBs
ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIE9iamVjdEhl
YXA6OmFkZE9iamVjdChSZW1vdGVTYW1wbGVyJiBzYW1wbGVyKQogewotICAgIGF1dG8gaXRlcmF0
b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9v
YmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6
U2FtcGxlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6OlNhbXBsZXI+PihpdGVyYXRvci0+dmFs
dWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZCgmc2FtcGxlciwgc2Ft
cGxlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0K
IAotUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSogT2JqZWN0SGVhcDo6Y29udmVydFNoYWRlck1v
ZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgT2JqZWN0
SGVhcDo6YWRkT2JqZWN0KFJlbW90ZVNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlKQogewotICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxQ
QUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxQQUw6OldlYkdQVTo6U2hhZGVy
TW9kdWxlPj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5hZGQoJnNoYWRlck1vZHVsZSwgc2hhZGVyTW9kdWxlKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QQUw6OldlYkdQVTo6VGV4dHVyZSog
T2JqZWN0SGVhcDo6Y29udmVydFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVUZXh0dXJlJiB0ZXh0
dXJlKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsK
LSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8UEFMOjpXZWJHUFU6
OlRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLnB0cigpOworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZCgmdGV4dHVyZSwgdGV4dHVyZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3KiBPYmpl
Y3RIZWFwOjpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChSZW1vdGVUZXh0dXJlVmlldyYg
dGV4dHVyZVZpZXcpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50
aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52
YWx1ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6OmdldDxSZWY8
UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3Pj4oaXRlcmF0b3ItPnZhbHVlKS5wdHIoKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoJnRleHR1cmVWaWV3LCB0ZXh0dXJlVmlldyk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBP
YmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQWRhcHRlciYgYWRhcHRlcikKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmFkYXB0ZXIpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChS
ZW1vdGVCaW5kR3JvdXAmIGJpbmRHcm91cCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5yZW1vdmUoJmJpbmRHcm91cCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZUJpbmRHcm91cExheW91
dCYgYmluZEdyb3VwTGF5b3V0KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92
ZSgmYmluZEdyb3VwTGF5b3V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
K30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlQnVmZmVyJiBidWZmZXIp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZidWZmZXIpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92
ZU9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQoreworICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgmY29tbWFuZEJ1ZmZlcik7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0
KFJlbW90ZUNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlcikKK3sKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbW1hbmRFbmNvZGVyKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZjb21wdXRlUGFzc0VuY29kZXIpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9i
amVjdChSZW1vdGVDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSkKK3sKKyAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmNvbXB1dGVQaXBlbGluZSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2Jq
ZWN0KFJlbW90ZURldmljZSYgZGV2aWNlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3Rz
LnJlbW92ZSgmZGV2aWNlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30K
Kwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlRXh0ZXJuYWxUZXh0dXJlJiBl
eHRlcm5hbFRleHR1cmUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZl
eHRlcm5hbFRleHR1cmUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQor
Cit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVHUFUmIGdwdSkKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJmdwdSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90
ZVBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5yZW1vdmUoJnBpcGVsaW5lTGF5b3V0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3RlUXVl
cnlTZXQmIHF1ZXJ5U2V0KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLnJlbW92ZSgm
cXVlcnlTZXQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lk
IE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVRdWV1ZSYgcXVldWUpCit7CisgICAgYXV0
byByZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZxdWV1ZSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5kZXJCdW5kbGVFbmNvZGVyKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVP
YmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJiByZW5kZXJCdW5kbGUpCit7CisgICAgYXV0byByZXN1
bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5kZXJCdW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIpCit7CisgICAgYXV0byByZXN1
bHQgPSBtX29iamVjdHMucmVtb3ZlKCZyZW5kZXJQYXNzRW5jb2Rlcik7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0SGVhcDo6cmVtb3ZlT2JqZWN0
KFJlbW90ZVJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkKK3sKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5yZW1vdmUoJnJlbmRlclBpcGVsaW5lKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVt
b3RlU2FtcGxlciYgc2FtcGxlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1v
dmUoJnNhbXBsZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2
b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1v
ZHVsZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5yZW1vdmUoJnNoYWRlck1vZHVs
ZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgT2JqZWN0
SGVhcDo6cmVtb3ZlT2JqZWN0KFJlbW90ZVRleHR1cmUmIHRleHR1cmUpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMucmVtb3ZlKCZ0ZXh0dXJlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBPYmplY3RIZWFwOjpyZW1vdmVPYmplY3QoUmVtb3Rl
VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3Rz
LnJlbW92ZSgmdGV4dHVyZVZpZXcpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAu
aAppbmRleCA5ZDhmYTEwNDQ3MzU1NTNmOTQ1NmUxNTdjM2ZjNTkxMTlmMzRmOGVjLi5hMTZjZDI2
Njk4MTM3N2NhOTE4ZTUxMGI2OGZjODVmMzhlNDE5ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAu
aApAQCAtMjcsNzQgKzI3LDEyMCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5j
bHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdQ
VUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3RSZWdpc3RyeS5oIgorI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFJlbW90ZUFkYXB0ZXI7CitjbGFzcyBSZW1vdGVCaW5k
R3JvdXA7CitjbGFzcyBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ7CitjbGFzcyBSZW1vdGVCdWZmZXI7
CitjbGFzcyBSZW1vdGVDb21tYW5kQnVmZmVyOworY2xhc3MgUmVtb3RlQ29tbWFuZEVuY29kZXI7
CitjbGFzcyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI7CitjbGFzcyBSZW1vdGVDb21wdXRlUGlw
ZWxpbmU7CitjbGFzcyBSZW1vdGVEZXZpY2U7CitjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmU7
CitjbGFzcyBSZW1vdGVHUFU7CitjbGFzcyBSZW1vdGVQaXBlbGluZUxheW91dDsKK2NsYXNzIFJl
bW90ZVF1ZXJ5U2V0OworY2xhc3MgUmVtb3RlUXVldWU7CitjbGFzcyBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOworY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlOworY2xhc3MgUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXI7CitjbGFzcyBSZW1vdGVSZW5kZXJQaXBlbGluZTsKK2NsYXNzIFJlbW90ZVNh
bXBsZXI7CitjbGFzcyBSZW1vdGVTaGFkZXJNb2R1bGU7CitjbGFzcyBSZW1vdGVUZXh0dXJlOwor
Y2xhc3MgUmVtb3RlVGV4dHVyZVZpZXc7Cit9CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKLWNsYXNzIE9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgV2ViR1BVOjpDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0IHsKK2NsYXNzIE9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8T2JqZWN0SGVhcD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8T2JqZWN0SGVhcD4g
Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9iamVjdEhlYXAo
KSk7Ci0gICAgfQotCisgICAgT2JqZWN0SGVhcCgpOwogICAgIH5PYmplY3RIZWFwKCk7CiAKLXBy
aXZhdGU6Ci0gICAgT2JqZWN0SGVhcCgpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZUFkYXB0
ZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVCaW5kR3JvdXAmKTsKKyAgICB2b2lkIGFk
ZE9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1v
dGVCdWZmZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJik7Cisg
ICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlQ29tbWFuZEVuY29kZXImKTsKKyAgICB2b2lkIGFkZE9i
amVjdChSZW1vdGVDb21wdXRlUGFzc0VuY29kZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1v
dGVDb21wdXRlUGlwZWxpbmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVEZXZpY2UmKTsK
KyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUmKTsKKyAgICB2b2lkIGFk
ZE9iamVjdChSZW1vdGVHUFUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVQaXBlbGluZUxh
eW91dCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJlbW90ZVF1ZXJ5U2V0Jik7CisgICAgdm9pZCBh
ZGRPYmplY3QoUmVtb3RlUXVldWUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUmVuZGVyQnVuZGxlJik7
CisgICAgdm9pZCBhZGRPYmplY3QoUmVtb3RlUmVuZGVyUGFzc0VuY29kZXImKTsKKyAgICB2b2lk
IGFkZE9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFJl
bW90ZVNhbXBsZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVTaGFkZXJNb2R1bGUmKTsK
KyAgICB2b2lkIGFkZE9iamVjdChSZW1vdGVUZXh0dXJlJik7CisgICAgdm9pZCBhZGRPYmplY3Qo
UmVtb3RlVGV4dHVyZVZpZXcmKTsKIAotICAgIFBBTDo6V2ViR1BVOjpBZGFwdGVyKiBjb252ZXJ0
QWRhcHRlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2Vi
R1BVOjpCaW5kR3JvdXAqIGNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhXZWJHUFVJZGVudGlm
aWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0KiBjb252ZXJ0Qmlu
ZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFM
OjpXZWJHUFU6OkJ1ZmZlciogY29udmVydEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyKiBjb252ZXJ0Q29tbWFu
ZEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2Vi
R1BVOjpDb21tYW5kRW5jb2RlciogY29udmVydENvbW1hbmRFbmNvZGVyRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rl
ciogY29udmVydENvbXB1dGVQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIp
IGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUqIGNvbnZlcnRDb21wdXRl
UGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6Oldl
YkdQVTo6RGV2aWNlKiBjb252ZXJ0RGV2aWNlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
ZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSogY29udmVydEV4dGVybmFs
VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2Vi
R1BVOjpHUFUqIGNvbnZlcnRHUFVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsK
LSAgICBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQqIGNvbnZlcnRQaXBlbGluZUxheW91dEZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpRdWVy
eVNldCogY29udmVydFF1ZXJ5U2V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7
Ci0gICAgUEFMOjpXZWJHUFU6OlF1ZXVlKiBjb252ZXJ0UXVldWVGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlciog
Y29udmVydFJlbmRlckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlKiBjb252ZXJ0UmVuZGVyQnVuZGxl
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7Ci0gICAgUEFMOjpXZWJHUFU6OlJl
bmRlclBhc3NFbmNvZGVyKiBjb252ZXJ0UmVuZGVyUGFzc0VuY29kZXJGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUqIGNv
bnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwot
ICAgIFBBTDo6V2ViR1BVOjpTYW1wbGVyKiBjb252ZXJ0U2FtcGxlckZyb21CYWNraW5nKFdlYkdQ
VUlkZW50aWZpZXIpIGZpbmFsOwotICAgIFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUqIGNvbnZl
cnRTaGFkZXJNb2R1bGVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICBQ
QUw6OldlYkdQVTo6VGV4dHVyZSogY29udmVydFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVu
dGlmaWVyKSBmaW5hbDsKLSAgICBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcqIGNvbnZlcnRUZXh0
dXJlVmlld0Zyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgcmVt
b3ZlT2JqZWN0KFJlbW90ZUFkYXB0ZXImKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVC
aW5kR3JvdXAmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVCaW5kR3JvdXBMYXlvdXQm
KTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVCdWZmZXImKTsKKyAgICB2b2lkIHJlbW92
ZU9iamVjdChSZW1vdGVDb21tYW5kQnVmZmVyJik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVt
b3RlQ29tbWFuZEVuY29kZXImKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXImKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVDb21wdXRlUGlwZWxp
bmUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVEZXZpY2UmKTsKKyAgICB2b2lkIHJl
bW92ZU9iamVjdChSZW1vdGVFeHRlcm5hbFRleHR1cmUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVj
dChSZW1vdGVHUFUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVQaXBlbGluZUxheW91
dCYpOworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVF1ZXJ5U2V0Jik7CisgICAgdm9pZCBy
ZW1vdmVPYmplY3QoUmVtb3RlUXVldWUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyJik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVy
QnVuZGxlJik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIm
KTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVSZW5kZXJQaXBlbGluZSYpOworICAgIHZv
aWQgcmVtb3ZlT2JqZWN0KFJlbW90ZVNhbXBsZXImKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChS
ZW1vdGVTaGFkZXJNb2R1bGUmKTsKKyAgICB2b2lkIHJlbW92ZU9iamVjdChSZW1vdGVUZXh0dXJl
Jik7CisgICAgdm9pZCByZW1vdmVPYmplY3QoUmVtb3RlVGV4dHVyZVZpZXcmKTsKIAorcHJpdmF0
ZToKICAgICB1c2luZyBPYmplY3QgPSBzdGQ6OnZhcmlhbnQ8Ci0gICAgICAgIFJlZjxQQUw6Oldl
YkdQVTo6QWRhcHRlcj4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiwKLSAg
ICAgICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+LAotICAgICAgICBSZWY8UEFM
OjpXZWJHUFU6OkJ1ZmZlcj4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZl
cj4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXI+LAotICAgICAgICBS
ZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4sCi0gICAgICAgIFJlZjxQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+
LAotICAgICAgICBSZWY8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4sCi0gICAgICAgIFJl
ZjxQQUw6OldlYkdQVTo6R1BVPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxh
eW91dD4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+LAotICAgICAgICBSZWY8
UEFMOjpXZWJHUFU6OlF1ZXVlPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5k
bGVFbmNvZGVyPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+LAotICAg
ICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiwKLSAgICAgICAgUmVmPFBB
TDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6U2Ft
cGxlcj4sCi0gICAgICAgIFJlZjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiwKLSAgICAgICAg
UmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlPiwKLSAgICAgICAgUmVmPFBBTDo6V2ViR1BVOjpUZXh0
dXJlVmlldz4KKyAgICAgICAgc3RkOjptb25vc3RhdGUsCisgICAgICAgIFJlZjxSZW1vdGVBZGFw
dGVyPiwKKyAgICAgICAgUmVmPFJlbW90ZUJpbmRHcm91cD4sCisgICAgICAgIFJlZjxSZW1vdGVC
aW5kR3JvdXBMYXlvdXQ+LAorICAgICAgICBSZWY8UmVtb3RlQnVmZmVyPiwKKyAgICAgICAgUmVm
PFJlbW90ZUNvbW1hbmRCdWZmZXI+LAorICAgICAgICBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+
LAorICAgICAgICBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyPiwKKyAgICAgICAgUmVmPFJl
bW90ZUNvbXB1dGVQaXBlbGluZT4sCisgICAgICAgIFJlZjxSZW1vdGVEZXZpY2U+LAorICAgICAg
ICBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPiwKKyAgICAgICAgUmVmPFJlbW90ZUdQVT4sCisg
ICAgICAgIFJlZjxSZW1vdGVQaXBlbGluZUxheW91dD4sCisgICAgICAgIFJlZjxSZW1vdGVRdWVy
eVNldD4sCisgICAgICAgIFJlZjxSZW1vdGVRdWV1ZT4sCisgICAgICAgIFJlZjxSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyPiwKKyAgICAgICAgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZT4sCisgICAg
ICAgIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcj4sCisgICAgICAgIFJlZjxSZW1vdGVSZW5k
ZXJQaXBlbGluZT4sCisgICAgICAgIFJlZjxSZW1vdGVTYW1wbGVyPiwKKyAgICAgICAgUmVmPFJl
bW90ZVNoYWRlck1vZHVsZT4sCisgICAgICAgIFJlZjxSZW1vdGVUZXh0dXJlPiwKKyAgICAgICAg
UmVmPFJlbW90ZVRleHR1cmVWaWV3PgogICAgID47Ci0gICAgSGFzaE1hcDxXZWJHUFVJZGVudGlm
aWVyLCBPYmplY3Q+IG1fb2JqZWN0czsKKyAgICBIYXNoTWFwPHZvaWQqLCBPYmplY3Q+IG1fb2Jq
ZWN0czsKKworICAgIE9iamVjdFJlZ2lzdHJ5IG1fb2JqZWN0UmVnaXN0cnk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYjI3YTFhNWZiZTRkZTQwYmJiZTJkNTY1ZWQwZGMzMzU3ZmUwNWE4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwzODAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVy
Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXAuaD4KKyNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dC5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVyLmg+CisjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+CisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oPgorI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg+CisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVURldmljZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVQaXBlbGluZUxheW91dC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUXVlcnlTZXQuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1
ZXVlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUu
aD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29k
ZXIuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2FtcGxlci5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlLmg+CisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlLmg+CisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlldy5oPgorCituYW1lc3BhY2UgV2ViS2l0OjpX
ZWJHUFUgeworCitPYmplY3RSZWdpc3RyeTo6T2JqZWN0UmVnaXN0cnkoKQoreworfQorCitPYmpl
Y3RSZWdpc3RyeTo6fk9iamVjdFJlZ2lzdHJ5KCkKK3sKK30KKwordm9pZCBPYmplY3RSZWdpc3Ry
eTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkFk
YXB0ZXImIGFkYXB0ZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIGFkYXB0ZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCkKK3sKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYmluZEdyb3VwKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIE9i
amVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6
OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGJpbmRHcm91cExheW91dCk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmpl
Y3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpX
ZWJHUFU6OkJ1ZmZlciYgYnVmZmVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChpZGVudGlmaWVyLCBidWZmZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5k
QnVmZmVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBj
b21tYW5kQnVmZmVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVy
KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBjb21tYW5k
RW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
K30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNv
ZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBjb21w
dXRlUGFzc0VuY29kZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBl
bGluZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29t
cHV0ZVBpcGVsaW5lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50
cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6RGV2aWNlJiBkZXZpY2UpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGRldmljZSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RSZWdpc3Ry
eTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkV4
dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9v
YmplY3RzLmFkZChpZGVudGlmaWVyLCBleHRlcm5hbFRleHR1cmUpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6
OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpHUFUm
IGdwdSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgZ3B1
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2
b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0KQoreworICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBwaXBlbGluZUxheW91dCk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBP
YmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFM
OjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5hZGQoaWRlbnRpZmllciwgcXVlcnlTZXQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHF1ZXVlKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lk
IE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
QUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlcikKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcmVuZGVyQnVuZGxl
RW5jb2Rlcik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
K30KKwordm9pZCBPYmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlKQoreworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCByZW5kZXJCdW5kbGUpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQg
T2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBB
TDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciYgcmVuZGVyUGFzc0VuY29kZXIpCit7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHJlbmRlclBhc3NFbmNvZGVy
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2
b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQoreworICAgIGF1
dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCByZW5kZXJQaXBlbGluZSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBP
YmplY3RSZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFM
OjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVj
dHMuYWRkKGlkZW50aWZpZXIsIHNhbXBsZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OmFkZE9iamVjdChX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNo
YWRlck1vZHVsZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmll
ciwgc2hhZGVyTW9kdWxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOworfQorCit2b2lkIE9iamVjdFJlZ2lzdHJ5OjphZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6VGV4dHVyZSYgdGV4dHVyZSkKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgdGV4dHVyZSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBPYmplY3RS
ZWdpc3RyeTo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpXZWJH
UFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2Jq
ZWN0cy5hZGQoaWRlbnRpZmllciwgdGV4dHVyZVZpZXcpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgT2JqZWN0UmVnaXN0cnk6OnJlbW92
ZU9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byByZXN1bHQg
PSBtX29iamVjdHMucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworfQorCitQQUw6OldlYkdQVTo6QWRhcHRlciogT2JqZWN0UmVnaXN0cnk6OmNv
bnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+PihpdGVyYXRvci0+dmFs
dWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+PihpdGVyYXRvci0+dmFsdWUp
LmdldCgpOworfQorCitQQUw6OldlYkdQVTo6QmluZEdyb3VwKiBPYmplY3RSZWdpc3RyeTo6Y29u
dmVydEJpbmRHcm91cEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYg
KGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXA+PihpdGVyYXRvci0+
dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91cD4+KGl0ZXJhdG9yLT52
YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIE9iamVjdFJl
Z2lzdHJ5Ojpjb252ZXJ0QmluZEdyb3VwTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVu
dGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRH
cm91cExheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6
QmluZEdyb3VwTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJH
UFU6OkJ1ZmZlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6QnVmZmVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCitQQUw6OldlYkdQVTo6Q29t
bWFuZEJ1ZmZlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3Rz
LmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOwor
fQorCitQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXIqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0
Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlm
IChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXI+PihpdGVy
YXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6
Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPj4o
aXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5j
b2RlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRDb21wdXRlUGFzc0VuY29kZXJGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUp
LmdldCgpOworfQorCitQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lKiBPYmplY3RSZWdpc3Ry
eTo6Y29udmVydENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1
dGVQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpE
ZXZpY2UqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0RGV2aWNlRnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OkRldmljZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RGV2
aWNlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRFeHRlcm5hbFRleHR1cmVGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQ
QUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLmdldCgp
OworfQorCitQQUw6OldlYkdQVTo6R1BVKiBPYmplY3RSZWdpc3RyeTo6Y29udmVydEdQVUZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2Jq
ZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpHUFU+PihpdGVyYXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFM
OjpXZWJHUFU6OkdQVT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BV
OjpQaXBlbGluZUxheW91dCogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRQaXBlbGluZUxheW91dEZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1f
b2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dD4+KGl0ZXJhdG9yLT52YWx1ZSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUp
LmdldCgpOworfQorCitQQUw6OldlYkdQVTo6UXVlcnlTZXQqIE9iamVjdFJlZ2lzdHJ5Ojpjb252
ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+PihpdGVyYXRvci0+dmFs
dWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVl
KS5nZXQoKTsKK30KKworUEFMOjpXZWJHUFU6OlF1ZXVlKiBPYmplY3RSZWdpc3RyeTo6Y29udmVy
dFF1ZXVlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0
b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlF1ZXVlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWV1ZT4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9
CisKK1BBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6Y29u
dmVydFJlbmRlckJ1bmRsZUVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIp
OworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxl
RW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2Vi
R1BVOjpSZW5kZXJCdW5kbGUqIE9iamVjdFJlZ2lzdHJ5Ojpjb252ZXJ0UmVuZGVyQnVuZGxlRnJv
bUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0
b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9v
YmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4oaXRlcmF0b3ItPnZhbHVlKS5nZXQo
KTsKK30KKworUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyKiBPYmplY3RSZWdpc3RyeTo6
Y29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NF
bmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuICZzdGQ6OmdldDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5k
ZXJQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BV
OjpSZW5kZXJQaXBlbGluZSogT2JqZWN0UmVnaXN0cnk6OmNvbnZlcnRSZW5kZXJQaXBlbGluZUZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1f
b2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUp
LmdldCgpOworfQorCitQQUw6OldlYkdQVTo6U2FtcGxlciogT2JqZWN0UmVnaXN0cnk6OmNvbnZl
cnRTYW1wbGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlNhbXBsZXI+PihpdGVyYXRvci0+dmFsdWUp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlNhbXBsZXI+PihpdGVyYXRvci0+dmFsdWUpLmdl
dCgpOworfQorCitQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlKiBPYmplY3RSZWdpc3RyeTo6Y29u
dmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+PihpdGVy
YXRvci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJnN0ZDo6
Z2V0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZT4+KGl0
ZXJhdG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpUZXh0dXJlKiBPYmplY3RS
ZWdpc3RyeTo6Y29udmVydFRleHR1cmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIp
OworICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZT4+KGl0
ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiAmc3Rk
OjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVyZT4+KGl0ZXJh
dG9yLT52YWx1ZSkuZ2V0KCk7Cit9CisKK1BBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyogT2JqZWN0
UmVnaXN0cnk6OmNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRp
Zmllcik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpUZXh0dXJl
Vmlldz4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6VGV4dHVy
ZVZpZXc+PihpdGVyYXRvci0+dmFsdWUpLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVQorCisjZW5kaWYgLy8gSEFWRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0UmVnaXN0
cnkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2Jq
ZWN0UmVnaXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzM3Nzg1NDdhM2E0YmEzNTVhNzUyM2QyZWNkNjIw
NjUzN2UxMDkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RSZWdpc3RyeS5oCkBAIC0wLDAgKzEsMTQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8dmFyaWFu
dD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgUEFMOjpXZWJHUFUgewor
Y2xhc3MgQWRhcHRlcjsKK2NsYXNzIEJpbmRHcm91cDsKK2NsYXNzIEJpbmRHcm91cExheW91dDsK
K2NsYXNzIEJ1ZmZlcjsKK2NsYXNzIENvbW1hbmRCdWZmZXI7CitjbGFzcyBDb21tYW5kRW5jb2Rl
cjsKK2NsYXNzIENvbXB1dGVQYXNzRW5jb2RlcjsKK2NsYXNzIENvbXB1dGVQaXBlbGluZTsKK2Ns
YXNzIERldmljZTsKK2NsYXNzIEV4dGVybmFsVGV4dHVyZTsKK2NsYXNzIEdQVTsKK2NsYXNzIFBp
cGVsaW5lTGF5b3V0OworY2xhc3MgUXVlcnlTZXQ7CitjbGFzcyBRdWV1ZTsKK2NsYXNzIFJlbmRl
ckJ1bmRsZUVuY29kZXI7CitjbGFzcyBSZW5kZXJCdW5kbGU7CitjbGFzcyBSZW5kZXJQYXNzRW5j
b2RlcjsKK2NsYXNzIFJlbmRlclBpcGVsaW5lOworY2xhc3MgU2FtcGxlcjsKK2NsYXNzIFNoYWRl
ck1vZHVsZTsKK2NsYXNzIFRleHR1cmU7CitjbGFzcyBUZXh0dXJlVmlldzsKK30KKworbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKKworY2xhc3MgT2JqZWN0UmVnaXN0cnkgZmluYWwgOiBwdWJs
aWMgV2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBPYmpl
Y3RSZWdpc3RyeSgpOworICAgIH5PYmplY3RSZWdpc3RyeSgpOworCisgICAgdm9pZCBhZGRPYmpl
Y3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkFkYXB0ZXImKTsKKyAgICB2b2lkIGFk
ZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJik7CisgICAg
dm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExh
eW91dCYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BV
OjpCdWZmZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6Oldl
YkdQVTo6Q29tbWFuZEJ1ZmZlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZp
ZXIsIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdl
YkdQVUlkZW50aWZpZXIsIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImKTsKKyAgICB2
b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVs
aW5lJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6
OkRldmljZSYpOworICAgIHZvaWQgYWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIsIFBBTDo6V2Vi
R1BVOjpFeHRlcm5hbFRleHR1cmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlm
aWVyLCBQQUw6OldlYkdQVTo6R1BVJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRp
ZmllciwgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0Jik7CisgICAgdm9pZCBhZGRPYmplY3Qo
V2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0Jik7CisgICAgdm9pZCBhZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlF1ZXVlJik7CisgICAgdm9pZCBh
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29k
ZXImKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
UmVuZGVyQnVuZGxlJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFM
OjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJik7CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BV
SWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJik7CisgICAgdm9pZCBhZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlNhbXBsZXImKTsKKyAgICB2b2lk
IGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJik7
CisgICAgdm9pZCBhZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciwgUEFMOjpXZWJHUFU6OlRleHR1
cmUmKTsKKyAgICB2b2lkIGFkZE9iamVjdChXZWJHUFVJZGVudGlmaWVyLCBQQUw6OldlYkdQVTo6
VGV4dHVyZVZpZXcmKTsKKworICAgIHZvaWQgcmVtb3ZlT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIp
OworCisgICAgUEFMOjpXZWJHUFU6OkFkYXB0ZXIqIGNvbnZlcnRBZGFwdGVyRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCogY29u
dmVydEJpbmRHcm91cEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBB
TDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIGNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9tQmFj
a2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6QnVmZmVyKiBj
b252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFM
OjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIGNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
KiBjb252ZXJ0Q29tbWFuZEVuY29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5h
bDsKKyAgICBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyKiBjb252ZXJ0Q29tcHV0ZVBh
c3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpX
ZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogY29udmVydENvbXB1dGVQaXBlbGluZUZyb21CYWNraW5n
KFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpEZXZpY2UqIGNvbnZl
cnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6Oldl
YkdQVTo6RXh0ZXJuYWxUZXh0dXJlKiBjb252ZXJ0RXh0ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OkdQVSogY29udmVydEdQ
VUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpQ
aXBlbGluZUxheW91dCogY29udmVydFBpcGVsaW5lTGF5b3V0RnJvbUJhY2tpbmcoV2ViR1BVSWRl
bnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0KiBjb252ZXJ0UXVlcnlT
ZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6
UXVldWUqIGNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOwor
ICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyKiBjb252ZXJ0UmVuZGVyQnVuZGxl
RW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2Vi
R1BVOjpSZW5kZXJCdW5kbGUqIGNvbnZlcnRSZW5kZXJCdW5kbGVGcm9tQmFja2luZyhXZWJHUFVJ
ZGVudGlmaWVyKSBmaW5hbDsKKyAgICBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIGNv
bnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFs
OworICAgIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSogY29udmVydFJlbmRlclBpcGVsaW5l
RnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisgICAgUEFMOjpXZWJHUFU6OlNh
bXBsZXIqIGNvbnZlcnRTYW1wbGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgZmluYWw7
CisgICAgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSogY29udmVydFNoYWRlck1vZHVsZUZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJl
KiBjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpIGZpbmFsOworICAg
IFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyogY29udmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmco
V2ViR1BVSWRlbnRpZmllcikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgT2JqZWN0ID0g
c3RkOjp2YXJpYW50PAorICAgICAgICBzdGQ6Om1vbm9zdGF0ZSwKKyAgICAgICAgc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6QWRhcHRlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91cD4sCisgICAgICAgIHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4sCisgICAgICAgIHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4sCisgICAgICAgIHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+LAorICAgICAgICBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4sCisgICAgICAg
IHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4s
CisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkRldmlj
ZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkdQ
VT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlBpcGVsaW5l
TGF5b3V0PiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UXVl
cnlTZXQ+LAorICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpRdWV1
ZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1
bmRsZUVuY29kZXI+LAorICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpSZW5kZXJCdW5kbGU+LAorICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2Vi
R1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiwKKyAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZT4sCisgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmU+LAorICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4KKyAgICA+OworICAgIEhhc2hNYXA8V2ViR1BV
SWRlbnRpZmllciwgT2JqZWN0PiBtX29iamVjdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVQorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgKaW5kZXggNjAwNWM4OGY4MWFlMjlhZTFkMDIxM2Q0YmE5M2I1NGQxZTVhYzZk
Yy4uYTk0NjhmNTI3YzRjMWQxMTMyYTBkODQzZTJkNGZmMTI2YmFmYjZmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oCkBAIC0xODksNyArMTg5LDcgQEAgc3RydWN0IFZlcnRleEF0dHJpYnV0
ZTsKIHN0cnVjdCBWZXJ0ZXhCdWZmZXJMYXlvdXQ7CiBzdHJ1Y3QgVmVydGV4U3RhdGU7CiAKLWNs
YXNzIENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0PiB7CitjbGFzcyBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0KCkgPSBkZWZh
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaAppbmRleCBiMjFlYTFiYjIzZDNkMzEwYjg0OGZiNGVl
MjFkNDA4YWVmYmEyYThiLi41YzgxYjRkYzQyYWRmOTQ5ZDQ1MmFlNTk2ODU2NjAyNzM3NWI4YTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAogc3RydWN0IFNoYWRlck1vZHVsZURlc2NyaXB0b3IgOiBwdWJsaWMgT2Jq
ZWN0RGVzY3JpcHRvckJhc2UgewogICAgIFN0cmluZyBjb2RlOwotICAgIC8vIEpTQzo6U3Ryb25n
PEpTQzo6SlNPYmplY3Q+IHNvdXJjZU1hcDsKKyAgICAvLyBGSVhNRTogSG9vayB1cCB0aGUgc291
cmNlTWFwLgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4ZTNhZDE5YzlmNTdhNWRm
NDg2MDdiMGYzZjYzMzQ2OTAwMjUyMGI3Li42NDFkZjE2NGY5ZTNjODVlM2U0Nzg3MTE4YTM1OTNm
Njc4NzUxYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU0LDYgKzU0LDcgQEAgR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmVWaWV3LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0
SGVhcC5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdFJlZ2lzdHJ5
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE3Y2U0MDBhOWUw
OWFkODkyNTAxNGEyMDBhY2I5YzMzNzJhMjYwMDcuLjViMTgwZTExMmJmYmMxOTE3MjE2OTMyNjYx
Y2Q5ZjJlZmQxYWJiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjkxNiwxMyArMjkxNiwxMyBAQAogCQkxQzhFMkEzMjEyNzc4NTI0
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSW5zcGVjdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclVJ
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVj
dG9yVUlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDFEMjc0NDZB
MDMwMDJDQ0I3OCAvKiBSZW1vdGVHUFUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR1BV
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5OEMwMUUyNzQ0NkEwMzAwMkND
Qjc4IC8qIFdlYkdQVU9iamVjdEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0SGVh
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzk4QzAxRTI3NDQ2QTAzMDAyQ0NC
NzggLyogV2ViR1BVT2JqZWN0UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVT2JqZWN0
UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMUYyNzQ0NkEw
MzAwMkNDQjc4IC8qIFJlbW90ZVF1ZXJ5U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVF1ZXJ5
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDIwMjc0NDZBMDQwMDJD
Q0I3OCAvKiBSZW1vdGVSZW5kZXJCdW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVy
QnVuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDIxMjc0NDZBMDQw
MDJDQ0I3OCAvKiBSZW1vdGVRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVRdWV1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOThDMDIyMjc0NDZBMDQwMDJD
Q0I3OCAvKiBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5
OEMwMjMyNzQ0NkEwNTAwMkNDQjc4IC8qIFJlbW90ZVNoYWRlck1vZHVsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVTaGFkZXJNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkxQzk4QzAyNDI3NDQ2QTA1MDAyQ0NCNzggLyogV2ViR1BVT2JqZWN0SGVhcC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVPYmplY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM5OEMwMjQyNzQ0NkEwNTAwMkNDQjc4IC8qIFdlYkdQVU9iamVjdFJl
Z2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVU9iamVjdFJlZ2lzdHJ5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5OEMwMjUyNzQ0NkEwNjAwMkNDQjc4IC8q
IFJlbW90ZVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVGV4dHVyZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAyNjI3NDQ2QTA2MDAyQ0NCNzggLyogUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzAyNzI3NDQ2
QTA2MDAyQ0NCNzggLyogUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMxNzIsNiArMzE3Miw4IEBACiAJCTFDQjc0NkE0Mjc0M0FEQkEwMEYxOTg3NCAvKiBXZWJHUFVD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCQkU0
OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclVJTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSU1lc3NhZ2Vz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMUNCRDc1M0MyNzQ3QUEz
MTAwNEZBMEZGIC8qIFdlYkdQVU9iamVjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
R1BVT2JqZWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQkQ3NTNE
Mjc0N0FBMzEwMDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVU9iamVjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCRjkwMTIy
NzEwMThCNTAwMEM0NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNDNTRBRkQyNzBGOTY1NDAwNUJGOEJFIC8qIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGMThGM0UyNkJCNUQ5MDAw
NEIxNzIyIC8qIExvZ0luaXRpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ0lu
aXRpYWxpemF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0MjcsOCAr
NzQyOSwxMCBAQAogCQkJCTFDOThDMDM2Mjc0NDZBMDkwMDJDQ0I3OCAvKiBSZW1vdGVUZXh0dXJl
Vmlldy5jcHAgKi8sCiAJCQkJMUM5OEMwMkUyNzQ0NkEwODAwMkNDQjc4IC8qIFJlbW90ZVRleHR1
cmVWaWV3LmggKi8sCiAJCQkJMUM5OEMwODgyNzQ0QkQ5OTAwMkNDQjc4IC8qIFJlbW90ZVRleHR1
cmVWaWV3Lm1lc3NhZ2VzLmluICovLAotCQkJCTFDOThDMDI0Mjc0NDZBMDUwMDJDQ0I3OCAvKiBX
ZWJHUFVPYmplY3RIZWFwLmNwcCAqLywKLQkJCQkxQzk4QzAxRTI3NDQ2QTAzMDAyQ0NCNzggLyog
V2ViR1BVT2JqZWN0SGVhcC5oICovLAorCQkJCTFDQkQ3NTNDMjc0N0FBMzEwMDRGQTBGRiAvKiBX
ZWJHUFVPYmplY3RIZWFwLmNwcCAqLywKKwkJCQkxQ0JENzUzRDI3NDdBQTMxMDA0RkEwRkYgLyog
V2ViR1BVT2JqZWN0SGVhcC5oICovLAorCQkJCTFDOThDMDI0Mjc0NDZBMDUwMDJDQ0I3OCAvKiBX
ZWJHUFVPYmplY3RSZWdpc3RyeS5jcHAgKi8sCisJCQkJMUM5OEMwMUUyNzQ0NkEwMzAwMkNDQjc4
IC8qIFdlYkdQVU9iamVjdFJlZ2lzdHJ5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkdQVTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05NTAzLDEwICs5NTA3LDEwIEBACiAJCTU3
NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1MUY3QkI3RTI3NDU2NEExMDBDNDVBNzIgLyog
U2VjdXJpdHkuZnJhbWV3b3JrICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBs
aWJXVEYuYSAqLywKIAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50
aWNhdGlvbi5mcmFtZXdvcmsgKi8sCiAJCQkJNTcwREFBQjAyMzAyNzNEMjAwRThGQzA0IC8qIE5l
YXJGaWVsZC5mcmFtZXdvcmsgKi8sCisJCQkJNTFGN0JCN0UyNzQ1NjRBMTAwQzQ1QTcyIC8qIFNl
Y3VyaXR5LmZyYW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjIyOSw4ICsxMjIzMyw4IEBACiAJCQlpc2EgPSBQ
QlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKLQkJCQk1MUY3QkI3QjI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTU3OUZDMjcxN0FGNTAwMEVENTI4MCAv
KiBEYWVtb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRjdCQjdCMjc0NEM1MDcw
MEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
Q0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTQ3
MDgsMTIgKzE0NzEyLDEyIEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1MUY3QkI3RDI3
NDU2NDA0MDBDNDVBNzIgLyogQ29kZVNpZ25pbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1
N0EwMTI3MTdCN0ZCMDBFRDUyODAgLyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFGN0JCN0QyNzQ1NjQwNDAwQzQ1QTcyIC8qIENvZGVTaWduaW5nLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMxNTc5RkYyNzE3QjZEMjAwRUQ1MjgwIC8qIERhZW1vbkRlY29kZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTFGN0JCN0MyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGll
bnRDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkUyNzE3QjZDMTAwRUQ1
MjgwIC8qIERhZW1vbkVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkIyNzE3
QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUx
RjdCQjdDMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxMkNENkEwMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTdBMEMyNzE3Q0ExRDAwRUQ1MjgwIC8qIFdlYlB1c2hE
YWVtb25NYWluLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>