<?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>175599</bug_id>
          
          <creation_ts>2017-08-15 14:33:08 -0700</creation_ts>
          <short_desc>[Cache API] Implement Worker connection to the Cache storage engine</short_desc>
          <delta_ts>2017-08-16 15:11:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1338883</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-15 14:33:08 -0700</bug_when>
    <thetext>[Cache API] Implement Worker connection to the Cache storage engine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338891</commentid>
    <comment_count>1</comment_count>
      <attachid>318179</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-15 15:03:34 -0700</bug_when>
    <thetext>Created attachment 318179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338939</commentid>
    <comment_count>2</comment_count>
      <attachid>318194</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-15 16:15:31 -0700</bug_when>
    <thetext>Created attachment 318194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338957</commentid>
    <comment_count>3</comment_count>
      <attachid>318197</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-15 16:39:26 -0700</bug_when>
    <thetext>Created attachment 318197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339217</commentid>
    <comment_count>4</comment_count>
      <attachid>318197</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-16 10:57:17 -0700</bug_when>
    <thetext>Comment on attachment 318197
Patch

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

&gt; Source/WebCore/Modules/cache/CacheQueryOptions.h:43
&gt; +    CacheQueryOptions options;

return {
    ignoreSearch,
    ignoreMethod,
    ignoreVary,
    cacheName.isolatedCopy()
};

It is about the same amount of lines and avoids some unnecessary refcounting churn for the String.

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:137
&gt; +    iterator-&gt;value(cacheIdentifier, error);

It is risky to call a callback while you&apos;re holding on to a HashMap iterator. The callback may do things that modify the m_openAndRemoveCachePendingRequests HashMap and would invalidate your iterator, causing a crash on the next line.
Please fix.

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:149
&gt; +    iterator-&gt;value(WTFMove(caches));

It is risky to call a callback while you&apos;re holding on to a HashMap iterator. The callback may do things that modify the m_retrieveCachesPendingRequests HashMap and would invalidate your iterator, causing a crash on the next line.
Please fix.

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:161
&gt; +    iterator-&gt;value(WTFMove(records));

It is risky to call a callback while you&apos;re holding on to a HashMap iterator. The callback may do things that modify the m_retrieveRecordsPendingRequests HashMap and would invalidate your iterator, causing a crash on the next line.
Please fix.

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:173
&gt; +    iterator-&gt;value(WTFMove(records), error);

ditto

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:174
&gt; +    m_batchDeleteAndPutPendingRequests.remove(iterator);

Method is called remove, member is called delete, please choose one and stick to it.

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:185
&gt; +    iterator-&gt;value(WTFMove(records), error);

ditto.

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.h:107
&gt; +    uint64_t m_openAndRemoveCachePendingRequestsCounter { 0 };

Why do we need for counters?

Can&apos;t we just have one to generate identifiers for all kinds of requests?

&gt; Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp:141
&gt; +                isolatedCaches.uncheckedAppend(CacheInfo { cache.identifier, cache.name.isolatedCopy() });

May be nice (i.e. more reusable) to have this as an isolatedCopy() method on the CacheInfo struct instead.

&gt; Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp:197
&gt; +    for (const auto&amp; record : records)

This logic is duplicated, may be nice to move it to a utility function.

&gt; Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp:206
&gt; +        for (auto&amp; recordData : recordsData)

This logic is duplicated, may be nice to move it to a utility function.

&gt; Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h:36
&gt; +class WorkerCacheStorageConnection : public CacheStorageConnection {

final?

&gt; Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h:56
&gt; +    RefPtr&lt;CacheStorageConnection&gt; m_mainThreadConnection;

What makes sure this gets destroyed on the main thread?

&gt; Source/WebCore/loader/FetchOptions.h:66
&gt; +    FetchOptions options = *this;

I don&apos;t like this pattern because if somebody adds a new data member that is not safely copyable cross-thread, this code will still build but crash. I&apos;d rather it fails building when something adds a new data member and forgets to update this isolatedCopy() method.
I.e. I&apos;d rather we use { } initializer with all members explicitly initialized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339283</commentid>
    <comment_count>5</comment_count>
      <attachid>318287</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-16 13:52:05 -0700</bug_when>
    <thetext>Created attachment 318287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339285</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-16 13:52:56 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to youenn fablet from comment #5)
&gt; Created attachment 318287 [details]
&gt; Patch

Review items should be fixed in this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339288</commentid>
    <comment_count>7</comment_count>
      <attachid>318287</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-16 14:00:39 -0700</bug_when>
    <thetext>Comment on attachment 318287
Patch

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

r=me

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:83
&gt; +    uint64_t requestIdentifier = ++m_requestCounter;

nit: m_requestCounter is a bit confusing as it is used as a way to generate identifiers, not *count* requests. Maybe m_lastRequestIdentifier ?

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:131
&gt; +    auto callback = m_openAndRemoveCachePendingRequests.take(requestIdentifier);

Could be inside the if condition

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:138
&gt; +    auto callback = m_retrieveCachesPendingRequests.take(requestIdentifier);

ditto

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:145
&gt; +    auto callback = m_retrieveRecordsPendingRequests.take(requestIdentifier);

ditto

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:152
&gt; +    auto callback = m_batchDeleteAndPutPendingRequests.take(requestIdentifier);

ditto

&gt; Source/WebCore/Modules/cache/CacheStorageConnection.cpp:159
&gt; +    auto callback = m_batchDeleteAndPutPendingRequests.take(requestIdentifier);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339291</commentid>
    <comment_count>8</comment_count>
      <attachid>318288</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-16 14:23:13 -0700</bug_when>
    <thetext>Created attachment 318288
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339293</commentid>
    <comment_count>9</comment_count>
      <attachid>318289</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-16 14:27:04 -0700</bug_when>
    <thetext>Created attachment 318289
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339305</commentid>
    <comment_count>10</comment_count>
      <attachid>318289</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-16 15:09:38 -0700</bug_when>
    <thetext>Comment on attachment 318289
Patch for landing

Clearing flags on attachment: 318289

Committed r220810: &lt;http://trac.webkit.org/changeset/220810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339306</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-16 15:09:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339309</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-16 15:11:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/33927819&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318179</attachid>
            <date>2017-08-15 15:03:34 -0700</date>
            <delta_ts>2017-08-15 16:15:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175599-20170815150333.patch</filename>
            <type>text/plain</type>
            <size>41257</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRjMTg3MjQ0MDEyNGIy
OWM1ZTU4ZjdhYjY2MGEzYjFiMzljN2ZjZi4uNTFkMDQ2MWZiNDhlMGMyYjMwOTg2N2FlNDUwZDEw
MTI4NTE0ZWI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA4LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBJbXBs
ZW1lbnQgV29ya2VyIGNvbm5lY3Rpb24gdG8gdGhlIENhY2hlIHN0b3JhZ2UgZW5naW5lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgIEFkZGluZyBhIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gdG8gY29ubmVjdCB3b3JrZXJzIENhY2hlL0NhY2hlU3RvcmFnZQorICAgICAgICB0byB0
aGUgY2FjaGUgc3RvcmFnZSBlbmdpbmUuCisgICAgICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gZG9lcyB0aGlzIGJ5IGhvcHBpbmcgdG8gdGhlIG1haW4gdGhyZWFkIHRvIGNhbGwgdGhl
IGRvY3VtZW50IGNhY2hlIHN0b3JhZ2UgY29ubmVjdGlvbiB0byBkbyB0aGUgYWN0dWFsIGpvYi4K
KyAgICAgICAgRG9pbmcgc29tZSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIHJlZmFjdG9yaW5nIHRv
IHNoYXJlIGNvZGUgd2l0aCBXSzIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhY2hlIHN0b3JhZ2Ug
Y29ubmVjdGlvbi4gCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW5PclJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjp1cGRhdGVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmVSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3Bl
cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3Jvc3NUaHJlYWRSZWNvcmRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b0JhdGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlczo6Y2FjaGVzIGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAxNy0wOC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKCkgdG8gcmV0dXJuIGEgV1RGOjpFeHBlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oCmluZGV4IDY4ZjY3ZmFjZjM1Njg3
MWVlZjRlNTU0Njk1OGI3MjdhNjU5MzY5M2IuLjRhY2UzZTA3ZTJkNTE2NzcwNmY5ZTJjMzdhMzQ4
NDE5YzhmMjU3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVRdWVyeU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
UXVlcnlPcHRpb25zLmgKQEAgLTMwLDYgKzMwLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IENhY2hlUXVlcnlPcHRpb25zIHsKKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiBDYWNoZVF1ZXJ5T3B0aW9ucyB7IGlnbm9yZVNlYXJjaCwg
aWdub3JlTWV0aG9kLCBpZ25vcmVWYXJ5LCBjYWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCkgfTsgfQor
CiAgICAgYm9vbCBpZ25vcmVTZWFyY2ggeyBmYWxzZSB9OwogICAgIGJvb2wgaWdub3JlTWV0aG9k
IHsgZmFsc2UgfTsKICAgICBib29sIGlnbm9yZVZhcnkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
aW5kZXggZjQ0ZjllNDE3ZDQzY2FlZjNiMjI5MzllMzIzMmQ5ZmFkYWM1ZDBiMS4uNDRiZWEyNWM2
NmRmODQ5MzNiNTQ2NzY4YWIzOTk1NGM4NzM3OGI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC03OCw1
ICs3OCwxMTQgQEAgYm9vbCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpxdWVyeUNhY2hlTWF0Y2go
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgT3BlblJlbW92ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fb3BlbkFuZFJlbW92ZUNh
Y2hlUGVuZGluZ1JlcXVlc3RzQ291bnRlcjsKKyAgICBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRp
bmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKwor
ICAgIGRvT3BlbihyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCBjYWNoZU5hbWUpOworfQorCit2
b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIE9wZW5SZW1vdmVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyID0gKyttX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0c0NvdW50
ZXI7CisgICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBkb1JlbW92ZShyZXF1ZXN0SWRl
bnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9yZXRy
aWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0c0NvdW50ZXI7CisgICAgbV9yZXRyaWV2ZUNhY2hlc1Bl
bmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
KworICAgIGRvUmV0cmlldmVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7Cit9CisK
K3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3Rz
Q291bnRlcjsKKyAgICBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGRvUmV0cmlldmVSZWNvcmRz
KHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpOworfQorCit2b2lkIENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9iYXRjaERlbGV0
ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0c0NvdW50ZXI7CisgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBl
bmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
KworICAgIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24ocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRl
bnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25zKSk7Cit9CisKK3ZvaWQgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmIHJlY29y
ZHMsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0c0Nv
dW50ZXI7CisgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGRvQmF0Y2hQdXRPcGVyYXRp
b24ocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSk7
Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbk9yUmVtb3ZlQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVy
cm9yIGVycm9yKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29wZW5BbmRSZW1vdmVDYWNoZVBl
bmRpbmdSZXF1ZXN0cy5maW5kKHJlcXVlc3RJZGVudGlmaWVyKTsKKworICAgIEFTU0VSVChpdGVy
YXRvciAhPSBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy5lbmQoKSk7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLmVuZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFsdWUoY2FjaGVJZGVudGlmaWVy
LCBlcnJvcik7CisgICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMucmVtb3Zl
KGl0ZXJhdG9yKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVDYWNo
ZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxDYWNoZUluZm8+JiYgY2FjaGVz
KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3Rz
LmZpbmQocmVxdWVzdElkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fcmV0
cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMuZW5kKCkpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLmVuZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpdGVyYXRvci0+dmFsdWUoV1RGTW92ZShjYWNoZXMpKTsKKyAgICBtX3JldHJpZXZlQ2Fj
aGVzUGVuZGluZ1JlcXVlc3RzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
VmVjdG9yPFJlY29yZD4mJiByZWNvcmRzKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JldHJp
ZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy5maW5kKHJlcXVlc3RJZGVudGlmaWVyKTsKKworICAg
IEFTU0VSVChpdGVyYXRvciAhPSBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy5lbmQo
KSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3Rz
LmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFsdWUoV1RGTW92ZShy
ZWNvcmRzKSk7CisgICAgbV9yZXRyaWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMucmVtb3ZlKGl0
ZXJhdG9yKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVSZWNvcmRz
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYg
cmVjb3JkcywgRXJyb3IgZXJyb3IpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fYmF0Y2hEZWxl
dGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMuZmluZChyZXF1ZXN0SWRlbnRpZmllcik7CisKKyAgICBB
U1NFUlQoaXRlcmF0b3IgIT0gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5lbmQo
KSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVz
dHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZShXVEZNb3Zl
KHJlY29yZHMpLCBlcnJvcik7CisgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0
cy5yZW1vdmUoaXRlcmF0b3IpOworfQorCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1
dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rvcjx1aW50
NjRfdD4mJiByZWNvcmRzLCBFcnJvciBlcnJvcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9i
YXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5maW5kKHJlcXVlc3RJZGVudGlmaWVyKTsK
KworICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVl
c3RzLmVuZCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRp
bmdSZXF1ZXN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRlcmF0b3ItPnZhbHVl
KFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKKyAgICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGlu
Z1JlcXVlc3RzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5oCmluZGV4IDIzZWQzZTU4OGE4M2Q1MmY4Y2I2MDRlM2U3NDFmYTVjMjA4ZmI0
YjguLjViNDU5YzJjOGJmMGE4ZjJhYmI2YmM4M2RmMGQyMWM5ZWFlNDQxMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY4LDIwICs2OSw1MSBAQCBwdWJsaWM6CiAgICAg
fTsKIAogICAgIHVzaW5nIE9wZW5SZW1vdmVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1
aW50NjRfdCwgRXJyb3IpPjsKLSAgICB1c2luZyBDYWNoZU1hcENhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKFZlY3RvcjxDYWNoZUluZm8+JiYpPjsKKyAgICB1c2luZyBDYWNoZXNDYWxsYmFj
ayA9IFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8Q2FjaGVJbmZvPiYmKT47CiAgICAgdXNpbmcg
UmVjb3Jkc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxSZWNvcmQ+JiYpPjsK
ICAgICB1c2luZyBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZl
Y3Rvcjx1aW50NjRfdD4mJiwgRXJyb3IpPjsKIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0
IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLywgT3Bl
blJlbW92ZUNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soMCwgRXJyb3I6Ok5vdEltcGxl
bWVudGVkKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUodWludDY0X3QgLyogY2FjaGVJZGVu
dGlmaWVyICovLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjaygwLCBF
cnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJldHJpZXZlQ2FjaGVz
KGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBDYWNoZU1hcENhbGxiYWNrJiYgY2FsbGJhY2sp
IHsgY2FsbGJhY2soeyB9KTsgfQorICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIC8qIG9yaWdp
biAqLywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8sIE9wZW5SZW1vdmVDYWxsYmFjayYm
KTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIE9wZW5S
ZW1vdmVDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYg
Lyogb3JpZ2luICovLCBDYWNoZXNDYWxsYmFjayYmKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXRy
aWV2ZVJlY29yZHModWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBSZWNvcmRzQ2FsbGJh
Y2smJiBjYWxsYmFjaykgeyBjYWxsYmFjayh7IH0pOyB9Ci0gICAgdmlydHVhbCB2b2lkIGJhdGNo
RGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHsgfSwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCAvKiBjYWNoZUlkZW50
aWZpZXIgKi8sIFZlY3RvcjxSZWNvcmQ+JiYsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykgeyBjYWxsYmFjayh7IH0sIEVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KKyAgICB2b2lk
IHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFJlY29yZHND
YWxsYmFjayYmKTsKKyAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNh
Y2hlSWRlbnRpZmllciAqLywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlv
bnMmJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGJhdGNoUHV0T3BlcmF0
aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPFJlY29yZD4mJiwgQmF0
Y2hPcGVyYXRpb25DYWxsYmFjayYmKTsKIAogcHJvdGVjdGVkOgogICAgIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb24oKSA9ICBkZWZhdWx0OworCisgICAgdm9pZCBvcGVuQ29tcGxldGVkKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3IgZXJyb3IpIHsgb3Bl
bk9yUmVtb3ZlQ29tcGxldGVkKGlkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgZXJyb3IpOyB9
CisgICAgdm9pZCByZW1vdmVDb21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgeyBvcGVuT3JSZW1vdmVDb21wbGV0ZWQoaWRl
bnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPENhY2hl
SW5mbz4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlY29yZHModWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVtb3ZlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBFcnJvcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
dXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8dWlu
dDY0X3Q+JiYsIEVycm9yKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZG9PcGVuKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgY29u
c3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8pIHsgb3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgMCwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb1Jl
bW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlm
aWVyICovKSB7IHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgMCwgRXJyb3I6Ok5v
dEltcGxlbWVudGVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLykgeyB1cGRh
dGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBk
b1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyog
Y2FjaGVJZGVudGlmaWVyICovKSB7IHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsg
fSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmKSB7IHJlbW92ZVJlY29yZHNDb21w
bGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHsgfSwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxSZWNvcmQ+JiYp
IHsgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgeyB9LCBFcnJvcjo6Tm90
SW1wbGVtZW50ZWQpOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5PclJlbW92ZUNv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBFcnJvcik7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBPcGVuUmVtb3ZlQ2FsbGJhY2s+
IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzOworICAgIHVpbnQ2NF90IG1fb3Bl
bkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzQ291bnRlciB7IDAgfTsKKworICAgIEhhc2hN
YXA8dWludDY0X3QsIENhY2hlc0NhbGxiYWNrPiBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVl
c3RzOworICAgIHVpbnQ2NF90IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHNDb3VudGVy
IHsgMCB9OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVj
b3JkPiYmKT4+IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzOworICAgIHVpbnQ2NF90
IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzQ291bnRlciB7IDAgfTsKKworICAgIEhh
c2hNYXA8dWludDY0X3QsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2s+IG1fYmF0Y2hEZWxldGVBbmRQ
dXRQZW5kaW5nUmVxdWVzdHM7CisgICAgdWludDY0X3QgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRp
bmdSZXF1ZXN0c0NvdW50ZXIgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTBjOWY5ZjI0ZWU3MDBkMmI0Nzcy
MjFiNDI3OTFjMjBlN2ZmMDI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDIx
OSBAQAorCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNhY2hlUXVlcnlPcHRpb25z
LmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5o
IgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBDcm9zc1RocmVhZFJlY29yZERhdGEgeworICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CisK
KyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7CisgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3Q7CisKKyAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKKyAgICBTdHJp
bmcgcmVmZXJyZXI7CisKKyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlc3BvbnNlSGVhZGVyc0d1
YXJkOworICAgIFJlc291cmNlUmVzcG9uc2U6OkNyb3NzVGhyZWFkRGF0YSByZXNwb25zZTsKK307
CisKK3N0YXRpYyBDcm9zc1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1RocmVhZFJlY29yZERhdGEo
Y29uc3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkJiByZWNvcmQpCit7CisgICAgcmV0
dXJuIENyb3NzVGhyZWFkUmVjb3JkRGF0YSB7CisgICAgICAgIHJlY29yZC5pZGVudGlmaWVyLAor
ICAgICAgICByZWNvcmQucmVxdWVzdEhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJlcXVl
c3QuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlY29yZC5vcHRpb25zLmlzb2xhdGVkQ29weSgp
LAorICAgICAgICByZWNvcmQucmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlY29y
ZC5yZXNwb25zZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJlc3BvbnNlLmNyb3NzVGhy
ZWFkRGF0YSgpCisgICAgfTsKK30KKworc3RhdGljIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJl
Y29yZCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKENyb3NzVGhyZWFkUmVjb3JkRGF0YSYmIGRh
dGEpCit7CisgICAgcmV0dXJuIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB7CisgICAg
ICAgIGRhdGEuaWRlbnRpZmllciwKKyAgICAgICAgZGF0YS5yZXF1ZXN0SGVhZGVyc0d1YXJkLAor
ICAgICAgICBXVEZNb3ZlKGRhdGEucmVxdWVzdCksCisgICAgICAgIFdURk1vdmUoZGF0YS5vcHRp
b25zKSwKKyAgICAgICAgV1RGTW92ZShkYXRhLnJlZmVycmVyKSwKKyAgICAgICAgZGF0YS5yZXNw
b25zZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNyb3NzVGhy
ZWFkRGF0YShXVEZNb3ZlKGRhdGEucmVzcG9uc2UpKQorICAgIH07Cit9CisKK1JlZjxXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVh
dGUoV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IGFk
b3B0UmVmKCpuZXcgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihzY29wZSkpOworICAgIGNv
bm5lY3Rpb24tPm1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbcHJvdGVjdGVkQ29ubmVjdGlvbiA9
IG1ha2VSZWYoY29ubmVjdGlvbi5nZXQoKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBE
b2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CisKKyAgICAg
ICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CisgICAgICAgIHByb3RlY3RlZENvbm5lY3Rpb24t
Pm1fbWFpblRocmVhZENvbm5lY3Rpb24gPSBkb2N1bWVudC5wYWdlKCktPmNhY2hlU3RvcmFnZVBy
b3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihkb2N1bWVudC5wYWdlKCktPnNl
c3Npb25JRCgpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29ubmVjdGlvbjsKK30KKworV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihXb3Jr
ZXJHbG9iYWxTY29wZSYgc2NvcGUpCisgICAgOiBtX3Njb3BlKHNjb3BlKQorICAgICwgbV9wcm94
eShtX3Njb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkpCisgICAgLCBtX3Rhc2tNb2Rl
KFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpCit7Cit9CisKK3Zv
aWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUp
Cit7CisgICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0
ZWRDb3B5KCksIGNhY2hlTmFtZSA9IGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9t
YWluVGhyZWFkQ29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0odWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAg
ICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIGVycm9y
LCBjYWNoZUlkZW50aWZpZXIsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICAgICAgb3BlbkNvbXBsZXRlZChyZXF1
ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgICAgICB9LCBt
X3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFk
Q29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVtb3ZlKGNh
Y2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXSh1aW50NjRfdCByZW1vdmVk
Q2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlbW92ZWRDYWNoZUlkZW50aWZpZXIsIHJlbW92ZWRDYWNoZUlkZW50aWZpZXIg
PT0gY2FjaGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIGVycm9yXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAg
ICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRl
bnRpZmllciwgZXJyb3IpOworICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAgICAgIH0p
OworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0
cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKQoreworICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3JpZ2luLmlz
b2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRDb25u
ZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hl
cyhvcmlnaW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
cmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IFZlY3RvcjxDYWNoZUluZm8+JiBjYWNoZXMpIG11dGFi
bGUgeworICAgICAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gaXNvbGF0ZWRDYWNoZXM7CisgICAg
ICAgICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hlcy5zaXpl
KCkpOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYWNoZSA6IGNhY2hlcykKKyAgICAg
ICAgICAgICAgICBpc29sYXRlZENhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2Fj
aGUuaWRlbnRpZmllciwgY2FjaGUubmFtZS5pc29sYXRlZENvcHkoKSB9KTsKKworICAgICAgICAg
ICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FjaGVzID0gV1RGTW92ZShpc29s
YXRlZENhY2hlcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVD
YWNoZXMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FjaGVzKSk7CisgICAgICAgICAgICB9
LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb3h5LnBvc3RU
YXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11
dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQo
bV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlv
bi0+cmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oVmVjdG9yPFJlY29y
ZD4mJiByZWNvcmRzKSBtdXRhYmxlIHsKKworICAgICAgICAgICAgVmVjdG9yPENyb3NzVGhyZWFk
UmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGE7CisgICAgICAgICAgICByZWNvcmRzRGF0YS5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgcmVjb3JkIDogcmVjb3JkcykKKyAgICAgICAgICAgICAgICByZWNvcmRzRGF0YS51bmNo
ZWNrZWRBcHBlbmQodG9Dcm9zc1RocmVhZFJlY29yZERhdGEocmVjb3JkKSk7CisKKyAgICAgICAg
ICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlY29yZHNEYXRhID0gV1RGTW92
ZShyZWNvcmRzRGF0YSksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICBWZWN0
b3I8UmVjb3JkPiByZWNvcmRzOworICAgICAgICAgICAgICAgIHJlY29yZHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShyZWNvcmRzRGF0YS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgcmVjb3JkRGF0YSA6IHJlY29yZHNEYXRhKQorICAgICAgICAgICAgICAgICAgICByZWNvcmRz
LnVuY2hlY2tlZEFwcGVuZChmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKFdURk1vdmUocmVjb3Jk
RGF0YSkpKTsKKworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUocmVjb3JkcykpOworICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNo
ZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMpCit7CisgICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVy
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRp
b25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11
dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQo
bV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlv
bi0+YmF0Y2hEZWxldGVPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0LCBXVEZNb3Zl
KG9wdGlvbnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJy
b3IpIG11dGFibGUgeworCisgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgZXJyb3IsIHJlcXVlc3RJZGVudGlmaWVy
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKKyAgICAgICAgICAgICAgICByZW1vdmVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlm
aWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7CisgICAgICAgICAgICB9LCBtX3Rhc2tNb2Rl
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMpCit7Cisg
ICAgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGE7CisgICAgcmVjb3Jk
c0RhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7CisgICAgZm9yIChj
b25zdCBhdXRvJiByZWNvcmQgOiByZWNvcmRzKQorICAgICAgICByZWNvcmRzRGF0YS51bmNoZWNr
ZWRBcHBlbmQodG9Dcm9zc1RocmVhZFJlY29yZERhdGEocmVjb3JkKSk7CisKKyAgICBtX3Byb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkc0RhdGEgPSBXVEZNb3Zl
KHJlY29yZHNEYXRhKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29u
bmVjdGlvbik7CisKKyAgICAgICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKKyAgICAgICAgcmVj
b3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHNEYXRhLnNpemUoKSk7CisgICAgICAg
IGZvciAoYXV0byYgcmVjb3JkRGF0YSA6IHJlY29yZHNEYXRhKQorICAgICAgICAgICAgcmVjb3Jk
cy51bmNoZWNrZWRBcHBlbmQoZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YShXVEZNb3ZlKHJlY29y
ZERhdGEpKSk7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hQdXRPcGVy
YXRpb24oY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8
dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpIG11dGFibGUgeworCisgICAgICAgICAg
ICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzID0gV1RGTW92ZShyZWNv
cmRzKSwgZXJyb3IsIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICBwdXRSZWNv
cmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7
CisgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDgzYjljYTBkMjQ0OTA2NWFjZjVhY2FkODFkYjcwYzY2ZWUwYzU5YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsNTkgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CisK
K2NsYXNzIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gOiBwdWJsaWMgQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKworcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKFdvcmtlckdsb2JhbFNjb3BlJik7
CisKKyAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uCisgICAgdm9pZCBkb09w
ZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICov
LCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLykgZmluYWw7CisgICAgdm9pZCBkb1JlbW92
ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVy
ICovKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovKSBmaW5hbDsKKworICAgIHZvaWQg
ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYp
IGZpbmFsOworICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmKSBmaW5h
bDsKKworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Njb3BlOworICAgIFdvcmtlckxvYWRlclBy
b3h5JiBtX3Byb3h5OworICAgIFN0cmluZyBtX3Rhc2tNb2RlOworCisgICAgUmVmUHRyPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IG1fbWFpblRocmVhZENvbm5lY3Rpb247Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCmluZGV4IGM1MzljZGU2M2I0YjRkMjc3MWM2
OWNmZjdkNTliN2YxMjU4NWI4MTkuLmM4ZTRmZGMxZjU5NjMwY2E0ZmQ1ZTViYmEzNTQxY2M0OWEy
OGM3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIENhY2hlU3RvcmFnZSog
V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmNhY2hlcyhXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUp
CiBDYWNoZVN0b3JhZ2UqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpjYWNoZXMoKSBjb25zdAog
ewogICAgIGlmICghbV9jYWNoZXMpCi0gICAgICAgIG1fY2FjaGVzID0gQ2FjaGVTdG9yYWdlOjpj
cmVhdGUobV9zY29wZSwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKCkpOworICAgICAg
ICBtX2NhY2hlcyA9IENhY2hlU3RvcmFnZTo6Y3JlYXRlKG1fc2NvcGUsIG1fc2NvcGUuY2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpKTsKICAgICByZXR1cm4gbV9jYWNoZXMuZ2V0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0OWJjNWQwNGIyOTlmY2Y1ODE3YzVlMWI2Y2UzNDlmZTk4Mzg4NWYyLi5lZGIwMzE3YzE0OGU2
MTIzMGU0ZWQ1NzAzYmRkY2JjM2QzMTg0NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzcyLDYgKzE3NzIsOCBAQAogCQk0
MUExQjAxRDFFNTQyMzlFMDA3RjM3NjkgLyogSlNET01HdWFyZGVkT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTFCMDFCMUU1NDIzOTYw
MDdGMzc2OSAvKiBKU0RPTUd1YXJkZWRPYmplY3QuY3BwICovOyB9OwogCQk0MUEzRDU4RTEwMUMx
NTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAv
KiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICovOyB9OwogCQk0MUEzRDU4RjEwMUMxNTJEMDAz
MTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmggKi87IH07CisJCTQxQTdEMzUyMUY0MzhEMTYwMDg5ODhERSAvKiBX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTdEMzRGMUY0MzhEMTAwMDg5ODhERSAvKiBXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJNDFBN0QzNTMxRjQzOEQxNjAwODk4
OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTdEMzUwMUY0MzhEMTAwMDg5ODhERSAvKiBX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi87IH07CiAJCTQxQUJFNjdCMUQwNTgwREIw
MDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQUJFNjdBMUQwNTgwRDUwMDZEODYyRCAv
KiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDFBQkU2N0MxRDA1ODBF
MDAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUFCRTY3OTFEMDU4MEQ1MDA2RDg2
MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCAqLzsgfTsKIAkJNDFBRDc1M0Ex
Q0VGNkJEMTAwQTMxNDg2IC8qIEZldGNoT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8qIEZldGNo
T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05NDQ0LDYgKzk0NDYsOCBAQAogCQk0MUE0OEE5RDFFODMxMkVCMDBEMkFDMkQgLyogUlRD
UGVlckNvbm5lY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
VENQZWVyQ29ubmVjdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
QTQ4QUE3MUU4NEFFRUMwMEQyQUMyRCAvKiBSVENSdHBQYXJhbWV0ZXJzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSVENSdHBQYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFBNDhBQTgxRTg0QUYxRDAwRDJBQzJEIC8qIFJUQ1J0cFBhcmFtZXRlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwUGFyYW1ldGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUE3RDM0RjFGNDM4RDEwMDA4OTg4REUgLyogV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFBN0QzNTAxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUFCRTY3OTFEMDU4MEQ1MDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzT3JpZ2luUHJl
ZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQUJFNjdB
MUQwNTgwRDUwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQUQ3NTM5MUNFRjZCQ0UwMEEzMTQ4NiAv
KiBGZXRjaE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hP
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjQ5MCw4ICsxMjQ5NCw4
IEBACiAJCTlCMDk4QkRFMUYzRDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0ZW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRhVHJhbnNmZXJJdGVtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDk4QkRGMUYzRDY3M0QwMDJERDU2MiAvKiBK
U0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjA5OEJFMDFGM0Q2NzNEMDAyREQ1NjIgLyogSlNEYXRhVHJhbnNmZXJJdGVtTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RhdGFUcmFuc2Zlckl0ZW1M
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCMDk4QkU2MUYzRDZBRjYwMDJE
RDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEpTU3RyaW5nQ2FsbGJhY2suY3BwOyBwYXRoID0gSlNTdHJpbmdDYWxsYmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCMDk4QkU3MUYzRDZBRjYwMDJERDU2
MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEpTU3RyaW5nQ2FsbGJhY2suaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwOThCRTYxRjNENkFGNjAwMkRENTYyIC8qIEpTU3RyaW5n
Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJp
bmdDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMDk4QkU3MUYz
RDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dSb290Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTMyNTdCMUYzRDJBQkEwMERBQUI2OSAvKiBEYXRh
VHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE3NjY5LDYgKzE3NjczLDggQEAKIAkJCQk0MUZCMjc4RTFGMzRDMjgyMDA3OTU0ODcgLyogRE9N
V2luZG93Q2FjaGVzLmNwcCAqLywKIAkJCQk0MUZCMjc4QzFGMzRDMjgyMDA3OTU0ODcgLyogRE9N
V2luZG93Q2FjaGVzLmggKi8sCiAJCQkJNDEzODBDMkIxRjM0M0UyRjAwMTU1RkRBIC8qIERPTVdp
bmRvd0NhY2hlcy5pZGwgKi8sCisJCQkJNDFBN0QzNEYxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQxQTdEMzUwMUY0MzhEMTAwMDg5
ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi8sCiAJCQkJNDFGQjI3OEYx
RjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcCAqLywKIAkJCQk0
MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaCAqLywK
IAkJCQk0MTM4MEMyQTFGMzQzRTJGMDAxNTVGREEgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
aWRsICovLApAQCAtMjczNjcsNiArMjczNzMsNyBAQAogCQkJCUY1NUIzREJFMTI1MUYxMkQwMDNF
RjI2OSAvKiBGaWxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4NjEyMkI4
QTNEMDAxRkQxRjcgLyogRmlsZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2ODlGMUFGMTI2
N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQTdE
MzUzMUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QTA5Q0VGMTFGMDIwNjlCMDBFOTNCREIgLyogRmlsZU1vbml0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2Qzg5MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlUmVh
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTc1ODQxRTEyNzc5QURBMDA2MjYyOEIgLyogRmls
ZVJlYWRlckxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQ3MywyMyArMjk0ODAsMTUgQEAK
IAkJCQk1MTZGN0Y2RDFDMzFFMzlBMDBGMTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQ5M0FFRTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTVEMUYzRUJDODMwMEM3
NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTgyQzIzRjFGMzEz
QTA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1
NUYxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTUxODJDMjQxMUYzMTNBMDkwMDU5QkE3QyAvKiBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU2MTFGM0VCQzgzMDBDNzQ5NTAgLyogU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTgyQzI0MzFGMzEz
QTA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUYxNzU2MzFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckpvYi5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTExQ0E2N0UxRjM5MDVBNjAwMTlFMDc0IC8qIFNlcnZpY2VXb3JrZXJK
b2IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTY0MUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2
aWNlV29ya2VySm9iQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTFDQTY4MDFGMzkzMzFG
MDAxOUUwNzQgLyogU2VydmljZVdvcmtlckpvYkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTExQ0E2N0ExRjM5MDRCMTAwMTlFMDc0IC8qIFNlcnZpY2VXb3JrZXJQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFGMTc1NjYxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1NjgxRjNFQkM4MzAwQzc0OTUwIC8q
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODJDMjQ1
MUYzMTNBMDkwMDU5QkE3QyAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYxNzU2OTFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZCMUYzRUJDODMwMEM3
NDk1MCAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NkMxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJVcGRhdGVW
aWFDYWNoZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFGMTc0RkYxRjM1ODk5NzAwQzc0OTUwIC8q
IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU2QjJD
RTExOEI3MTAxNjAwRkVDRkFBIC8qIFNlc3Npb25JRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMz
MDlFMTAwOTlFNjQ5MjAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCOERCREI0QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTg5Nyw2ICszMTg5Niw3IEBACiAJCQkJN0M5QUNB
QkQxRjNDRjFBRTAwRjNBQTA5IC8qIEpTQ3J5cHRvS2V5QWxnb3JpdGhtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxRjgwQjhEMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4NTExODI4M0E1NjAwRDg0Q0Q5IC8qIEpTQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUE3RDM1MjFGNDM4
RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1N0QwMDE4RjFERDU0MTUzMDBFRDE5RDkgLyogSlNDcnlwdG9LZXlVc2FnZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI1RjgzRDE4MjQxMUU3MDBEODRDRDkgLyogSlNDcnlw
dG9PcGVyYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDOUFDQUJGMUYzQ0YxQUYw
MEYzQUEwOSAvKiBKU0NyeXB0b1JzYUhhc2hlZEtleUFsZ29yaXRobS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTMzMzM4LDE5ICszMzMzOCwxMiBAQAogCQkJCTUxNkY3RjZFMUMzMUUzOUMwMEYxMTFE
QyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTNBRUU0
MTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFGMTc1NUMxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4MkMyM0UxRjMxM0EwOTAwNTlCQTdDIC8qIFNlcnZpY2VX
b3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMTc1NUUxRjNFQkM4MzAwQzc0OTUwIC8q
IFNlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4MkMyNDAx
RjMxM0EwOTAwNTlCQTdDIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTE4MkMyNDIxRjMxM0EwOTAwNTlCQTdDIC8qIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYxNzU2MDFGM0VCQzgzMDBDNzQ5NTAgLyog
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjE3NTYy
MUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VySm9iLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTUxMUNBNjdEMUYzOTA1QTYwMDE5RTA3NCAvKiBTZXJ2aWNlV29ya2VySm9iLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTUxMUNBNjc5MUYzOTA0QjEwMDE5RTA3NCAvKiBTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMTc1NjUxRjNFQkM4MzAwQzc0OTUw
IC8qIFNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYxNzU2
NzFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk1MTgyQzI0NDFGMzEzQTA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYxNzU2QTFGM0VCQzgzMDBDNzQ5
NTAgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTExQ0E2ODMxRjNBM0NEOTAwMTlFMDc0IC8qIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUY3RDQ0MUVCMUMzOTEw
MEU0N0I4MyAvKiBTZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMEYwOTlF
NjQ5MjAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUI4REJEQjRCMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNo
T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCmluZGV4IDdl
MWE4MzczOGQyMzk3ZjI0ZDcyNGNkMDEyNjY2N2ZhNjA0ZTE4YjguLjgxZDdmYzMwZWQ0ZGU4MzA5
MzRkNTI2MjcxODkwMzg3OTJiMTRjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GZXRjaE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25z
LmgKQEAgLTM0LDYgKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEZldGNo
T3B0aW9ucyB7CisgICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IEZldGNoT3B0aW9ucyB7IHR5cGUsIGRlc3RpbmF0aW9uLCBtb2RlLCBjcmVkZW50aWFscywgY2Fj
aGUsIHJlZGlyZWN0LCByZWZlcnJlclBvbGljeSwgaW50ZWdyaXR5Lmlzb2xhdGVkQ29weSgpLCBr
ZWVwQWxpdmUgfTsgfQorCiAgICAgZW51bSBjbGFzcyBUeXBlIHsgRW1wdHlTdHJpbmcsIEF1ZGlv
LCBGb250LCBJbWFnZSwgU2NyaXB0LCBTdHlsZSwgVHJhY2ssIFZpZGVvIH07CiAgICAgVHlwZSB0
eXBlIHsgVHlwZTo6RW1wdHlTdHJpbmcgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxODBmODhlNjk1ODdlMGEwNDNmYTY2NTBiMDNhNjIw
MTRkYjk5NTJhLi5kOWFkNTlhMjVmZWIwMzk5MjFmZDI0YzE5MzIzMWIyY2U0ZjY5YTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzg2LDQg
KzM4NiwxMSBAQCBQZXJmb3JtYW5jZSYgV29ya2VyR2xvYmFsU2NvcGU6OnBlcmZvcm1hbmNlKCkg
Y29uc3QKICAgICByZXR1cm4gKm1fcGVyZm9ybWFuY2U7CiB9CiAKK0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK3sKKyAg
ICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3JhZ2VD
b25uZWN0aW9uID0gV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKCp0aGlzKTsK
KyAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmlu
ZGV4IGM1YjBkNTJhYjRjYWNkNjFhMmI5OTQzNGY3NzgzYWVlZTU4MjIzOTMuLjA0OTFkN2M0ZmRk
MDU2N2UxZjI3YTIxYjQ4ZWU2Zjc1NTY3MjhmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTI3LDExICsyNywxMyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuaD4KQEAgLTY2LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcEluZGV4ZWRE
YXRhYmFzZSgpOwogI2VuZGlmCiAKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uJiBjYWNoZVN0
b3JhZ2VDb25uZWN0aW9uKCk7CisKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQo
KSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJTY3JpcHQoKSB7IG1f
c2NyaXB0ID0gbnVsbHB0cjsgfQogCkBAIC0xODMsNiArMTg3LDcgQEAgcHJpdmF0ZToKICAgICBt
dXRhYmxlIFJlZlB0cjxDcnlwdG8+IG1fY3J5cHRvOwogCiAgICAgU2Vzc2lvbklEIG1fc2Vzc2lv
bklEOworICAgIFJlZlB0cjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318194</attachid>
            <date>2017-08-15 16:15:31 -0700</date>
            <delta_ts>2017-08-15 16:39:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175599-20170815161531.patch</filename>
            <type>text/plain</type>
            <size>42058</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRjMTg3MjQ0MDEyNGIy
OWM1ZTU4ZjdhYjY2MGEzYjFiMzljN2ZjZi4uNTFkMDQ2MWZiNDhlMGMyYjMwOTg2N2FlNDUwZDEw
MTI4NTE0ZWI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA4LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBJbXBs
ZW1lbnQgV29ya2VyIGNvbm5lY3Rpb24gdG8gdGhlIENhY2hlIHN0b3JhZ2UgZW5naW5lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgIEFkZGluZyBhIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gdG8gY29ubmVjdCB3b3JrZXJzIENhY2hlL0NhY2hlU3RvcmFnZQorICAgICAgICB0byB0
aGUgY2FjaGUgc3RvcmFnZSBlbmdpbmUuCisgICAgICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gZG9lcyB0aGlzIGJ5IGhvcHBpbmcgdG8gdGhlIG1haW4gdGhyZWFkIHRvIGNhbGwgdGhl
IGRvY3VtZW50IGNhY2hlIHN0b3JhZ2UgY29ubmVjdGlvbiB0byBkbyB0aGUgYWN0dWFsIGpvYi4K
KyAgICAgICAgRG9pbmcgc29tZSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIHJlZmFjdG9yaW5nIHRv
IHNoYXJlIGNvZGUgd2l0aCBXSzIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhY2hlIHN0b3JhZ2Ug
Y29ubmVjdGlvbi4gCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW5PclJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjp1cGRhdGVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmVSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3Bl
cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3Jvc3NUaHJlYWRSZWNvcmRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b0JhdGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlczo6Y2FjaGVzIGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAxNy0wOC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKCkgdG8gcmV0dXJuIGEgV1RGOjpFeHBlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBkOTY4MTgwODhjODQ2ZGE2M2M0ZWVkYjVjNDY3NGViNTU0YTU0Njk0Li42OTE5MjQzOWMx
MzllZjViNjE1ZjU3ODRhNDE4ZWU5MzIyYTE4YjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
ODk4LDYgKzg5OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL2NhY2hlL0Nh
Y2hlU3RvcmFnZS5jcHAKICAgICBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCiAgICAgTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisgICAgTW9kdWxlcy9j
YWNoZS9Xb3JrZXJDYWNoZXNTdG9yYWdlQ29ubmVjdGlvbi5jcHAKICAgICBNb2R1bGVzL2NhY2hl
L1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAogCiAgICAgTW9kdWxlcy9jcmVkZW50aWFscy9C
YXNpY0NyZWRlbnRpYWwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlUXVlcnlPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0Nh
Y2hlUXVlcnlPcHRpb25zLmgKaW5kZXggNjhmNjdmYWNmMzU2ODcxZWVmNGU1NTQ2OTU4YjcyN2E2
NTkzNjkzYi4uOWFiMmExYTk4NGMyMTViZTU5MzUxOTE2ZmQxZmFhYzY2NGQzNWQ2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaApAQCAt
MzAsMTAgKzMwLDIwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5
T3B0aW9ucyB7CisgICAgQ2FjaGVRdWVyeU9wdGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisK
ICAgICBib29sIGlnbm9yZVNlYXJjaCB7IGZhbHNlIH07CiAgICAgYm9vbCBpZ25vcmVNZXRob2Qg
eyBmYWxzZSB9OwogICAgIGJvb2wgaWdub3JlVmFyeSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIGNh
Y2hlTmFtZTsKIH07CiAKK2lubGluZSBDYWNoZVF1ZXJ5T3B0aW9ucyBDYWNoZVF1ZXJ5T3B0aW9u
czo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25z
OworICAgIG9wdGlvbnMgPSAqdGhpczsKKyAgICBvcHRpb25zLmNhY2hlTmFtZSA9IGNhY2hlTmFt
ZS5pc29sYXRlZENvcHkoKTsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjQ0ZjllNDE3ZDQzY2FlZjNiMjI5MzllMzIz
MmQ5ZmFkYWM1ZDBiMS4uNDRiZWEyNWM2NmRmODQ5MzNiNTQ2NzY4YWIzOTk1NGM4NzM3OGI0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCkBAIC03OCw1ICs3OCwxMTQgQEAgYm9vbCBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpv
cGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgT3BlblJl
bW92ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIgPSArK21fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzQ291bnRlcjsKKyAgICBt
X29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIs
IFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGRvT3BlbihyZXF1ZXN0SWRlbnRpZmllciwgb3Jp
Z2luLCBjYWNoZU5hbWUpOworfQorCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92
ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIE9wZW5SZW1vdmVDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX29wZW5BbmRSZW1vdmVD
YWNoZVBlbmRpbmdSZXF1ZXN0c0NvdW50ZXI7CisgICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5k
aW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisK
KyAgICBkb1JlbW92ZShyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcm
IG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciA9ICsrbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0c0NvdW50ZXI7
CisgICAgbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGRvUmV0cmlldmVDYWNoZXMocmVxdWVzdElk
ZW50aWZpZXIsIG9yaWdpbik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0
cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fcmV0cmll
dmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzQ291bnRlcjsKKyAgICBtX3JldHJpZXZlUmVjb3Jkc1Bl
bmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
KworICAgIGRvUmV0cmlldmVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZp
ZXIpOworfQorCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEJhdGNo
T3BlcmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciA9ICsrbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0c0NvdW50ZXI7Cisg
ICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24ocmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25z
KSk7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24o
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6UmVjb3JkPiYmIHJlY29yZHMsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9iYXRjaERlbGV0
ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0c0NvdW50ZXI7CisgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBl
bmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
KworICAgIGRvQmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRp
ZmllciwgV1RGTW92ZShyZWNvcmRzKSk7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6b3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVycm9yIGVycm9yKQoreworICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy5maW5kKHJlcXVlc3RJZGVudGlm
aWVyKTsKKworICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRp
bmdSZXF1ZXN0cy5lbmQoKSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb3BlbkFuZFJlbW92ZUNh
Y2hlUGVuZGluZ1JlcXVlc3RzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRv
ci0+dmFsdWUoY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7CisgICAgbV9vcGVuQW5kUmVtb3ZlQ2Fj
aGVQZW5kaW5nUmVxdWVzdHMucmVtb3ZlKGl0ZXJhdG9yKTsKK30KKwordm9pZCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjp1cGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZl
Y3RvcjxDYWNoZUluZm8+JiYgY2FjaGVzKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3JldHJp
ZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLmZpbmQocmVxdWVzdElkZW50aWZpZXIpOworCisgICAg
QVNTRVJUKGl0ZXJhdG9yICE9IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMuZW5kKCkp
OworICAgIGlmIChpdGVyYXRvciA9PSBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLmVu
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFsdWUoV1RGTW92ZShjYWNo
ZXMpKTsKKyAgICBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLnJlbW92ZShpdGVyYXRv
cik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzKQoreworICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy5maW5kKHJl
cXVlc3RJZGVudGlmaWVyKTsKKworICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3JldHJpZXZlUmVj
b3Jkc1BlbmRpbmdSZXF1ZXN0cy5lbmQoKSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmV0cmll
dmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
dGVyYXRvci0+dmFsdWUoV1RGTW92ZShyZWNvcmRzKSk7CisgICAgbV9yZXRyaWV2ZVJlY29yZHNQ
ZW5kaW5nUmVxdWVzdHMucmVtb3ZlKGl0ZXJhdG9yKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpCit7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMuZmluZChyZXF1
ZXN0SWRlbnRpZmllcik7CisKKyAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9iYXRjaERlbGV0ZUFu
ZFB1dFBlbmRpbmdSZXF1ZXN0cy5lbmQoKSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fYmF0Y2hE
ZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGl0ZXJhdG9yLT52YWx1ZShXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7CisgICAgbV9iYXRjaERl
bGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5yZW1vdmUoaXRlcmF0b3IpOworfQorCit2b2lkIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiByZWNvcmRzLCBFcnJvciBlcnJvcikKK3sK
KyAgICBhdXRvIGl0ZXJhdG9yID0gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5m
aW5kKHJlcXVlc3RJZGVudGlmaWVyKTsKKworICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2JhdGNo
RGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmVuZCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaXRlcmF0b3ItPnZhbHVlKFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKKyAgICBt
X2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLnJlbW92ZShpdGVyYXRvcik7Cit9CisK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDIzZWQzZTU4OGE4M2Q1
MmY4Y2I2MDRlM2U3NDFmYTVjMjA4ZmI0YjguLjE1NWM1OTA0MTM1OWY5ZDQxOGQyNDM4MTIzMDcy
YmZmNGYyMWYwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmV0
Y2hPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY4LDIw
ICs2OSw1MSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHVzaW5nIE9wZW5SZW1vdmVDYWxsYmFj
ayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCwgRXJyb3IpPjsKLSAgICB1c2luZyBDYWNo
ZU1hcENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxDYWNoZUluZm8+JiYpPjsK
KyAgICB1c2luZyBDYWNoZXNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8Q2Fj
aGVJbmZvPiYmKT47CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKFZlY3RvcjxSZWNvcmQ+JiYpPjsKICAgICB1c2luZyBCYXRjaE9wZXJhdGlvbkNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3Rvcjx1aW50NjRfdD4mJiwgRXJyb3IpPjsKIAotICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJp
bmcmIC8qIGNhY2hlTmFtZSAqLywgT3BlblJlbW92ZUNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2Fs
bGJhY2soMCwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUodWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBj
YWxsYmFjaykgeyBjYWxsYmFjaygwLCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBDYWNo
ZU1hcENhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soeyB9KTsgfQorICAgIHZvaWQgb3Bl
bihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUg
Ki8sIE9wZW5SZW1vdmVDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCAvKiBj
YWNoZUlkZW50aWZpZXIgKi8sIE9wZW5SZW1vdmVDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJp
ZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBDYWNoZXNDYWxsYmFjayYmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgLyogY2FjaGVJZGVu
dGlmaWVyICovLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjayh7IH0pOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hl
SWRlbnRpZmllciAqLywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMm
JiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHsgfSwgRXJy
b3I6Ok5vdEltcGxlbWVudGVkKTsgfQotICAgIHZpcnR1YWwgdm9pZCBiYXRjaFB1dE9wZXJhdGlv
bih1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxSZWNvcmQ+JiYsIEJhdGNo
T3BlcmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjayh7IH0sIEVycm9yOjpOb3RJ
bXBsZW1lbnRlZCk7IH0KKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCAvKiBjYWNo
ZUlkZW50aWZpZXIgKi8sIFJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIGJhdGNoRGVsZXRl
T3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmKTsK
KyAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAq
LywgVmVjdG9yPFJlY29yZD4mJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmKTsKIAogcHJvdGVj
dGVkOgogICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSA9ICBkZWZhdWx0OworCisgICAgdm9p
ZCBvcGVuQ29tcGxldGVkKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgRXJyb3IgZXJyb3IpIHsgb3Blbk9yUmVtb3ZlQ29tcGxldGVkKGlkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllciwgZXJyb3IpOyB9CisgICAgdm9pZCByZW1vdmVDb21wbGV0ZWQodWludDY0
X3QgaWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgeyBv
cGVuT3JSZW1vdmVDb21wbGV0ZWQoaWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgVmVjdG9yPENhY2hlSW5mbz4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxSZWNv
cmQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUmVjb3Jkc0NvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBFcnJvcik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYsIEVycm9yKTsKKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIC8qIG9yaWdpbiAqLywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8pIHsgb3Bl
bkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgMCwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0
SWRlbnRpZmllciwgMCwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIC8qIG9yaWdpbiAqLykgeyB1cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHVwZGF0ZVJlY29y
ZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9CYXRjaERl
bGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2Fj
aGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmKSB7IHJlbW92ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHsgfSwgRXJy
b3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoUHV0T3BlcmF0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZp
ZXIgKi8sIFZlY3RvcjxSZWNvcmQ+JiYpIHsgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRl
bnRpZmllciwgeyB9LCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIG9wZW5PclJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvcik7CisKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBPcGVuUmVtb3ZlQ2FsbGJhY2s+IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVl
c3RzOworICAgIHVpbnQ2NF90IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzQ291
bnRlciB7IDAgfTsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIENhY2hlc0NhbGxiYWNrPiBtX3Jl
dHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzOworICAgIHVpbnQ2NF90IG1fcmV0cmlldmVDYWNo
ZXNQZW5kaW5nUmVxdWVzdHNDb3VudGVyIHsgMCB9OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVjb3Jkc0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0czsKKyAgICB1
aW50NjRfdCBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0c0NvdW50ZXIgeyAwIH07CisK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrPiBtX2JhdGNoRGVs
ZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzOworICAgIHVpbnQ2NF90IG1fYmF0Y2hEZWxldGVBbmRQ
dXRQZW5kaW5nUmVxdWVzdHNDb3VudGVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EwYzlmOWYyNGVlNzAw
ZDJiNDc3MjIxYjQyNzkxYzIwZTdmZjAyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTAs
MCArMSwyMTkgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDYWNoZVF1ZXJ5
T3B0aW9ucy5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKKyNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlclJ1
bkxvb3AuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZWNvcmREYXRhIHsKKyAgICB1aW50NjRfdCBpZGVudGlm
aWVyOworCisgICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCByZXF1ZXN0SGVhZGVyc0d1YXJkOworICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworCisgICAgRmV0Y2hPcHRpb25zIG9wdGlvbnM7Cisg
ICAgU3RyaW5nIHJlZmVycmVyOworCisgICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCByZXNwb25zZUhl
YWRlcnNHdWFyZDsKKyAgICBSZXNvdXJjZVJlc3BvbnNlOjpDcm9zc1RocmVhZERhdGEgcmVzcG9u
c2U7Cit9OworCitzdGF0aWMgQ3Jvc3NUaHJlYWRSZWNvcmREYXRhIHRvQ3Jvc3NUaHJlYWRSZWNv
cmREYXRhKGNvbnN0IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCYgcmVjb3JkKQorewor
ICAgIHJldHVybiBDcm9zc1RocmVhZFJlY29yZERhdGEgeworICAgICAgICByZWNvcmQuaWRlbnRp
ZmllciwKKyAgICAgICAgcmVjb3JkLnJlcXVlc3RIZWFkZXJzR3VhcmQsCisgICAgICAgIHJlY29y
ZC5yZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICByZWNvcmQub3B0aW9ucy5pc29sYXRl
ZENvcHkoKSwKKyAgICAgICAgcmVjb3JkLnJlZmVycmVyLmlzb2xhdGVkQ29weSgpLAorICAgICAg
ICByZWNvcmQucmVzcG9uc2VIZWFkZXJzR3VhcmQsCisgICAgICAgIHJlY29yZC5yZXNwb25zZS5j
cm9zc1RocmVhZERhdGEoKQorICAgIH07Cit9CisKK3N0YXRpYyBDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpSZWNvcmQgZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YShDcm9zc1RocmVhZFJlY29yZERh
dGEmJiBkYXRhKQoreworICAgIHJldHVybiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQg
eworICAgICAgICBkYXRhLmlkZW50aWZpZXIsCisgICAgICAgIGRhdGEucmVxdWVzdEhlYWRlcnNH
dWFyZCwKKyAgICAgICAgV1RGTW92ZShkYXRhLnJlcXVlc3QpLAorICAgICAgICBXVEZNb3ZlKGRh
dGEub3B0aW9ucyksCisgICAgICAgIFdURk1vdmUoZGF0YS5yZWZlcnJlciksCisgICAgICAgIGRh
dGEucmVzcG9uc2VIZWFkZXJzR3VhcmQsCisgICAgICAgIFJlc291cmNlUmVzcG9uc2U6OmZyb21D
cm9zc1RocmVhZERhdGEoV1RGTW92ZShkYXRhLnJlc3BvbnNlKSkKKyAgICB9OworfQorCitSZWY8
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6Y3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKK3sKKyAgICBhdXRvIGNvbm5lY3Rp
b24gPSBhZG9wdFJlZigqbmV3IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oc2NvcGUpKTsK
KyAgICBjb25uZWN0aW9uLT5tX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3Byb3RlY3RlZENvbm5l
Y3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24uZ2V0KCkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwor
CisgICAgICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOworICAgICAgICBwcm90ZWN0ZWRDb25u
ZWN0aW9uLT5tX21haW5UaHJlYWRDb25uZWN0aW9uID0gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0
b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oZG9jdW1lbnQucGFn
ZSgpLT5zZXNzaW9uSUQoKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvbm5lY3Rpb247Cit9CisK
K1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24oV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQorICAgIDogbV9zY29wZShzY29wZSkKKyAgICAs
IG1fcHJveHkobV9zY29wZS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpKQorICAgICwgbV90
YXNrTW9kZShXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpLmlzb2xhdGVkQ29weSgpKQorewor
fQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2Fj
aGVOYW1lKQoreworICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3JpZ2lu
Lmlzb2xhdGVkQ29weSgpLCBjYWNoZU5hbWUgPSBjYWNoZU5hbWUuaXNvbGF0ZWRDb3B5KCldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOworCisgICAg
ICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZp
ZXJdKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3IgZXJyb3IpIG11dGFibGUgeworICAg
ICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlz
LCBlcnJvciwgY2FjaGVJZGVudGlmaWVyLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICAgICAgICAgIG9wZW5Db21wbGV0
ZWQocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICAg
ICAgfSwgbV90YXNrTW9kZSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit7CisgICAgbV9wcm94eS5wb3N0VGFza1Rv
TG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVu
dGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxl
IHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbWFp
blRocmVhZENvbm5lY3Rpb24pOworCisgICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJl
bW92ZShjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0odWludDY0X3Qg
cmVtb3ZlZENhY2hlSWRlbnRpZmllciwgRXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkQ2FjaGVJZGVudGlmaWVyLCByZW1vdmVkQ2FjaGVJZGVu
dGlmaWVyID09IGNhY2hlSWRlbnRpZmllcik7CisgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJv
cl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUo
KSk7CisgICAgICAgICAgICAgICAgcmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBj
YWNoZUlkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgICAgIH0sIG1fdGFza01vZGUpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Ojpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbikKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9y
aWdpbi5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhy
ZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmV0cmll
dmVDYWNoZXMob3JpZ2luLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBWZWN0b3I8Q2FjaGVJbmZvPiYgY2FjaGVz
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFZlY3RvcjxDYWNoZUluZm8+IGlzb2xhdGVkQ2FjaGVz
OworICAgICAgICAgICAgaXNvbGF0ZWRDYWNoZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWNo
ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2FjaGUgOiBjYWNoZXMp
CisgICAgICAgICAgICAgICAgaXNvbGF0ZWRDYWNoZXMudW5jaGVja2VkQXBwZW5kKENhY2hlSW5m
byB7IGNhY2hlLmlkZW50aWZpZXIsIGNhY2hlLm5hbWUuaXNvbGF0ZWRDb3B5KCkgfSk7CisKKyAg
ICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNhY2hlcyA9IFdURk1v
dmUoaXNvbGF0ZWRDYWNoZXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICAgICAg
dXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhY2hlcykpOworICAgICAg
ICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit7CisgICAgbV9wcm94
eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
QVNTRVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOworCisgICAgICAgIG1fbWFpblRocmVhZENv
bm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFZlY3Rv
cjxSZWNvcmQ+JiYgcmVjb3JkcykgbXV0YWJsZSB7CisKKyAgICAgICAgICAgIFZlY3RvcjxDcm9z
c1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhOworICAgICAgICAgICAgcmVjb3Jkc0RhdGEu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7CisgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCisgICAgICAgICAgICAgICAgcmVjb3Jkc0Rh
dGEudW5jaGVja2VkQXBwZW5kKHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKHJlY29yZCkpOworCisg
ICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzRGF0YSA9
IFdURk1vdmUocmVjb3Jkc0RhdGEpLCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICAg
ICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKKyAgICAgICAgICAgICAgICByZWNvcmRzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkc0RhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBm
b3IgKGF1dG8mIHJlY29yZERhdGEgOiByZWNvcmRzRGF0YSkKKyAgICAgICAgICAgICAgICAgICAg
cmVjb3Jkcy51bmNoZWNrZWRBcHBlbmQoZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YShXVEZNb3Zl
KHJlY29yZERhdGEpKSk7CisKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRzKHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpKTsKKyAgICAgICAgICAgIH0sIG1fdGFza01vZGUp
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zKQoreworICAgIG1fcHJveHkucG9zdFRhc2tU
b0xvYWRlcihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRl
bnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHko
KSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
QVNTRVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOworCisgICAgICAgIG1fbWFpblRocmVhZENv
bm5lY3Rpb24tPmJhdGNoRGVsZXRlT3BlcmF0aW9uKGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCwg
V1RGTW92ZShvcHRpb25zKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oVmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHMsIEVy
cm9yIGVycm9yKSBtdXRhYmxlIHsKKworICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGVycm9yLCByZXF1ZXN0SWRl
bnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSk7CisgICAgICAgICAgICAgICAgcmVtb3ZlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0
SWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgZXJyb3IpOworICAgICAgICAgICAgfSwgbV90
YXNrTW9kZSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRz
KQoreworICAgIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhOworICAg
IHJlY29yZHNEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVjb3Jkcy5zaXplKCkpOworICAg
IGZvciAoY29uc3QgYXV0byYgcmVjb3JkIDogcmVjb3JkcykKKyAgICAgICAgcmVjb3Jkc0RhdGEu
dW5jaGVja2VkQXBwZW5kKHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKHJlY29yZCkpOworCisgICAg
bV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlY29yZHNEYXRhID0g
V1RGTW92ZShyZWNvcmRzRGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsK
KyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbWFpblRo
cmVhZENvbm5lY3Rpb24pOworCisgICAgICAgIFZlY3RvcjxSZWNvcmQ+IHJlY29yZHM7CisgICAg
ICAgIHJlY29yZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzRGF0YS5zaXplKCkpOwor
ICAgICAgICBmb3IgKGF1dG8mIHJlY29yZERhdGEgOiByZWNvcmRzRGF0YSkKKyAgICAgICAgICAg
IHJlY29yZHMudW5jaGVja2VkQXBwZW5kKGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEoV1RGTW92
ZShyZWNvcmREYXRhKSkpOworCisgICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPmJhdGNo
UHV0T3BlcmF0aW9uKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0o
VmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHMsIEVycm9yIGVycm9yKSBtdXRhYmxlIHsKKworICAg
ICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVjb3JkcyA9IFdURk1v
dmUocmVjb3JkcyksIGVycm9yLCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICAgICAg
cHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwg
ZXJyb3IpOworICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAgICAgIH0pOworICAgIH0p
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ4M2I5Y2EwZDI0NDkwNjVhY2Y1YWNhZDgxZGI3MGM2NmVlMGM1OWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU5IEBACisKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtlckxvYWRlclBy
b3h5OworCitjbGFzcyBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIDogcHVibGljIENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJik7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihXb3JrZXJHbG9iYWxT
Y29wZSYpOworCisgICAgLy8gV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbgorICAgIHZv
aWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9y
aWdpbiAqLywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8pIGZpbmFsOworICAgIHZvaWQg
ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRl
bnRpZmllciAqLykgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLykgZmluYWw7CisKKyAg
ICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJh
dGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0
aW9ucyYmKSBmaW5hbDsKKyAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4m
JikgZmluYWw7CisKKyAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV9zY29wZTsKKyAgICBXb3JrZXJM
b2FkZXJQcm94eSYgbV9wcm94eTsKKyAgICBTdHJpbmcgbV90YXNrTW9kZTsKKworICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX21haW5UaHJlYWRDb25uZWN0aW9uOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAppbmRleCBjNTM5Y2RlNjNiNGI0
ZDI3NzFjNjljZmY3ZDU5YjdmMTI1ODViODE5Li5jOGU0ZmRjMWY1OTYzMGNhNGZkNWU1YmJhMzU0
MWNjNDlhMjhjNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dv
cmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcApAQCAtNTUsNyArNTUsNyBAQCBDYWNoZVN0
b3JhZ2UqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpjYWNoZXMoV29ya2VyR2xvYmFsU2NvcGUm
IHNjb3BlKQogQ2FjaGVTdG9yYWdlKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6Y2FjaGVzKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fY2FjaGVzKQotICAgICAgICBtX2NhY2hlcyA9IENhY2hlU3Rv
cmFnZTo6Y3JlYXRlKG1fc2NvcGUsIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZSgpKTsK
KyAgICAgICAgbV9jYWNoZXMgPSBDYWNoZVN0b3JhZ2U6OmNyZWF0ZShtX3Njb3BlLCBtX3Njb3Bl
LmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSk7CiAgICAgcmV0dXJuIG1fY2FjaGVzLmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNDliYzVkMDRiMjk5ZmNmNTgxN2M1ZTFiNmNlMzQ5ZmU5ODM4ODVmMi4uNjk1MmJh
NzQ5OWUxODcwOWQyMTY4YzM0ODk3OTM5NmQ4MDZkNzNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc3Miw2ICsxNzcyLDgg
QEAKIAkJNDFBMUIwMUQxRTU0MjM5RTAwN0YzNzY5IC8qIEpTRE9NR3VhcmRlZE9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUExQjAxQjFF
NTQyMzk2MDA3RjM3NjkgLyogSlNET01HdWFyZGVkT2JqZWN0LmNwcCAqLzsgfTsKIAkJNDFBM0Q1
OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4QzEwMUMxNTJEMDAz
MTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEYxMDFD
MTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8q
IERlZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9OworCQk0MUE3RDM1MjFGNDM4RDE2MDA4OTg4
REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUE3RDM0RjFGNDM4RDEwMDA4OTg4REUgLyog
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgKi87IH07CisJCTQxQTdEMzUzMUY0MzhE
MTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUE3RDM1MDFGNDM4RDEwMDA4OTg4
REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oICovOyB9OwogCQk0MUFCRTY3QjFE
MDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUFCRTY3QTFEMDU4MEQ1MDA2
RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQxQUJFNjdD
MUQwNTgwRTAwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBQkU2NzkxRDA1ODBE
NTAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi87IH07CiAJCTQx
QUQ3NTNBMUNFRjZCRDEwMEEzMTQ4NiAvKiBGZXRjaE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQUQ3NTM5MUNFRjZCQ0UwMEEzMTQ4NiAv
KiBGZXRjaE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtOTQ0NCw2ICs5NDQ2LDggQEAKIAkJNDFBNDhBOUQxRTgzMTJFQjAwRDJBQzJE
IC8qIFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUE0OEFBNzFFODRBRUVDMDBEMkFDMkQgLyogUlRDUnRwUGFyYW1ldGVycy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxQTQ4QUE4MUU4NEFGMUQwMEQyQUMyRCAvKiBSVENSdHBQYXJhbWV0
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFBhcmFtZXRlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFBN0QzNEYxRjQzOEQxMDAwODk4OERF
IC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQTdEMzUwMUY0MzhEMTAwMDg5ODhERSAvKiBXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFBQkU2NzkxRDA1ODBENTAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUFCRTY3QTFEMDU4MEQ1MDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUFENzUzOTFDRUY2QkNFMDBB
MzE0ODYgLyogRmV0Y2hPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZldGNoT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI0OTAsOCAr
MTI0OTQsOCBAQAogCQk5QjA5OEJERTFGM0Q2NzNEMDAyREQ1NjIgLyogSlNEYXRhVHJhbnNmZXJJ
dGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVySXRl
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjA5OEJERjFGM0Q2NzNEMDAyREQ1
NjIgLyogSlNEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUIwOThCRTAxRjNENjczRDAwMkRENTYyIC8qIEpTRGF0YVRyYW5zZmVy
SXRlbUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRhVHJhbnNm
ZXJJdGVtTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjA5OEJFNjFGM0Q2
QUY2MDAyREQ1NjIgLyogSlNTdHJpbmdDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBKU1N0cmluZ0NhbGxiYWNrLmNwcDsgcGF0aCA9IEpTU3RyaW5nQ2Fs
bGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjA5OEJFNzFGM0Q2QUY2
MDAyREQ1NjIgLyogSlNTdHJpbmdDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBKU1N0cmluZ0NhbGxiYWNrLmg7IHBhdGggPSBKU1N0cmluZ0NhbGxiYWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMDk4QkU2MUYzRDZBRjYwMDJERDU2MiAvKiBK
U1N0cmluZ0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU3RyaW5nQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjA5
OEJFNzFGM0Q2QUY2MDAyREQ1NjIgLyogSlNTdHJpbmdDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCMEZFODczMUQ5RTAyREYwMDRBOEFDQiAvKiBEb2N1bWVudE9yU2hhZG93
Um9vdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjEzMjU3QjFGM0QyQUJBMDBEQUFCNjkg
LyogRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjE5QjY3RTFCOTY0RTUyMDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzY2OSw2ICsxNzY3Myw4IEBACiAJCQkJNDFGQjI3OEUxRjM0QzI4MjAwNzk1NDg3
IC8qIERPTVdpbmRvd0NhY2hlcy5jcHAgKi8sCiAJCQkJNDFGQjI3OEMxRjM0QzI4MjAwNzk1NDg3
IC8qIERPTVdpbmRvd0NhY2hlcy5oICovLAogCQkJCTQxMzgwQzJCMUYzNDNFMkYwMDE1NUZEQSAv
KiBET01XaW5kb3dDYWNoZXMuaWRsICovLAorCQkJCTQxQTdEMzRGMUY0MzhEMTAwMDg5ODhERSAv
KiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0MUE3RDM1MDFGNDM4
RDEwMDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oICovLAogCQkJCTQx
RkIyNzhGMUYzNEMyODIwMDc5NTQ4NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgKi8s
CiAJCQkJNDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVz
LmggKi8sCiAJCQkJNDEzODBDMkExRjM0M0UyRjAwMTU1RkRBIC8qIFdvcmtlckdsb2JhbFNjb3Bl
Q2FjaGVzLmlkbCAqLywKQEAgLTI5NDczLDIzICsyOTQ3OSwxNSBAQAogCQkJCTUxNkY3RjZEMUMz
MUUzOUEwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDkzQUVFMzE5REY1NjQxMDAyQTg2QzMgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1NUQxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODJDMjNGMUYzMTNBMDkwMDU5QkE3QyAvKiBT
ZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU1RjFGM0VCQzgzMDBDNzQ5
NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4MkMy
NDExRjMxM0EwOTAwNTlCQTdDIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxRjE3NTYxMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODJDMjQzMUYzMTNBMDkwMDU5QkE3QyAvKiBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTYzMUYz
RUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VySm9iLmggaW4gSGVhZGVycyAqLywKLQkJCQk1
MTFDQTY3RTFGMzkwNUE2MDAxOUUwNzQgLyogU2VydmljZVdvcmtlckpvYi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjQxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJKb2JDbGll
bnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMUNBNjgwMUYzOTMzMUYwMDE5RTA3NCAvKiBTZXJ2
aWNlV29ya2VySm9iQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTFDQTY3QTFGMzkwNEIx
MDAxOUUwNzQgLyogU2VydmljZVdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUYxNzU2NjFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUYxNzU2ODFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4MkMyNDUxRjMxM0EwOTAwNTlCQTdD
IC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3
NTY5MUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1NkIxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU2
QzFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MUYxNzRGRjFGMzU4OTk3MDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclVw
ZGF0ZVZpYUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTZCMkNFMTE4QjcxMDE2MDBGRUNG
QUEgLyogU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxMDA5OUU2NDkyMDA1
NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4
REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVy
cyAqLywKQEAgLTMwMjY0LDYgKzMwMjYyLDcgQEAKIAkJCQlBMTQ4MzJDNjE4N0Y2NjhGMDBEQTYz
QTYgLyogV0tWaWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5OTE5OTcxMjAwRERG
NDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY0
NjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUE3RDM1
MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTUyQTY4NjIxREJCMEY2MzAwODMzNzNGIC8qIFdvcmtlckNvbnNvbGVB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1NjM5RDExQzZGMDlFMzAwODA2RDhFIC8qIFdv
cmtlckNvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MkE2ODY2MURCRDRCNUQw
MDgzMzczRiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzMzM4
LDE5ICszMzMzNywxMiBAQAogCQkJCTUxNkY3RjZFMUMzMUUzOUMwMEYxMTFEQyAvKiBTZXJ2ZXJP
cGVuREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTNBRUU0MTlERjU2NDEwMDJB
ODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFGMTc1NUMxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTE4MkMyM0UxRjMxM0EwOTAwNTlCQTdDIC8qIFNlcnZpY2VXb3JrZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMTc1NUUxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4MkMyNDAxRjMxM0EwOTAwNTlC
QTdDIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4
MkMyNDIxRjMxM0EwOTAwNTlCQTdDIC8qIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUYxNzU2MDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjE3NTYyMUYzRUJDODMwMEM3
NDk1MCAvKiBTZXJ2aWNlV29ya2VySm9iLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxMUNBNjdE
MUYzOTA1QTYwMDE5RTA3NCAvKiBTZXJ2aWNlV29ya2VySm9iLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTUxMUNBNjc5MUYzOTA0QjEwMDE5RTA3NCAvKiBTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMTc1NjUxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYxNzU2NzFGM0VCQzgzMDBD
NzQ5NTAgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MTgyQzI0NDFGMzEzQTA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYxNzU2QTFGM0VCQzgzMDBDNzQ5NTAgLyogU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEx
Q0E2ODMxRjNBM0NEOTAwMTlFMDc0IC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25QYXJhbWV0
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUY3RDQ0MUVCMUMzOTEwMEU0N0I4MyAvKiBT
ZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMEYwOTlFNjQ5MjAwNTZFNTgx
IC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI4REJE
QjRCMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzM5ODQsNiArMzM5NzYsNyBAQAogCQkJCUExNDgzMkM1MTg3RjY2ODMwMERBNjNB
NiAvKiBXS1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzk5MTk5NjEyMDBEREY0MDBFQTA0
MUMgLyogV09GRkZpbGVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NDUwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUE3RDM1MjFG
NDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNTJBNjg2MTFEQkIwRjYzMDA4MzM3M0YgLyogV29ya2VyQ29uc29sZUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NTYzOUQyMUM2RjA5RTcwMDgwNkQ4RSAvKiBX
b3JrZXJDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MkE2ODY1MURCRDRC
NUQwMDgzMzczRiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCmluZGV4IDdlMWE4MzczOGQyMzk3ZjI0ZDcyNGNk
MDEyNjY2N2ZhNjA0ZTE4YjguLjk5ODEzNDNjZDc2ZmY1YzQxODJkMTQwNGVmYmZhMTgzMWY4Mjgw
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKQEAgLTM0LDYgKzM0LDggQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEZldGNoT3B0aW9ucyB7CisgICAgRmV0Y2hP
cHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCiAgICAgZW51bSBjbGFzcyBUeXBlIHsgRW1w
dHlTdHJpbmcsIEF1ZGlvLCBGb250LCBJbWFnZSwgU2NyaXB0LCBTdHlsZSwgVHJhY2ssIFZpZGVv
IH07CiAgICAgVHlwZSB0eXBlIHsgVHlwZTo6RW1wdHlTdHJpbmcgfTsKIApAQCAtNTksNCArNjEs
MTEgQEAgc3RydWN0IEZldGNoT3B0aW9ucyB7CiAgICAgYm9vbCBrZWVwQWxpdmUgeyBmYWxzZSB9
OwogfTsKIAoraW5saW5lIEZldGNoT3B0aW9ucyBGZXRjaE9wdGlvbnM6Omlzb2xhdGVkQ29weSgp
IGNvbnN0Cit7CisgICAgRmV0Y2hPcHRpb25zIG9wdGlvbnMgPSAqdGhpczsKKyAgICBvcHRpb25z
LmludGVncml0eSA9IGludGVncml0eS5pc29sYXRlZENvcHkoKTsKKyAgICByZXR1cm4gb3B0aW9u
czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxODBmODhlNjk1ODdlMGEwNDNmYTY2NTBiMDNh
NjIwMTRkYjk5NTJhLi5kOWFkNTlhMjVmZWIwMzk5MjFmZDI0YzE5MzIzMWIyY2U0ZjY5YTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzg2
LDQgKzM4NiwxMSBAQCBQZXJmb3JtYW5jZSYgV29ya2VyR2xvYmFsU2NvcGU6OnBlcmZvcm1hbmNl
KCkgY29uc3QKICAgICByZXR1cm4gKm1fcGVyZm9ybWFuY2U7CiB9CiAKK0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK3sK
KyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uID0gV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKCp0aGlz
KTsKKyAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CmluZGV4IGM1YjBkNTJhYjRjYWNkNjFhMmI5OTQzNGY3NzgzYWVlZTU4MjIzOTMuLjA0OTFkN2M0
ZmRkMDU2N2UxZjI3YTIxYjQ4ZWU2Zjc1NTY3MjhmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTI3LDExICsyNywxMyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1
ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaD4KQEAgLTY2LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcEluZGV4
ZWREYXRhYmFzZSgpOwogI2VuZGlmCiAKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uJiBjYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3Jp
cHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJTY3JpcHQoKSB7
IG1fc2NyaXB0ID0gbnVsbHB0cjsgfQogCkBAIC0xODMsNiArMTg3LDcgQEAgcHJpdmF0ZToKICAg
ICBtdXRhYmxlIFJlZlB0cjxDcnlwdG8+IG1fY3J5cHRvOwogCiAgICAgU2Vzc2lvbklEIG1fc2Vz
c2lvbklEOworICAgIFJlZlB0cjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hl
U3RvcmFnZUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318197</attachid>
            <date>2017-08-15 16:39:26 -0700</date>
            <delta_ts>2017-08-16 13:52:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175599-20170815163926.patch</filename>
            <type>text/plain</type>
            <size>42057</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRjMTg3MjQ0MDEyNGIy
OWM1ZTU4ZjdhYjY2MGEzYjFiMzljN2ZjZi4uNTFkMDQ2MWZiNDhlMGMyYjMwOTg2N2FlNDUwZDEw
MTI4NTE0ZWI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA4LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBJbXBs
ZW1lbnQgV29ya2VyIGNvbm5lY3Rpb24gdG8gdGhlIENhY2hlIHN0b3JhZ2UgZW5naW5lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgIEFkZGluZyBhIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gdG8gY29ubmVjdCB3b3JrZXJzIENhY2hlL0NhY2hlU3RvcmFnZQorICAgICAgICB0byB0
aGUgY2FjaGUgc3RvcmFnZSBlbmdpbmUuCisgICAgICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gZG9lcyB0aGlzIGJ5IGhvcHBpbmcgdG8gdGhlIG1haW4gdGhyZWFkIHRvIGNhbGwgdGhl
IGRvY3VtZW50IGNhY2hlIHN0b3JhZ2UgY29ubmVjdGlvbiB0byBkbyB0aGUgYWN0dWFsIGpvYi4K
KyAgICAgICAgRG9pbmcgc29tZSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIHJlZmFjdG9yaW5nIHRv
IHNoYXJlIGNvZGUgd2l0aCBXSzIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhY2hlIHN0b3JhZ2Ug
Y29ubmVjdGlvbi4gCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW5PclJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjp1cGRhdGVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmVSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3Bl
cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3Jvc3NUaHJlYWRSZWNvcmRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b0JhdGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlczo6Y2FjaGVzIGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAxNy0wOC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKCkgdG8gcmV0dXJuIGEgV1RGOjpFeHBlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBkOTY4MTgwODhjODQ2ZGE2M2M0ZWVkYjVjNDY3NGViNTU0YTU0Njk0Li43ZTgyMWE0Yjdl
YTMyMDUwZjJkOTdkYjY1ZTg0OWE1MWEzZmRkODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
ODk4LDYgKzg5OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL2NhY2hlL0Nh
Y2hlU3RvcmFnZS5jcHAKICAgICBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCiAgICAgTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisgICAgTW9kdWxlcy9j
YWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAogICAgIE1vZHVsZXMvY2FjaGUv
V29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCiAKICAgICBNb2R1bGVzL2NyZWRlbnRpYWxzL0Jh
c2ljQ3JlZGVudGlhbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVRdWVyeU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVRdWVyeU9wdGlvbnMuaAppbmRleCA2OGY2N2ZhY2YzNTY4NzFlZWY0ZTU1NDY5NThiNzI3YTY1
OTM2OTNiLi45YWIyYTFhOTg0YzIxNWJlNTkzNTE5MTZmZDFmYWFjNjY0ZDM1ZDYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oCkBAIC0z
MCwxMCArMzAsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENhY2hlUXVlcnlP
cHRpb25zIHsKKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBpc29sYXRlZENvcHkoKSBjb25zdDsKKwog
ICAgIGJvb2wgaWdub3JlU2VhcmNoIHsgZmFsc2UgfTsKICAgICBib29sIGlnbm9yZU1ldGhvZCB7
IGZhbHNlIH07CiAgICAgYm9vbCBpZ25vcmVWYXJ5IHsgZmFsc2UgfTsKICAgICBTdHJpbmcgY2Fj
aGVOYW1lOwogfTsKIAoraW5saW5lIENhY2hlUXVlcnlPcHRpb25zIENhY2hlUXVlcnlPcHRpb25z
Ojppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIENhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnM7
CisgICAgb3B0aW9ucyA9ICp0aGlzOworICAgIG9wdGlvbnMuY2FjaGVOYW1lID0gY2FjaGVOYW1l
Lmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBvcHRpb25zOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBmNDRmOWU0MTdkNDNjYWVmM2IyMjkzOWUzMjMy
ZDlmYWRhYzVkMGIxLi40NGJlYTI1YzY2ZGY4NDkzM2I1NDY3NjhhYjM5OTU0Yzg3Mzc4YjQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAKQEAgLTc4LDUgKzc4LDExNCBAQCBib29sIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBPcGVuUmVt
b3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciA9ICsrbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHNDb3VudGVyOworICAgIG1f
b3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwg
V1RGTW92ZShjYWxsYmFjaykpOworCisgICAgZG9PcGVuKHJlcXVlc3RJZGVudGlmaWVyLCBvcmln
aW4sIGNhY2hlTmFtZSk7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3Zl
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgT3BlblJlbW92ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fb3BlbkFuZFJlbW92ZUNh
Y2hlUGVuZGluZ1JlcXVlc3RzQ291bnRlcjsKKyAgICBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRp
bmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKwor
ICAgIGRvUmVtb3ZlKHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpOworfQorCit2
b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyID0gKyttX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzQ291bnRlcjsK
KyAgICBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgZG9SZXRyaWV2ZUNhY2hlcyhyZXF1ZXN0SWRl
bnRpZmllciwgb3JpZ2luKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRy
aWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9yZXRyaWV2
ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHNDb3VudGVyOworICAgIG1fcmV0cmlldmVSZWNvcmRzUGVu
ZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwor
CisgICAgZG9SZXRyaWV2ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVyYXRp
b24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgQmF0Y2hP
cGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyID0gKyttX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzQ291bnRlcjsKKyAg
ICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbihyZXF1
ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMp
KTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbih1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcywgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2JhdGNoRGVsZXRl
QW5kUHV0UGVuZGluZ1JlcXVlc3RzQ291bnRlcjsKKyAgICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVu
ZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwor
CisgICAgZG9CYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlm
aWVyLCBXVEZNb3ZlKHJlY29yZHMpKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpvcGVuT3JSZW1vdmVDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3IgZXJyb3IpCit7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLmZpbmQocmVxdWVzdElkZW50aWZp
ZXIpOworCisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGlu
Z1JlcXVlc3RzLmVuZCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vcGVuQW5kUmVtb3ZlQ2Fj
aGVQZW5kaW5nUmVxdWVzdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9y
LT52YWx1ZShjYWNoZUlkZW50aWZpZXIsIGVycm9yKTsKKyAgICBtX29wZW5BbmRSZW1vdmVDYWNo
ZVBlbmRpbmdSZXF1ZXN0cy5yZW1vdmUoaXRlcmF0b3IpOworfQorCit2b2lkIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OnVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVj
dG9yPENhY2hlSW5mbz4mJiBjYWNoZXMpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmV0cmll
dmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMuZmluZChyZXF1ZXN0SWRlbnRpZmllcik7CisKKyAgICBB
U1NFUlQoaXRlcmF0b3IgIT0gbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy5lbmQoKSk7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0ZXJhdG9yLT52YWx1ZShXVEZNb3ZlKGNhY2hl
cykpOworICAgIG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMucmVtb3ZlKGl0ZXJhdG9y
KTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMpCit7CisgICAg
YXV0byBpdGVyYXRvciA9IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLmZpbmQocmVx
dWVzdElkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fcmV0cmlldmVSZWNv
cmRzUGVuZGluZ1JlcXVlc3RzLmVuZCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXRyaWV2
ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0
ZXJhdG9yLT52YWx1ZShXVEZNb3ZlKHJlY29yZHMpKTsKKyAgICBtX3JldHJpZXZlUmVjb3Jkc1Bl
bmRpbmdSZXF1ZXN0cy5yZW1vdmUoaXRlcmF0b3IpOworfQorCit2b2lkIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OnJlbW92ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiByZWNvcmRzLCBFcnJvciBlcnJvcikKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5maW5kKHJlcXVl
c3RJZGVudGlmaWVyKTsKKworICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2JhdGNoRGVsZXRlQW5k
UHV0UGVuZGluZ1JlcXVlc3RzLmVuZCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9iYXRjaERl
bGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aXRlcmF0b3ItPnZhbHVlKFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKKyAgICBtX2JhdGNoRGVs
ZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK3ZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHMsIEVycm9yIGVycm9yKQorewor
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmZp
bmQocmVxdWVzdElkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fYmF0Y2hE
ZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMuZW5kKCkpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmVuZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpdGVyYXRvci0+dmFsdWUoV1RGTW92ZShyZWNvcmRzKSwgZXJyb3IpOworICAgIG1f
YmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMucmVtb3ZlKGl0ZXJhdG9yKTsKK30KKwor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggMjNlZDNlNTg4YTgzZDUy
ZjhjYjYwNGUzZTc0MWZhNWMyMDhmYjRiOC4uMTU1YzU5MDQxMzU5ZjlkNDE4ZDI0MzgxMjMwNzJi
ZmY0ZjIxZjA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGZXRj
aE9wdGlvbnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjgsMjAg
KzY5LDUxIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdXNpbmcgT3BlblJlbW92ZUNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBFcnJvcik+OwotICAgIHVzaW5nIENhY2hl
TWFwQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPENhY2hlSW5mbz4mJik+Owor
ICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxDYWNo
ZUluZm8+JiYpPjsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoVmVjdG9yPFJlY29yZD4mJik+OwogICAgIHVzaW5nIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPHVpbnQ2NF90PiYmLCBFcnJvcik+OwogCi0gICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmlu
ZyYgLyogY2FjaGVOYW1lICovLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxs
YmFjaygwLCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIE9wZW5SZW1vdmVDYWxsYmFjayYmIGNh
bGxiYWNrKSB7IGNhbGxiYWNrKDAsIEVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIENhY2hl
TWFwQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjayh7IH0pOyB9CisgICAgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAq
LywgT3BlblJlbW92ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IC8qIGNh
Y2hlSWRlbnRpZmllciAqLywgT3BlblJlbW92ZUNhbGxiYWNrJiYpOworICAgIHZvaWQgcmV0cmll
dmVDYWNoZXMoY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIENhY2hlc0NhbGxiYWNrJiYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCAvKiBjYWNoZUlkZW50
aWZpZXIgKi8sIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHsgfSk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgLyogY2FjaGVJ
ZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
LCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soeyB9LCBFcnJv
cjo6Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGJhdGNoUHV0T3BlcmF0aW9u
KHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPFJlY29yZD4mJiwgQmF0Y2hP
cGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHsgfSwgRXJyb3I6Ok5vdElt
cGxlbWVudGVkKTsgfQorICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IC8qIGNhY2hl
SWRlbnRpZmllciAqLywgUmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHZvaWQgYmF0Y2hEZWxldGVP
cGVyYXRpb24odWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrJiYpOwor
ICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICov
LCBWZWN0b3I8UmVjb3JkPiYmLCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrJiYpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpID0gIGRlZmF1bHQ7CisKKyAgICB2b2lk
IG9wZW5Db21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBFcnJvciBlcnJvcikgeyBvcGVuT3JSZW1vdmVDb21wbGV0ZWQoaWRlbnRpZmllciwgY2Fj
aGVJZGVudGlmaWVyLCBlcnJvcik7IH0KKyAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZCh1aW50NjRf
dCBpZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVycm9yIGVycm9yKSB7IG9w
ZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIGVycm9yKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBWZWN0b3I8Q2FjaGVJbmZvPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFJlY29y
ZD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZWNvcmRzQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYsIEVycm9yKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgRXJyb3IpOworCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLykgeyBvcGVu
Q29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCAwLCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9
CisgICAgdmlydHVhbCB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgcmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJ
ZGVudGlmaWVyLCAwLCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmlydHVhbCB2b2lk
IGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgLyogb3JpZ2luICovKSB7IHVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsg
fQorCisgICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgdXBkYXRlUmVjb3Jk
cyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoRGVs
ZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNo
ZUlkZW50aWZpZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25z
JiYpIHsgcmVtb3ZlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgeyB9LCBFcnJv
cjo6Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmlydHVhbCB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmll
ciAqLywgVmVjdG9yPFJlY29yZD4mJikgeyBwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVu
dGlmaWVyLCB7IH0sIEVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgb3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVycm9yKTsKKworICAgIEhhc2hNYXA8dWludDY0
X3QsIE9wZW5SZW1vdmVDYWxsYmFjaz4gbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVz
dHM7CisgICAgdWludDY0X3QgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHNDb3Vu
dGVyIHsgMCB9OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ2FjaGVzQ2FsbGJhY2s+IG1fcmV0
cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHM7CisgICAgdWludDY0X3QgbV9yZXRyaWV2ZUNhY2hl
c1BlbmRpbmdSZXF1ZXN0c0NvdW50ZXIgeyAwIH07CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWNvcmRzQ2FsbGJhY2s+IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzOworICAgIHVp
bnQ2NF90IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzQ291bnRlciB7IDAgfTsKKwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2s+IG1fYmF0Y2hEZWxl
dGVBbmRQdXRQZW5kaW5nUmVxdWVzdHM7CisgICAgdWludDY0X3QgbV9iYXRjaERlbGV0ZUFuZFB1
dFBlbmRpbmdSZXF1ZXN0c0NvdW50ZXIgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTBjOWY5ZjI0ZWU3MDBk
MmI0NzcyMjFiNDI3OTFjMjBlN2ZmMDI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMCww
ICsxLDIxOSBAQAorCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNhY2hlUXVlcnlP
cHRpb25zLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyUnVu
TG9vcC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBDcm9zc1RocmVhZFJlY29yZERhdGEgeworICAgIHVpbnQ2NF90IGlkZW50aWZp
ZXI7CisKKyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7CisgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CisKKyAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKKyAg
ICBTdHJpbmcgcmVmZXJyZXI7CisKKyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlc3BvbnNlSGVh
ZGVyc0d1YXJkOworICAgIFJlc291cmNlUmVzcG9uc2U6OkNyb3NzVGhyZWFkRGF0YSByZXNwb25z
ZTsKK307CisKK3N0YXRpYyBDcm9zc1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1RocmVhZFJlY29y
ZERhdGEoY29uc3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkJiByZWNvcmQpCit7Cisg
ICAgcmV0dXJuIENyb3NzVGhyZWFkUmVjb3JkRGF0YSB7CisgICAgICAgIHJlY29yZC5pZGVudGlm
aWVyLAorICAgICAgICByZWNvcmQucmVxdWVzdEhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3Jk
LnJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlY29yZC5vcHRpb25zLmlzb2xhdGVk
Q29weSgpLAorICAgICAgICByZWNvcmQucmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksCisgICAgICAg
IHJlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJlc3BvbnNlLmNy
b3NzVGhyZWFkRGF0YSgpCisgICAgfTsKK30KKworc3RhdGljIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OlJlY29yZCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKENyb3NzVGhyZWFkUmVjb3JkRGF0
YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB7
CisgICAgICAgIGRhdGEuaWRlbnRpZmllciwKKyAgICAgICAgZGF0YS5yZXF1ZXN0SGVhZGVyc0d1
YXJkLAorICAgICAgICBXVEZNb3ZlKGRhdGEucmVxdWVzdCksCisgICAgICAgIFdURk1vdmUoZGF0
YS5vcHRpb25zKSwKKyAgICAgICAgV1RGTW92ZShkYXRhLnJlZmVycmVyKSwKKyAgICAgICAgZGF0
YS5yZXNwb25zZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNy
b3NzVGhyZWFkRGF0YShXVEZNb3ZlKGRhdGEucmVzcG9uc2UpKQorICAgIH07Cit9CisKK1JlZjxX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQoreworICAgIGF1dG8gY29ubmVjdGlv
biA9IGFkb3B0UmVmKCpuZXcgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihzY29wZSkpOwor
ICAgIGNvbm5lY3Rpb24tPm1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbcHJvdGVjdGVkQ29ubmVj
dGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbi5nZXQoKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
ICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CisK
KyAgICAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CisgICAgICAgIHByb3RlY3RlZENvbm5l
Y3Rpb24tPm1fbWFpblRocmVhZENvbm5lY3Rpb24gPSBkb2N1bWVudC5wYWdlKCktPmNhY2hlU3Rv
cmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihkb2N1bWVudC5wYWdl
KCktPnNlc3Npb25JRCgpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29ubmVjdGlvbjsKK30KKwor
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bihXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCisgICAgOiBtX3Njb3BlKHNjb3BlKQorICAgICwg
bV9wcm94eShtX3Njb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkpCisgICAgLCBtX3Rh
c2tNb2RlKFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpCit7Cit9
CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNo
ZU5hbWUpCit7CisgICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4u
aXNvbGF0ZWRDb3B5KCksIGNhY2hlTmFtZSA9IGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAg
ICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmll
cl0odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAg
ICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMs
IGVycm9yLCBjYWNoZUlkZW50aWZpZXIsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICAgICAgb3BlbkNvbXBsZXRl
ZChyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgICAg
ICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9M
b2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50
aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUg
eworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWlu
VGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVt
b3ZlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXSh1aW50NjRfdCBy
ZW1vdmVkQ2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRDYWNoZUlkZW50aWZpZXIsIHJlbW92ZWRDYWNoZUlkZW50
aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIGVycm9y
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKKyAgICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKQoreworICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3Jp
Z2luLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7Cisg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChtX21haW5UaHJl
YWRDb25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2
ZUNhY2hlcyhvcmlnaW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IFZlY3RvcjxDYWNoZUluZm8+JiBjYWNoZXMp
IG11dGFibGUgeworICAgICAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gaXNvbGF0ZWRDYWNoZXM7
CisgICAgICAgICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hl
cy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYWNoZSA6IGNhY2hlcykK
KyAgICAgICAgICAgICAgICBpc29sYXRlZENhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZv
IHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZS5pc29sYXRlZENvcHkoKSB9KTsKKworICAg
ICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FjaGVzID0gV1RGTW92
ZShpc29sYXRlZENhY2hlcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICB1
cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FjaGVzKSk7CisgICAgICAg
ICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBB
U1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29u
bmVjdGlvbi0+cmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oVmVjdG9y
PFJlY29yZD4mJiByZWNvcmRzKSBtdXRhYmxlIHsKKworICAgICAgICAgICAgVmVjdG9yPENyb3Nz
VGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGE7CisgICAgICAgICAgICByZWNvcmRzRGF0YS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgcmVjb3JkIDogcmVjb3JkcykKKyAgICAgICAgICAgICAgICByZWNvcmRzRGF0
YS51bmNoZWNrZWRBcHBlbmQodG9Dcm9zc1RocmVhZFJlY29yZERhdGEocmVjb3JkKSk7CisKKyAg
ICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlY29yZHNEYXRhID0g
V1RGTW92ZShyZWNvcmRzRGF0YSksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAg
ICBWZWN0b3I8UmVjb3JkPiByZWNvcmRzOworICAgICAgICAgICAgICAgIHJlY29yZHMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzRGF0YS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZv
ciAoYXV0byYgcmVjb3JkRGF0YSA6IHJlY29yZHNEYXRhKQorICAgICAgICAgICAgICAgICAgICBy
ZWNvcmRzLnVuY2hlY2tlZEFwcGVuZChmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKFdURk1vdmUo
cmVjb3JkRGF0YSkpKTsKKworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY29yZHMocmVxdWVzdElk
ZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcykpOworICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMpCit7CisgICAgbV9wcm94eS5wb3N0VGFza1Rv
TG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVu
dGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgp
LCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBB
U1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29u
bmVjdGlvbi0+YmF0Y2hEZWxldGVPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0LCBX
VEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJy
b3IgZXJyb3IpIG11dGFibGUgeworCisgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgZXJyb3IsIHJlcXVlc3RJZGVu
dGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxT
Y29wZSgpKTsKKyAgICAgICAgICAgICAgICByZW1vdmVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7CisgICAgICAgICAgICB9LCBtX3Rh
c2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6ZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMp
Cit7CisgICAgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGE7CisgICAg
cmVjb3Jkc0RhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiByZWNvcmQgOiByZWNvcmRzKQorICAgICAgICByZWNvcmRzRGF0YS51
bmNoZWNrZWRBcHBlbmQodG9Dcm9zc1RocmVhZFJlY29yZERhdGEocmVjb3JkKSk7CisKKyAgICBt
X3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkc0RhdGEgPSBX
VEZNb3ZlKHJlY29yZHNEYXRhKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhy
ZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKKyAgICAg
ICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHNEYXRhLnNpemUoKSk7Cisg
ICAgICAgIGZvciAoYXV0byYgcmVjb3JkRGF0YSA6IHJlY29yZHNEYXRhKQorICAgICAgICAgICAg
cmVjb3Jkcy51bmNoZWNrZWRBcHBlbmQoZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YShXVEZNb3Zl
KHJlY29yZERhdGEpKSk7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hQ
dXRPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShW
ZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpIG11dGFibGUgeworCisgICAg
ICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzID0gV1RGTW92
ZShyZWNvcmRzKSwgZXJyb3IsIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICBw
dXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBl
cnJvcik7CisgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDgzYjljYTBkMjQ0OTA2NWFjZjVhY2FkODFkYjcwYzY2ZWUwYzU5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNTkgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyTG9hZGVyUHJv
eHk7CisKK2NsYXNzIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gOiBwdWJsaWMgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKFdvcmtlckdsb2JhbFNj
b3BlJik7CisKKyAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uCisgICAgdm9p
ZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3Jp
Z2luICovLCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLykgZmluYWw7CisgICAgdm9pZCBk
b1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVu
dGlmaWVyICovKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovKSBmaW5hbDsKKworICAg
IHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zJiYpIGZpbmFsOworICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYm
KSBmaW5hbDsKKworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Njb3BlOworICAgIFdvcmtlckxv
YWRlclByb3h5JiBtX3Byb3h5OworICAgIFN0cmluZyBtX3Rhc2tNb2RlOworCisgICAgUmVmUHRy
PENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fbWFpblRocmVhZENvbm5lY3Rpb247Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCmluZGV4IGM1MzljZGU2M2I0YjRk
Mjc3MWM2OWNmZjdkNTliN2YxMjU4NWI4MTkuLmM4ZTRmZGMxZjU5NjMwY2E0ZmQ1ZTViYmEzNTQx
Y2M0OWEyOGM3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIENhY2hlU3Rv
cmFnZSogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmNhY2hlcyhXb3JrZXJHbG9iYWxTY29wZSYg
c2NvcGUpCiBDYWNoZVN0b3JhZ2UqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpjYWNoZXMoKSBj
b25zdAogewogICAgIGlmICghbV9jYWNoZXMpCi0gICAgICAgIG1fY2FjaGVzID0gQ2FjaGVTdG9y
YWdlOjpjcmVhdGUobV9zY29wZSwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKCkpOwor
ICAgICAgICBtX2NhY2hlcyA9IENhY2hlU3RvcmFnZTo6Y3JlYXRlKG1fc2NvcGUsIG1fc2NvcGUu
Y2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpKTsKICAgICByZXR1cm4gbV9jYWNoZXMuZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0OWJjNWQwNGIyOTlmY2Y1ODE3YzVlMWI2Y2UzNDlmZTk4Mzg4NWYyLi42OTUyYmE3
NDk5ZTE4NzA5ZDIxNjhjMzQ4OTc5Mzk2ZDgwNmQ3M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzcyLDYgKzE3NzIsOCBA
QAogCQk0MUExQjAxRDFFNTQyMzlFMDA3RjM3NjkgLyogSlNET01HdWFyZGVkT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTFCMDFCMUU1
NDIzOTYwMDdGMzc2OSAvKiBKU0RPTUd1YXJkZWRPYmplY3QuY3BwICovOyB9OwogCQk0MUEzRDU4
RTEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTNENThDMTAxQzE1MkQwMDMx
NkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICovOyB9OwogCQk0MUEzRDU4RjEwMUMx
NTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyog
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmggKi87IH07CisJCTQxQTdEMzUyMUY0MzhEMTYwMDg5ODhE
RSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTdEMzRGMUY0MzhEMTAwMDg5ODhERSAvKiBX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJNDFBN0QzNTMxRjQzOEQx
NjAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTdEMzUwMUY0MzhEMTAwMDg5ODhE
RSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi87IH07CiAJCTQxQUJFNjdCMUQw
NTgwREIwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQUJFNjdBMUQwNTgwRDUwMDZE
ODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsKIAkJNDFBQkU2N0Mx
RDA1ODBFMDAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUFCRTY3OTFEMDU4MEQ1
MDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCAqLzsgfTsKIAkJNDFB
RDc1M0ExQ0VGNkJEMTAwQTMxNDg2IC8qIEZldGNoT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8q
IEZldGNoT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC05NDQ0LDYgKzk0NDYsOCBAQAogCQk0MUE0OEE5RDFFODMxMkVCMDBEMkFDMkQg
LyogUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSVENQZWVyQ29ubmVjdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxQTQ4QUE3MUU4NEFFRUMwMEQyQUMyRCAvKiBSVENSdHBQYXJhbWV0ZXJzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBQYXJhbWV0ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFBNDhBQTgxRTg0QUYxRDAwRDJBQzJEIC8qIFJUQ1J0cFBhcmFtZXRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwUGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUE3RDM0RjFGNDM4RDEwMDA4OTg4REUg
LyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFBN0QzNTAxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUFCRTY3OTFEMDU4MEQ1MDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
QUJFNjdBMUQwNTgwRDUwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQUQ3NTM5MUNFRjZCQ0UwMEEz
MTQ4NiAvKiBGZXRjaE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmV0Y2hPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjQ5MCw4ICsx
MjQ5NCw4IEBACiAJCTlCMDk4QkRFMUYzRDY3M0QwMDJERDU2MiAvKiBKU0RhdGFUcmFuc2Zlckl0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRhVHJhbnNmZXJJdGVt
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDk4QkRGMUYzRDY3M0QwMDJERDU2
MiAvKiBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjA5OEJFMDFGM0Q2NzNEMDAyREQ1NjIgLyogSlNEYXRhVHJhbnNmZXJJ
dGVtTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RhdGFUcmFuc2Zl
ckl0ZW1MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCMDk4QkU2MUYzRDZB
RjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEpTU3RyaW5nQ2FsbGJhY2suY3BwOyBwYXRoID0gSlNTdHJpbmdDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCMDk4QkU3MUYzRDZBRjYw
MDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIwOThCRTYxRjNENkFGNjAwMkRENTYyIC8qIEpT
U3RyaW5nQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTdHJpbmdDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMDk4
QkU3MUYzRDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUIwRkU4NzMxRDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dS
b290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTMyNTdCMUYzRDJBQkEwMERBQUI2OSAv
KiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3NjY5LDYgKzE3NjczLDggQEAKIAkJCQk0MUZCMjc4RTFGMzRDMjgyMDA3OTU0ODcg
LyogRE9NV2luZG93Q2FjaGVzLmNwcCAqLywKIAkJCQk0MUZCMjc4QzFGMzRDMjgyMDA3OTU0ODcg
LyogRE9NV2luZG93Q2FjaGVzLmggKi8sCiAJCQkJNDEzODBDMkIxRjM0M0UyRjAwMTU1RkRBIC8q
IERPTVdpbmRvd0NhY2hlcy5pZGwgKi8sCisJCQkJNDFBN0QzNEYxRjQzOEQxMDAwODk4OERFIC8q
IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQxQTdEMzUwMUY0MzhE
MTAwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi8sCiAJCQkJNDFG
QjI3OEYxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcCAqLywK
IAkJCQk0MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
aCAqLywKIAkJCQk0MTM4MEMyQTFGMzQzRTJGMDAxNTVGREEgLyogV29ya2VyR2xvYmFsU2NvcGVD
YWNoZXMuaWRsICovLApAQCAtMjk0NzMsMjMgKzI5NDc5LDE1IEBACiAJCQkJNTE2RjdGNkQxQzMx
RTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEOTNBRUUzMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU1RDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdv
cmtlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4MkMyM0YxRjMxM0EwOTAwNTlCQTdDIC8qIFNl
cnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTVGMUYzRUJDODMwMEM3NDk1
MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTgyQzI0
MTFGMzEzQTA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NjExRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4MkMyNDMxRjMxM0EwOTAwNTlCQTdDIC8qIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1NjMxRjNF
QkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJKb2IuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
MUNBNjdFMUYzOTA1QTYwMDE5RTA3NCAvKiBTZXJ2aWNlV29ya2VySm9iLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUYxNzU2NDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckpvYkNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTExQ0E2ODAxRjM5MzMxRjAwMTlFMDc0IC8qIFNlcnZp
Y2VXb3JrZXJKb2JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMUNBNjdBMUYzOTA0QjEw
MDE5RTA3NCAvKiBTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
RjE3NTY2MUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRjE3NTY4MUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTgyQzI0NTFGMzEzQTA5MDA1OUJBN0Mg
LyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1
NjkxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU2QjFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTZD
MUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUxRjE3NEZGMUYzNTg5OTcwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyVXBk
YXRlVmlhQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NkIyQ0UxMThCNzEwMTYwMEZFQ0ZB
QSAvKiBTZXNzaW9uSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTEwMDk5RTY0OTIwMDU2
RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjhE
QkRCNEMxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzAyNjQsNiArMzAyNjIsNyBAQAogCQkJCUExNDgzMkM2MTg3RjY2OEYwMERBNjNB
NiAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk5MTk5NzEyMDBEREY0
MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFNDM0NjQ2
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxQTdEMzUz
MUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTJBNjg2MjFEQkIwRjYzMDA4MzM3M0YgLyogV29ya2VyQ29uc29sZUFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTU2MzlEMTFDNkYwOUUzMDA4MDZEOEUgLyogV29y
a2VyQ29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUyQTY4NjYxREJENEI1RDAw
ODMzNzNGIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzMzMzgs
MTkgKzMzMzM3LDEyIEBACiAJCQkJNTE2RjdGNkUxQzMxRTM5QzAwRjExMURDIC8qIFNlcnZlck9w
ZW5EQlJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5M0FFRTQxOURGNTY0MTAwMkE4
NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
MUYxNzU1QzFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1MTgyQzIzRTFGMzEzQTA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUYxNzU1RTFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTgyQzI0MDFGMzEzQTA5MDA1OUJB
N0MgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTgy
QzI0MjFGMzEzQTA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRjE3NTYwMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMTc1NjIxRjNFQkM4MzAwQzc0
OTUwIC8qIFNlcnZpY2VXb3JrZXJKb2IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTExQ0E2N0Qx
RjM5MDVBNjAwMTlFMDc0IC8qIFNlcnZpY2VXb3JrZXJKb2IuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTExQ0E2NzkxRjM5MDRCMTAwMTlFMDc0IC8qIFNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MUYxNzU2NTFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdv
cmtlclByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjE3NTY3MUYzRUJDODMwMEM3
NDk1MCAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTUxODJDMjQ0MUYzMTNBMDkwMDU5QkE3QyAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjE3NTZBMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTFD
QTY4MzFGM0EzQ0Q5MDAxOUUwNzQgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblBhcmFtZXRl
cnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTExRjdENDQxRUIxQzM5MTAwRTQ3QjgzIC8qIFNl
c3Npb25JRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRjA5OUU2NDkyMDA1NkU1ODEg
LyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjhEQkRC
NEIxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMzk4NCw2ICszMzk3Niw3IEBACiAJCQkJQTE0ODMyQzUxODdGNjY4MzAwREE2M0E2
IC8qIFdLVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OTkxOTk2MTIwMERERjQwMEVBMDQx
QyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY0NTBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxQTdEMzUyMUY0
MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1MkE2ODYxMURCQjBGNjMwMDgzMzczRiAvKiBXb3JrZXJDb25zb2xlQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1NjM5RDIxQzZGMDlFNzAwODA2RDhFIC8qIFdv
cmtlckNvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUyQTY4NjUxREJENEI1
RDAwODMzNzNGIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggN2UxYTgzNzM4ZDIzOTdmMjRkNzI0Y2Qw
MTI2NjY3ZmE2MDRlMThiOC4uOTk4MTM0M2NkNzZmZjVjNDE4MmQxNDA0ZWZiZmExODMxZjgyODA4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtMzQsNiArMzQsOCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsKKyAgICBGZXRjaE9w
dGlvbnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBFbXB0
eVN0cmluZywgQXVkaW8sIEZvbnQsIEltYWdlLCBTY3JpcHQsIFN0eWxlLCBUcmFjaywgVmlkZW8g
fTsKICAgICBUeXBlIHR5cGUgeyBUeXBlOjpFbXB0eVN0cmluZyB9OwogCkBAIC01OSw0ICs2MSwx
MSBAQCBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsKICAgICBib29sIGtlZXBBbGl2ZSB7IGZhbHNlIH07
CiB9OwogCitpbmxpbmUgRmV0Y2hPcHRpb25zIEZldGNoT3B0aW9uczo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKK3sKKyAgICBGZXRjaE9wdGlvbnMgb3B0aW9ucyA9ICp0aGlzOworICAgIG9wdGlvbnMu
aW50ZWdyaXR5ID0gaW50ZWdyaXR5Lmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBvcHRpb25z
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDE4MGY4OGU2OTU4N2UwYTA0M2ZhNjY1MGIwM2E2
MjAxNGRiOTk1MmEuLmQ5YWQ1OWEyNWZlYjAzOTkyMWZkMjRjMTkzMjMxYjJjZTRmNjlhNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0zODYs
NCArMzg2LDExIEBAIFBlcmZvcm1hbmNlJiBXb3JrZXJHbG9iYWxTY29wZTo6cGVyZm9ybWFuY2Uo
KSBjb25zdAogICAgIHJldHVybiAqbV9wZXJmb3JtYW5jZTsKIH0KIAorQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbiYgV29ya2VyR2xvYmFsU2NvcGU6OmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQorewor
ICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQorICAgICAgICBtX2NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gPSBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMp
OworICAgIHJldHVybiAqbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgK
aW5kZXggYzViMGQ1MmFiNGNhY2Q2MWEyYjk5NDM0Zjc3ODNhZWVlNTgyMjM5My4uMDQ5MWQ3YzRm
ZGQwNTY3ZTFmMjdhMjFiNDhlZTZmNzU1NjcyOGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMjcsMTEgKzI3LDEzIEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkJhc2U2NFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTdXBw
bGVtZW50YWJsZS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCiAjaW5jbHVk
ZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5oPgpAQCAtNjYsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wSW5kZXhl
ZERhdGFiYXNlKCk7CiAjZW5kaWYKIAorICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24mIGNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKTsKKwogICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlw
dCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CiAgICAgdm9pZCBjbGVhclNjcmlwdCgpIHsg
bV9zY3JpcHQgPSBudWxscHRyOyB9CiAKQEAgLTE4Myw2ICsxODcsNyBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgUmVmUHRyPENyeXB0bz4gbV9jcnlwdG87CiAKICAgICBTZXNzaW9uSUQgbV9zZXNz
aW9uSUQ7CisgICAgUmVmUHRyPFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318287</attachid>
            <date>2017-08-16 13:52:05 -0700</date>
            <delta_ts>2017-08-16 14:23:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175599-20170816135204.patch</filename>
            <type>text/plain</type>
            <size>37561</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk3Y2EzNzY4NGFmZTU4
NzZiYmM3ZGU4ZGUxYzljZmY4M2U0MTY1Zi4uZWM2N2MzMjVlOTk3NjBlMDU3ODU4OTRhYmViOTc1
NWZlZmM0ZDlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA4LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBJbXBs
ZW1lbnQgV29ya2VyIGNvbm5lY3Rpb24gdG8gdGhlIENhY2hlIHN0b3JhZ2UgZW5naW5lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgIEFkZGluZyBhIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gdG8gY29ubmVjdCB3b3JrZXJzIENhY2hlL0NhY2hlU3RvcmFnZQorICAgICAgICB0byB0
aGUgY2FjaGUgc3RvcmFnZSBlbmdpbmUuCisgICAgICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gZG9lcyB0aGlzIGJ5IGhvcHBpbmcgdG8gdGhlIG1haW4gdGhyZWFkIHRvIGNhbGwgdGhl
IGRvY3VtZW50IGNhY2hlIHN0b3JhZ2UgY29ubmVjdGlvbiB0byBkbyB0aGUgYWN0dWFsIGpvYi4K
KyAgICAgICAgRG9pbmcgc29tZSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIHJlZmFjdG9yaW5nIHRv
IHNoYXJlIGNvZGUgd2l0aCBXSzIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhY2hlIHN0b3JhZ2Ug
Y29ubmVjdGlvbi4gCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW5PclJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjp1cGRhdGVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmVSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3Bl
cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3Jvc3NUaHJlYWRSZWNvcmRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b0JhdGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlczo6Y2FjaGVzIGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAxNy0wOC0xNiAgRnVqaWkgSGlyb25vcmkgIDxIaXJv
bm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbSGFyZkJ1enpdIERlY29tcG9zZWQgVmll
dG5hbWVzZSBjaGFyYWN0ZXJzIGFyZSByZW5kZXJlZCBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAwNjdkZDdkNGM4NDBmNGQ3YTVhZGQ2NjNlNTJiNWQ1MzQ0YTk5OTRlLi40Yzdh
ZTkwOWJlM2M0MWZlOTRlNzg4MmZhMGU5ZmYwMGE3N2I4OGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtODk4LDYgKzg5OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZS5jcHAKICAgICBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCiAgICAgTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisgICAgTW9k
dWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAogICAgIE1vZHVsZXMv
Y2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCiAKICAgICBNb2R1bGVzL2NyZWRlbnRp
YWxzL0Jhc2ljQ3JlZGVudGlhbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVRdWVyeU9wdGlvbnMuaAppbmRleCA2OGY2N2ZhY2YzNTY4NzFlZWY0ZTU1NDY5NThi
NzI3YTY1OTM2OTNiLi43NDI3YjhkYmIwN2YwNjgwNWQ2YjE0NmZjMDg5NTg2Y2JiN2YyNmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5o
CkBAIC0zMCwxMCArMzAsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENhY2hl
UXVlcnlPcHRpb25zIHsKKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucygpID0gZGVmYXVsdDsKKyAgICBD
YWNoZVF1ZXJ5T3B0aW9ucyhib29sIGlnbm9yZVNlYXJjaCwgYm9vbCBpZ25vcmVNZXRob2QsIGJv
b2wgaWdub3JlVmFyeSwgU3RyaW5nIGNhY2hlTmFtZSk7CisgICAgQ2FjaGVRdWVyeU9wdGlvbnMg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhv
ZCwgaWdub3JlVmFyeSwgY2FjaGVOYW1lLmlzb2xhdGVkQ29weSgpIH07IH0KKwogICAgIGJvb2wg
aWdub3JlU2VhcmNoIHsgZmFsc2UgfTsKICAgICBib29sIGlnbm9yZU1ldGhvZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBpZ25vcmVWYXJ5IHsgZmFsc2UgfTsKICAgICBTdHJpbmcgY2FjaGVOYW1lOwog
fTsKIAoraW5saW5lIENhY2hlUXVlcnlPcHRpb25zOjpDYWNoZVF1ZXJ5T3B0aW9ucyhib29sIGln
bm9yZVNlYXJjaCwgYm9vbCBpZ25vcmVNZXRob2QsIGJvb2wgaWdub3JlVmFyeSwgU3RyaW5nIGNh
Y2hlTmFtZSkKKyAgICA6IGlnbm9yZVNlYXJjaChpZ25vcmVTZWFyY2gpCisgICAgLCBpZ25vcmVN
ZXRob2QoaWdub3JlTWV0aG9kKQorICAgICwgaWdub3JlVmFyeShpZ25vcmVWYXJ5KQorICAgICwg
Y2FjaGVOYW1lKGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKSkKK3sKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjQ0ZjllNDE3ZDQzY2FlZjNiMjI5MzllMzIz
MmQ5ZmFkYWM1ZDBiMS4uMWI2ZjI3NmViYmI1OGJmYWQ3ZjdiMDU4ZGUwNTRjYWI2YzU0OTE1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCkBAIC03OCw1ICs3OCw4OSBAQCBib29sIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBPcGVuUmVt
b3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciA9ICsrbV9yZXF1ZXN0Q291bnRlcjsKKyAgICBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdS
ZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAg
IGRvT3BlbihyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCBjYWNoZU5hbWUpOworfQorCit2b2lk
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IE9wZW5SZW1vdmVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyID0gKyttX3JlcXVlc3RDb3VudGVyOworICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hl
UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykp
OworCisgICAgZG9SZW1vdmUocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIgPSArK21fcmVxdWVzdENvdW50ZXI7CisgICAgbV9yZXRyaWV2ZUNh
Y2hlc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKworICAgIGRvUmV0cmlldmVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7
Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fcmVxdWVzdENvdW50ZXI7CisgICAgbV9y
ZXRyaWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisKKyAgICBkb1JldHJpZXZlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmll
ciwgY2FjaGVJZGVudGlmaWVyKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpi
YXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMm
JiBvcHRpb25zLCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fcmVxdWVzdENvdW50ZXI7CisgICAgbV9iYXRj
aERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1v
dmUoY2FsbGJhY2spKTsKKworICAgIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24ocmVxdWVzdElkZW50
aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25zKSk7Cit9CisK
K3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
UmVjb3JkPiYmIHJlY29yZHMsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9yZXF1ZXN0Q291bnRlcjsKKyAg
ICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgZG9CYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0
SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpKTsKK30KKwordm9p
ZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuT3JSZW1vdmVDb21wbGV0ZWQodWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3IgZXJyb3Ip
Cit7CisgICAgYXV0byBjYWxsYmFjayA9IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVl
c3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAg
Y2FsbGJhY2soY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6dXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0
b3I8Q2FjaGVJbmZvPiYmIGNhY2hlcykKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9yZXRyaWV2
ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBpZiAo
Y2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzKSk7Cit9CisKK3ZvaWQg
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzKQoreworICAgIGF1dG8gY2FsbGJhY2sg
PSBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVy
KTsKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3Jkcykp
OworfQorCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29yZHNDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiByZWNvcmRz
LCBFcnJvciBlcnJvcikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9iYXRjaERlbGV0ZUFuZFB1
dFBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBpZiAoY2FsbGJh
Y2spCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKK30KKwordm9p
ZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3Ip
Cit7CisgICAgYXV0byBjYWxsYmFjayA9IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVz
dHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDIzZWQzZTU4OGE4M2Q1MmY4Y2I2MDRlM2U3NDFmYTVj
MjA4ZmI0YjguLmYyMGMwODFlOGIzN2U2Njc4YTZjNzBhZDc0NDQzYTE2MTYzOWIxZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY4LDIwICs2OSw0NiBAQCBwdWJsaWM6
CiAgICAgfTsKIAogICAgIHVzaW5nIE9wZW5SZW1vdmVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZCh1aW50NjRfdCwgRXJyb3IpPjsKLSAgICB1c2luZyBDYWNoZU1hcENhbGxiYWNrID0gV1RG
OjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxDYWNoZUluZm8+JiYpPjsKKyAgICB1c2luZyBDYWNoZXND
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8Q2FjaGVJbmZvPiYmKT47CiAgICAg
dXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxSZWNvcmQ+
JiYpPjsKICAgICB1c2luZyBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKFZlY3Rvcjx1aW50NjRfdD4mJiwgRXJyb3IpPjsKIAotICAgIHZpcnR1YWwgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAq
LywgT3BlblJlbW92ZUNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soMCwgRXJyb3I6Ok5v
dEltcGxlbWVudGVkKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUodWludDY0X3QgLyogY2Fj
aGVJZGVudGlmaWVyICovLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFj
aygwLCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJldHJpZXZl
Q2FjaGVzKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBDYWNoZU1hcENhbGxiYWNrJiYgY2Fs
bGJhY2spIHsgY2FsbGJhY2soeyB9KTsgfQorICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIC8q
IG9yaWdpbiAqLywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8sIE9wZW5SZW1vdmVDYWxs
YmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8s
IE9wZW5SZW1vdmVDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0
cmluZyYgLyogb3JpZ2luICovLCBDYWNoZXNDYWxsYmFjayYmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBSZWNvcmRz
Q2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjayh7IH0pOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgQmF0Y2hPcGVyYXRpb25D
YWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKHsgfSwgRXJyb3I6Ok5vdEltcGxlbWVudGVk
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCAvKiBjYWNo
ZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxSZWNvcmQ+JiYsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaykgeyBjYWxsYmFjayh7IH0sIEVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KKyAg
ICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFJl
Y29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90
IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVy
eU9wdGlvbnMmJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGJhdGNoUHV0
T3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPFJlY29yZD4m
JiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmKTsKIAogcHJvdGVjdGVkOgogICAgIENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKSA9ICBkZWZhdWx0OworCisgICAgdm9pZCBvcGVuQ29tcGxldGVkKHVp
bnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3IgZXJyb3Ip
IHsgb3Blbk9yUmVtb3ZlQ29tcGxldGVkKGlkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgZXJy
b3IpOyB9CisgICAgdm9pZCByZW1vdmVDb21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgeyBvcGVuT3JSZW1vdmVDb21wbGV0
ZWQoaWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9y
PENhY2hlSW5mbz4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlY29yZHMo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBFcnJvcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0
b3I8dWludDY0X3Q+JiYsIEVycm9yKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZG9P
cGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAq
LywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8pIHsgb3BlbkNvbXBsZXRlZChyZXF1ZXN0
SWRlbnRpZmllciwgMCwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJ
ZGVudGlmaWVyICovKSB7IHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgMCwgRXJy
b3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlQ2FjaGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLykg
eyB1cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZp
ZXIsIHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmKSB7IGRlbGV0ZVJlY29y
ZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHsgfSwgRXJyb3I6Ok5vdEltcGxlbWVudGVk
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxSZWNv
cmQ+JiYpIHsgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgeyB9LCBFcnJv
cjo6Tm90SW1wbGVtZW50ZWQpOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5PclJl
bW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBFcnJvcik7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBPcGVuUmVtb3ZlQ2Fs
bGJhY2s+IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzOworICAgIEhhc2hNYXA8
dWludDY0X3QsIENhY2hlc0NhbGxiYWNrPiBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3Rz
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlY29yZHNDYWxsYmFjaz4gbV9yZXRyaWV2ZVJlY29y
ZHNQZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQmF0Y2hPcGVyYXRpb25D
YWxsYmFjaz4gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0czsKKworICAgIHVpbnQ2
NF90IG1fcmVxdWVzdENvdW50ZXIgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWM5ZmFkMWY1MzIyMDUxYWRi
YWQ0N2ZkZTNkZTc1MGUxYTBkNWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDIyMiBAQAorCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNhY2hlUXVlcnlPcHRp
b25zLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgorI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyUnVuTG9v
cC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBDcm9zc1RocmVhZFJlY29yZERhdGEgeworICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7
CisKKyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7CisgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CisKKyAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKKyAgICBT
dHJpbmcgcmVmZXJyZXI7CisKKyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlc3BvbnNlSGVhZGVy
c0d1YXJkOworICAgIFJlc291cmNlUmVzcG9uc2U6OkNyb3NzVGhyZWFkRGF0YSByZXNwb25zZTsK
K307CisKK3N0YXRpYyBDcm9zc1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1RocmVhZFJlY29yZERh
dGEoY29uc3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkJiByZWNvcmQpCit7CisgICAg
cmV0dXJuIENyb3NzVGhyZWFkUmVjb3JkRGF0YSB7CisgICAgICAgIHJlY29yZC5pZGVudGlmaWVy
LAorICAgICAgICByZWNvcmQucmVxdWVzdEhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJl
cXVlc3QuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlY29yZC5vcHRpb25zLmlzb2xhdGVkQ29w
eSgpLAorICAgICAgICByZWNvcmQucmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJl
Y29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJlc3BvbnNlLmNyb3Nz
VGhyZWFkRGF0YSgpCisgICAgfTsKK30KKworc3RhdGljIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OlJlY29yZCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKENyb3NzVGhyZWFkUmVjb3JkRGF0YSYm
IGRhdGEpCit7CisgICAgcmV0dXJuIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB7Cisg
ICAgICAgIGRhdGEuaWRlbnRpZmllciwKKyAgICAgICAgZGF0YS5yZXF1ZXN0SGVhZGVyc0d1YXJk
LAorICAgICAgICBXVEZNb3ZlKGRhdGEucmVxdWVzdCksCisgICAgICAgIFdURk1vdmUoZGF0YS5v
cHRpb25zKSwKKyAgICAgICAgV1RGTW92ZShkYXRhLnJlZmVycmVyKSwKKyAgICAgICAgZGF0YS5y
ZXNwb25zZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNyb3Nz
VGhyZWFkRGF0YShXVEZNb3ZlKGRhdGEucmVzcG9uc2UpKQorICAgIH07Cit9CisKK1JlZjxXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
cmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9
IGFkb3B0UmVmKCpuZXcgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihzY29wZSkpOworICAg
IGNvbm5lY3Rpb24tPm1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbcHJvdGVjdGVkQ29ubmVjdGlv
biA9IG1ha2VSZWYoY29ubmVjdGlvbi5nZXQoKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CisKKyAg
ICAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CisgICAgICAgIHByb3RlY3RlZENvbm5lY3Rp
b24tPm1fbWFpblRocmVhZENvbm5lY3Rpb24gPSBkb2N1bWVudC5wYWdlKCktPmNhY2hlU3RvcmFn
ZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihkb2N1bWVudC5wYWdlKCkt
PnNlc3Npb25JRCgpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29ubmVjdGlvbjsKK30KKworV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihX
b3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCisgICAgOiBtX3Njb3BlKHNjb3BlKQorICAgICwgbV9w
cm94eShtX3Njb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkpCisgICAgLCBtX3Rhc2tN
b2RlKFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpCit7Cit9CisK
K1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246On5Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCkKK3sKKyAgICBpZiAobV9tYWluVGhyZWFkQ29ubmVjdGlvbikKKyAgICAgICAgbV9wcm94
eS5wb3N0VGFza1RvTG9hZGVyKFttYWluVGhyZWFkQ29ubmVjdGlvbiA9IFdURk1vdmUobV9tYWlu
VGhyZWFkQ29ubmVjdGlvbildKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsgfSk7
Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBj
YWNoZU5hbWUpCit7CisgICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmln
aW4uaXNvbGF0ZWRDb3B5KCksIGNhY2hlTmFtZSA9IGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAg
ICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRp
Zmllcl0odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Ro
aXMsIGVycm9yLCBjYWNoZUlkZW50aWZpZXIsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICAgICAgb3BlbkNvbXBs
ZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAg
ICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElk
ZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFi
bGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9t
YWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+
cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXSh1aW50NjRf
dCByZW1vdmVkQ2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRDYWNoZUlkZW50aWZpZXIsIHJlbW92ZWRDYWNoZUlk
ZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIGVy
cm9yXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKKyAgICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luKQoreworICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0g
b3JpZ2luLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7
CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChtX21haW5U
aHJlYWRDb25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRy
aWV2ZUNhY2hlcyhvcmlnaW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IFZlY3RvcjxDYWNoZUluZm8+JiBjYWNo
ZXMpIG11dGFibGUgeworICAgICAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gaXNvbGF0ZWRDYWNo
ZXM7CisgICAgICAgICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNh
Y2hlcy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYWNoZSA6IGNhY2hl
cykKKyAgICAgICAgICAgICAgICBpc29sYXRlZENhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJ
bmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZS5pc29sYXRlZENvcHkoKSB9KTsKKwor
ICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FjaGVzID0gV1RG
TW92ZShpc29sYXRlZENhY2hlcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAg
ICB1cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FjaGVzKSk7CisgICAg
ICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVj
b3Jkcyhjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYgcmVjb3Jk
cykKK3sKKyAgICBWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiByZWNvcmRzRGF0YTsKKyAg
ICByZWNvcmRzRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCisgICAgICAgIHJlY29yZHNEYXRh
LnVuY2hlY2tlZEFwcGVuZCh0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YShyZWNvcmQpKTsKKyAgICBy
ZXR1cm4gcmVjb3Jkc0RhdGE7Cit9CisKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OlJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NU
aHJlYWRSZWNvcmREYXRhPiYmIHJlY29yZHNEYXRhKQoreworICAgIFZlY3RvcjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpSZWNvcmQ+IHJlY29yZHM7CisgICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHJlY29yZHNEYXRhLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmREYXRh
IDogcmVjb3Jkc0RhdGEpCisgICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKGZyb21Dcm9z
c1RocmVhZFJlY29yZERhdGEoV1RGTW92ZShyZWNvcmREYXRhKSkpOworICAgIHJldHVybiByZWNv
cmRzOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpCit7CisgICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOworCisgICAg
ICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZp
ZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVz
dElkZW50aWZpZXJdKFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykgbXV0YWJsZSB7CisgICAgICAg
ICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzRGF0YSA9IHJlY29y
ZHNEYXRhRnJvbVJlY29yZHMocmVjb3JkcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAg
ICAgICAgICB1cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZWNvcmRzRnJvbVJlY29y
ZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEpKSk7CisgICAgICAgICAgICB9LCBtX3Rhc2tNb2Rl
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucykKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElk
ZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5
KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAg
IEFTU0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRD
b25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3Qs
IFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFZlY3Rvcjx1aW50NjRfdD4mJiByZWNvcmRzLCBF
cnJvciBlcnJvcikgbXV0YWJsZSB7CisKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvciwgcmVxdWVzdElk
ZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpOworICAgICAgICAgICAgICAgIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKKyAgICAgICAgICAgIH0sIG1f
dGFza01vZGUpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3Jk
cykKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVj
b3Jkc0RhdGEgPSByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJlY29yZHMpXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5U
aHJlYWRDb25uZWN0aW9uLT5iYXRjaFB1dE9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlY29y
ZHNGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YSkpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8
dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpIG11dGFibGUgeworCisgICAgICAgICAg
ICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzID0gV1RGTW92ZShyZWNv
cmRzKSwgZXJyb3IsIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICBwdXRSZWNv
cmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7
CisgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWY0OGFmMmZiZTE4MTU0ZWY1MDJiMmY5MjQyYTg0YzEzYTMwNWUyNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsNjAgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CisK
K2NsYXNzIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICB+V29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oV29ya2VyR2xvYmFsU2NvcGUmKTsKKworICAgIC8vIFdl
YkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24KKyAgICB2b2lkIGRvT3Blbih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmlu
ZyYgLyogY2FjaGVOYW1lICovKSBmaW5hbDsKKyAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIGZpbmFsOwor
ICAgIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8pIGZpbmFsOworCisgICAgdm9pZCBkb1JldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KSBmaW5hbDsKKyAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CisgICAg
dm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYpIGZpbmFsOworCisgICAgV29y
a2VyR2xvYmFsU2NvcGUmIG1fc2NvcGU7CisgICAgV29ya2VyTG9hZGVyUHJveHkmIG1fcHJveHk7
CisgICAgU3RyaW5nIG1fdGFza01vZGU7CisKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gbV9tYWluVGhyZWFkQ29ubmVjdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFs
U2NvcGVDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9i
YWxTY29wZUNhY2hlcy5jcHAKaW5kZXggYzUzOWNkZTYzYjRiNGQyNzcxYzY5Y2ZmN2Q1OWI3ZjEy
NTg1YjgxOS4uYzhlNGZkYzFmNTk2MzBjYTRmZDVlNWJiYTM1NDFjYzQ5YTI4Yzc2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29w
ZUNhY2hlcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgQ2FjaGVTdG9yYWdlKiBXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlczo6Y2FjaGVzKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKIENhY2hlU3RvcmFn
ZSogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmNhY2hlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NhY2hlcykKLSAgICAgICAgbV9jYWNoZXMgPSBDYWNoZVN0b3JhZ2U6OmNyZWF0ZShtX3Njb3Bl
LCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgIG1fY2FjaGVzID0g
Q2FjaGVTdG9yYWdlOjpjcmVhdGUobV9zY29wZSwgbV9zY29wZS5jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCkpOwogICAgIHJldHVybiBtX2NhY2hlcy5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmMmFlZjAxZWU4
NDRkZjAzZjFlZjQwNDljMDc4NTM0Njc1MTM1NzEuLjJhY2IxMjA0OTQ4ZmIwMDlkYmUxYmM4MGYy
MjQyMWQwZDY4MGRhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NzIsNiArMTc3Miw4IEBACiAJCTQxQTFCMDFEMUU1NDIz
OUUwMDdGMzc2OSAvKiBKU0RPTUd1YXJkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMUIwMUIxRTU0MjM5NjAwN0YzNzY5IC8qIEpT
RE9NR3VhcmRlZE9iamVjdC5jcHAgKi87IH07CiAJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAv
KiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdv
cmtlclRocmVhZC5jcHAgKi87IH07CiAJCTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuaCAqLzsgfTsKKwkJNDFBN0QzNTIxRjQzOEQxNjAwODk4OERFIC8qIFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFBN0QzNEYxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwICovOyB9OworCQk0MUE3RDM1MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFBN0QzNTAxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDFBQkU2N0IxRDA1ODBEQjAwNkQ4NjJEIC8qIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFBQkU2N0ExRDA1ODBENTAwNkQ4NjJEIC8qIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OwogCQk0MUFCRTY3QzFEMDU4MEUwMDA2RDg2MkQgLyog
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQUJFNjc5MUQwNTgwRDUwMDZEODYyRCAvKiBDcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwICovOyB9OwogCQk0MUFENzUzQTFDRUY2QkQxMDBBMzE0
ODYgLyogRmV0Y2hPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUFENzUzOTFDRUY2QkNFMDBBMzE0ODYgLyogRmV0Y2hPcHRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0NDUsNiAr
OTQ0Nyw4IEBACiAJCTQxQTQ4QTlEMUU4MzEyRUIwMEQyQUMyRCAvKiBSVENQZWVyQ29ubmVjdGlv
blN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1BlZXJDb25uZWN0
aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBNDhBQTcxRTg0QUVF
QzAwRDJBQzJEIC8qIFJUQ1J0cFBhcmFtZXRlcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJUQ1J0cFBhcmFtZXRlcnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUE0
OEFBODFFODRBRjFEMDBEMkFDMkQgLyogUlRDUnRwUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxQTdEMzRGMUY0MzhEMTAwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUE3RDM1MDFGNDM4RDEwMDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQUJFNjc5MUQw
NTgwRDUwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBQkU2N0ExRDA1ODBENTAwNkQ4
NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8qIEZldGNoT3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaE9wdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjcyLDYgKzE3Njc2LDggQEAKIAkJCQk0MUZC
Mjc4RTFGMzRDMjgyMDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmNwcCAqLywKIAkJCQk0MUZC
Mjc4QzFGMzRDMjgyMDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmggKi8sCiAJCQkJNDEzODBD
MkIxRjM0M0UyRjAwMTU1RkRBIC8qIERPTVdpbmRvd0NhY2hlcy5pZGwgKi8sCisJCQkJNDFBN0Qz
NEYxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICov
LAorCQkJCTQxQTdEMzUwMUY0MzhEMTAwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmggKi8sCiAJCQkJNDFGQjI3OEYxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2Jh
bFNjb3BlQ2FjaGVzLmNwcCAqLywKIAkJCQk0MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcgLyogV29y
a2VyR2xvYmFsU2NvcGVDYWNoZXMuaCAqLywKIAkJCQk0MTM4MEMyQTFGMzQzRTJGMDAxNTVGREEg
LyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaWRsICovLApAQCAtMzAyNjEsNiArMzAyNjcsNyBA
QAogCQkJCUExNDgzMkM2MTg3RjY2OEYwMERBNjNBNiAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxQTdEMzUzMUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTJBNjg2MjFEQkIw
RjYzMDA4MzM3M0YgLyogV29ya2VyQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTU2MzlEMTFDNkYwOUUzMDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTUyQTY4NjYxREJENEI1RDAwODMzNzNGIC8qIFdvcmtlckRlYnVnZ2VyQWdl
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzM5NzUsNiArMzM5ODIsNyBAQAogCQkJCUExNDgzMkM1
MTg3RjY2ODMwMERBNjNBNiAvKiBXS1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzk5MTk5
NjEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkU0MzQ2NDUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MUE3RDM1MjFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTJBNjg2MTFEQkIwRjYzMDA4MzM3M0YgLyog
V29ya2VyQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NTYzOUQyMUM2RjA5
RTcwMDgwNkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE1MkE2ODY1MURCRDRCNUQwMDgzMzczRiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCmluZGV4IDdlMWE4Mzcz
OGQyMzk3ZjI0ZDcyNGNkMDEyNjY2N2ZhNjA0ZTE4YjguLmIxNzM3MjNiZDdmN2EwZWM1NDc2NzFi
YTAxZmQwOTRmMjRiOWY3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRj
aE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKQEAg
LTM1LDI4ICszNSwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBGZXRjaE9wdGlv
bnMgewogICAgIGVudW0gY2xhc3MgVHlwZSB7IEVtcHR5U3RyaW5nLCBBdWRpbywgRm9udCwgSW1h
Z2UsIFNjcmlwdCwgU3R5bGUsIFRyYWNrLCBWaWRlbyB9OwotICAgIFR5cGUgdHlwZSB7IFR5cGU6
OkVtcHR5U3RyaW5nIH07Ci0KICAgICBlbnVtIGNsYXNzIERlc3RpbmF0aW9uIHsgRW1wdHlTdHJp
bmcsIERvY3VtZW50LCBTaGFyZWR3b3JrZXIsIFN1YnJlc291cmNlLCBVbmtub3duLCBXb3JrZXIg
fTsKLSAgICBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiB7IERlc3RpbmF0aW9uOjpFbXB0eVN0cmlu
ZyB9OwotCiAgICAgZW51bSBjbGFzcyBNb2RlIHsgTmF2aWdhdGUsIFNhbWVPcmlnaW4sIE5vQ29y
cywgQ29ycyB9OwotICAgIE1vZGUgbW9kZSB7IE1vZGU6Ok5vQ29ycyB9OwotCiAgICAgZW51bSBj
bGFzcyBDcmVkZW50aWFscyB7IE9taXQsIFNhbWVPcmlnaW4sIEluY2x1ZGUgfTsKLSAgICBDcmVk
ZW50aWFscyBjcmVkZW50aWFscyB7IENyZWRlbnRpYWxzOjpPbWl0IH07Ci0KICAgICBlbnVtIGNs
YXNzIENhY2hlIHsgRGVmYXVsdCwgTm9TdG9yZSwgUmVsb2FkLCBOb0NhY2hlLCBGb3JjZUNhY2hl
LCBPbmx5SWZDYWNoZWQgfTsKLSAgICBDYWNoZSBjYWNoZSB7IENhY2hlOjpEZWZhdWx0IH07Ci0K
ICAgICBlbnVtIGNsYXNzIFJlZGlyZWN0IHsgRm9sbG93LCBFcnJvciwgTWFudWFsIH07Ci0gICAg
UmVkaXJlY3QgcmVkaXJlY3QgeyBSZWRpcmVjdDo6Rm9sbG93IH07CiAKLSAgICBSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyB9OworICAg
IEZldGNoT3B0aW9ucygpID0gZGVmYXVsdDsKKyAgICBGZXRjaE9wdGlvbnMoVHlwZSwgRGVzdGlu
YXRpb24sIE1vZGUsIENyZWRlbnRpYWxzLCBDYWNoZSwgUmVkaXJlY3QsIFJlZmVycmVyUG9saWN5
LCBTdHJpbmcmJiwgYm9vbCk7CisgICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgdHlwZSwgZGVzdGluYXRpb24sIG1vZGUsIGNyZWRlbnRpYWxzLCBjYWNoZSwg
cmVkaXJlY3QsIHJlZmVycmVyUG9saWN5LCBpbnRlZ3JpdHkuaXNvbGF0ZWRDb3B5KCksIGtlZXBB
bGl2ZSB9OyB9CiAKKyAgICBUeXBlIHR5cGUgeyBUeXBlOjpFbXB0eVN0cmluZyB9OworICAgIERl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uIHsgRGVzdGluYXRpb246OkVtcHR5U3RyaW5nIH07CisgICAg
TW9kZSBtb2RlIHsgTW9kZTo6Tm9Db3JzIH07CisgICAgQ3JlZGVudGlhbHMgY3JlZGVudGlhbHMg
eyBDcmVkZW50aWFsczo6T21pdCB9OworICAgIENhY2hlIGNhY2hlIHsgQ2FjaGU6OkRlZmF1bHQg
fTsKKyAgICBSZWRpcmVjdCByZWRpcmVjdCB7IFJlZGlyZWN0OjpGb2xsb3cgfTsKKyAgICBSZWZl
cnJlclBvbGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyB9
OwogICAgIFN0cmluZyBpbnRlZ3JpdHk7Ci0KICAgICBib29sIGtlZXBBbGl2ZSB7IGZhbHNlIH07
CiB9OwogCitpbmxpbmUgRmV0Y2hPcHRpb25zOjpGZXRjaE9wdGlvbnMoVHlwZSB0eXBlLCBEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbiwgTW9kZSBtb2RlLCBDcmVkZW50aWFscyBjcmVkZW50aWFscywg
Q2FjaGUgY2FjaGUsIFJlZGlyZWN0IHJlZGlyZWN0LCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSwgU3RyaW5nJiYgaW50ZWdyaXR5LCBib29sIGtlZXBBbGl2ZSkKKyAgICA6IHR5cGUodHlw
ZSkKKyAgICAsIGRlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbW9kZShtb2RlKQorICAg
ICwgY3JlZGVudGlhbHMoY3JlZGVudGlhbHMpCisgICAgLCBjYWNoZShjYWNoZSkKKyAgICAsIHJl
ZGlyZWN0KHJlZGlyZWN0KQorICAgICwgcmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3kpCisg
ICAgLCBpbnRlZ3JpdHkoV1RGTW92ZShpbnRlZ3JpdHkpKQorICAgICwga2VlcEFsaXZlKGtlZXBB
bGl2ZSkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxODBmODhlNjk1ODdlMGEwNDNmYTY2
NTBiMDNhNjIwMTRkYjk5NTJhLi5kOWFkNTlhMjVmZWIwMzk5MjFmZDI0YzE5MzIzMWIyY2U0ZjY5
YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtMzg2LDQgKzM4NiwxMSBAQCBQZXJmb3JtYW5jZSYgV29ya2VyR2xvYmFsU2NvcGU6OnBlcmZv
cm1hbmNlKCkgY29uc3QKICAgICByZXR1cm4gKm1fcGVyZm9ybWFuY2U7CiB9CiAKK0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpjYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KCkKK3sKKyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uID0gV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRl
KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oCmluZGV4IGM1YjBkNTJhYjRjYWNkNjFhMmI5OTQzNGY3NzgzYWVlZTU4MjIzOTMuLjA0
OTFkN2M0ZmRkMDU2N2UxZjI3YTIxYjQ4ZWU2Zjc1NTY3MjhmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTI3LDExICsyNywxMyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgog
I2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuaD4KQEAgLTY2LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3Rv
cEluZGV4ZWREYXRhYmFzZSgpOwogI2VuZGlmCiAKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
JiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVy
KiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJTY3Jp
cHQoKSB7IG1fc2NyaXB0ID0gbnVsbHB0cjsgfQogCkBAIC0xODMsNiArMTg3LDcgQEAgcHJpdmF0
ZToKICAgICBtdXRhYmxlIFJlZlB0cjxDcnlwdG8+IG1fY3J5cHRvOwogCiAgICAgU2Vzc2lvbklE
IG1fc2Vzc2lvbklEOworICAgIFJlZlB0cjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBt
X2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318288</attachid>
            <date>2017-08-16 14:23:13 -0700</date>
            <delta_ts>2017-08-16 14:27:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175599-20170816142312.patch</filename>
            <type>text/plain</type>
            <size>37555</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk3Y2EzNzY4NGFmZTU4
NzZiYmM3ZGU4ZGUxYzljZmY4M2U0MTY1Zi4uZWM2N2MzMjVlOTk3NjBlMDU3ODU4OTRhYmViOTc1
NWZlZmM0ZDlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA4LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBJbXBs
ZW1lbnQgV29ya2VyIGNvbm5lY3Rpb24gdG8gdGhlIENhY2hlIHN0b3JhZ2UgZW5naW5lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgIEFkZGluZyBhIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gdG8gY29ubmVjdCB3b3JrZXJzIENhY2hlL0NhY2hlU3RvcmFnZQorICAgICAgICB0byB0
aGUgY2FjaGUgc3RvcmFnZSBlbmdpbmUuCisgICAgICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gZG9lcyB0aGlzIGJ5IGhvcHBpbmcgdG8gdGhlIG1haW4gdGhyZWFkIHRvIGNhbGwgdGhl
IGRvY3VtZW50IGNhY2hlIHN0b3JhZ2UgY29ubmVjdGlvbiB0byBkbyB0aGUgYWN0dWFsIGpvYi4K
KyAgICAgICAgRG9pbmcgc29tZSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIHJlZmFjdG9yaW5nIHRv
IHNoYXJlIGNvZGUgd2l0aCBXSzIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhY2hlIHN0b3JhZ2Ug
Y29ubmVjdGlvbi4gCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW5PclJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjp1cGRhdGVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmVSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3Bl
cmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3Jvc3NUaHJlYWRSZWNvcmRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b0JhdGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlczo6Y2FjaGVzIGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaDoKKwogMjAxNy0wOC0xNiAgRnVqaWkgSGlyb25vcmkgIDxIaXJv
bm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbSGFyZkJ1enpdIERlY29tcG9zZWQgVmll
dG5hbWVzZSBjaGFyYWN0ZXJzIGFyZSByZW5kZXJlZCBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAwNjdkZDdkNGM4NDBmNGQ3YTVhZGQ2NjNlNTJiNWQ1MzQ0YTk5OTRlLi40Yzdh
ZTkwOWJlM2M0MWZlOTRlNzg4MmZhMGU5ZmYwMGE3N2I4OGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtODk4LDYgKzg5OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZS5jcHAKICAgICBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCiAgICAgTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisgICAgTW9k
dWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAogICAgIE1vZHVsZXMv
Y2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCiAKICAgICBNb2R1bGVzL2NyZWRlbnRp
YWxzL0Jhc2ljQ3JlZGVudGlhbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVRdWVyeU9wdGlvbnMuaAppbmRleCA2OGY2N2ZhY2YzNTY4NzFlZWY0ZTU1NDY5NThi
NzI3YTY1OTM2OTNiLi43NDI3YjhkYmIwN2YwNjgwNWQ2YjE0NmZjMDg5NTg2Y2JiN2YyNmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5o
CkBAIC0zMCwxMCArMzAsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENhY2hl
UXVlcnlPcHRpb25zIHsKKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucygpID0gZGVmYXVsdDsKKyAgICBD
YWNoZVF1ZXJ5T3B0aW9ucyhib29sIGlnbm9yZVNlYXJjaCwgYm9vbCBpZ25vcmVNZXRob2QsIGJv
b2wgaWdub3JlVmFyeSwgU3RyaW5nIGNhY2hlTmFtZSk7CisgICAgQ2FjaGVRdWVyeU9wdGlvbnMg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhv
ZCwgaWdub3JlVmFyeSwgY2FjaGVOYW1lLmlzb2xhdGVkQ29weSgpIH07IH0KKwogICAgIGJvb2wg
aWdub3JlU2VhcmNoIHsgZmFsc2UgfTsKICAgICBib29sIGlnbm9yZU1ldGhvZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBpZ25vcmVWYXJ5IHsgZmFsc2UgfTsKICAgICBTdHJpbmcgY2FjaGVOYW1lOwog
fTsKIAoraW5saW5lIENhY2hlUXVlcnlPcHRpb25zOjpDYWNoZVF1ZXJ5T3B0aW9ucyhib29sIGln
bm9yZVNlYXJjaCwgYm9vbCBpZ25vcmVNZXRob2QsIGJvb2wgaWdub3JlVmFyeSwgU3RyaW5nIGNh
Y2hlTmFtZSkKKyAgICA6IGlnbm9yZVNlYXJjaChpZ25vcmVTZWFyY2gpCisgICAgLCBpZ25vcmVN
ZXRob2QoaWdub3JlTWV0aG9kKQorICAgICwgaWdub3JlVmFyeShpZ25vcmVWYXJ5KQorICAgICwg
Y2FjaGVOYW1lKGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKSkKK3sKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjQ0ZjllNDE3ZDQzY2FlZjNiMjI5MzllMzIz
MmQ5ZmFkYWM1ZDBiMS4uNTNmMGI2NTcxMzAwZmVkOGZiMGQ1MjcyYzQ3MmY5ZWVjZjg0MzE5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCkBAIC03OCw1ICs3OCw4MiBAQCBib29sIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bgogICAgIHJldHVybiB0cnVlOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit2b2lkIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgY2FjaGVOYW1lLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7Cisg
ICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlm
aWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBkb09wZW4ocmVxdWVzdElkZW50aWZpZXIs
IG9yaWdpbiwgY2FjaGVOYW1lKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpy
ZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVz
dElkZW50aWZpZXI7CisgICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRk
KHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBkb1JlbW92ZShy
ZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKK30KKwordm9pZCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9
ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdS
ZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAg
IGRvUmV0cmlldmVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7Cit9CisKK3ZvaWQg
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fcmV0cmll
dmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjaykpOworCisgICAgZG9SZXRyaWV2ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hE
ZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0
aW9ucywgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX2Jh
dGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RG
TW92ZShjYWxsYmFjaykpOworCisgICAgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbihyZXF1ZXN0SWRl
bnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMpKTsKK30K
IAordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpSZWNvcmQ+JiYgcmVjb3JkcywgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQor
eworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRp
ZmllcjsKKyAgICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0
SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgZG9CYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpKTsK
K30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuT3JSZW1vdmVDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJy
b3IgZXJyb3IpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX29wZW5BbmRSZW1vdmVDYWNo
ZVBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgY2FsbGJh
Y2soY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6dXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8Q2Fj
aGVJbmZvPiYmIGNhY2hlcykKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcmV0cmlldmVD
YWNoZXNQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY2FjaGVzKSk7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6dXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFJlY29y
ZD4mJiByZWNvcmRzKQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9yZXRyaWV2ZVJlY29y
ZHNQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUocmVjb3JkcykpOworfQorCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rv
cjx1aW50NjRfdD4mJiByZWNvcmRzLCBFcnJvciBlcnJvcikKK3sKKyAgICBpZiAoYXV0byBjYWxs
YmFjayA9IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRl
bnRpZmllcikpCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKK30K
Kwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3Ig
ZXJyb3IpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2JhdGNoRGVsZXRlQW5kUHV0UGVu
ZGluZ1JlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmgKaW5kZXggMjNlZDNlNTg4YTgzZDUyZjhjYjYwNGUzZTc0MWZhNWMyMDhmYjRiOC4uMmJm
NjllNWFjNWQyMmJhMmQwYTQ5YmE4OGQ1NDBkMzdmMzdlYTI5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNjgsMjAgKzY5LDQ2IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgdXNpbmcgT3BlblJlbW92ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90
LCBFcnJvcik+OwotICAgIHVzaW5nIENhY2hlTWFwQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoVmVjdG9yPENhY2hlSW5mbz4mJik+OworICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RG
OjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxDYWNoZUluZm8+JiYpPjsKICAgICB1c2luZyBSZWNvcmRz
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlY29yZD4mJik+OwogICAgIHVz
aW5nIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPHVp
bnQ2NF90PiYmLCBFcnJvcik+OwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5n
JiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyogY2FjaGVOYW1lICovLCBPcGVuUmVtb3Zl
Q2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjaygwLCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIg
Ki8sIE9wZW5SZW1vdmVDYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKDAsIEVycm9yOjpO
b3RJbXBsZW1lbnRlZCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3Qg
U3RyaW5nJiAvKiBvcmlnaW4gKi8sIENhY2hlTWFwQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxs
YmFjayh7IH0pOyB9CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBj
b25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLywgT3BlblJlbW92ZUNhbGxiYWNrJiYpOworICAg
IHZvaWQgcmVtb3ZlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgT3BlblJlbW92ZUNh
bGxiYWNrJiYpOworICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiAvKiBvcmln
aW4gKi8sIENhY2hlc0NhbGxiYWNrJiYpOwogCi0gICAgdmlydHVhbCB2b2lkIHJldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFJlY29yZHNDYWxsYmFjayYmIGNh
bGxiYWNrKSB7IGNhbGxiYWNrKHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYmF0Y2hEZWxldGVP
cGVyYXRpb24odWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrJiYgY2Fs
bGJhY2spIHsgY2FsbGJhY2soeyB9LCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAq
LywgVmVjdG9yPFJlY29yZD4mJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7
IGNhbGxiYWNrKHsgfSwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZvaWQgcmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgUmVjb3Jkc0NhbGxiYWNr
JiYpOworICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgLyogY2FjaGVJZGVu
dGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBC
YXRjaE9wZXJhdGlvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWlu
dDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBWZWN0b3I8UmVjb3JkPiYmLCBCYXRjaE9wZXJh
dGlvbkNhbGxiYWNrJiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bigpID0gIGRlZmF1bHQ7CisKKyAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0X3QgaWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgeyBvcGVuT3JSZW1v
dmVDb21wbGV0ZWQoaWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7IH0KKyAgICB2
b2lkIHJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIEVycm9yIGVycm9yKSB7IG9wZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXIsIGVycm9yKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8Q2FjaGVJbmZvPiYm
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0
b3I8dWludDY0X3Q+JiYsIEVycm9yKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFJlY29y
ZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4m
JiwgRXJyb3IpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBkb09wZW4odWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJp
bmcmIC8qIGNhY2hlTmFtZSAqLykgeyBvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCAw
LCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmlydHVhbCB2b2lkIGRvUmVtb3ZlKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8p
IHsgcmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCAwLCBFcnJvcjo6Tm90SW1wbGVt
ZW50ZWQpOyB9CisgICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovKSB7IHVwZGF0ZUNhY2hl
cyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQorCisgICAgdmlydHVhbCB2b2lkIGRvUmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlk
ZW50aWZpZXIgKi8pIHsgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYpIHsgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChy
ZXF1ZXN0SWRlbnRpZmllciwgeyB9LCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPFJlY29yZD4mJikgeyBwdXRS
ZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0sIEVycm9yOjpOb3RJbXBsZW1l
bnRlZCk7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3Blbk9yUmVtb3ZlQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVy
cm9yKTsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIE9wZW5SZW1vdmVDYWxsYmFjaz4gbV9vcGVu
QW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ2Fj
aGVzQ2FsbGJhY2s+IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVjb3Jkc0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1
ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrPiBtX2Jh
dGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzOworCisgICAgdWludDY0X3QgbV9sYXN0UmVx
dWVzdElkZW50aWZpZXIgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWM5ZmFkMWY1MzIyMDUxYWRiYWQ0N2Zk
ZTNkZTc1MGUxYTBkNWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDIyMiBA
QAorCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNhY2hlUXVlcnlPcHRpb25zLmgi
CisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2lu
Y2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgor
I2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBDcm9zc1RocmVhZFJlY29yZERhdGEgeworICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CisKKyAg
ICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7CisgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3Q7CisKKyAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKKyAgICBTdHJpbmcg
cmVmZXJyZXI7CisKKyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlc3BvbnNlSGVhZGVyc0d1YXJk
OworICAgIFJlc291cmNlUmVzcG9uc2U6OkNyb3NzVGhyZWFkRGF0YSByZXNwb25zZTsKK307CisK
K3N0YXRpYyBDcm9zc1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1RocmVhZFJlY29yZERhdGEoY29u
c3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkJiByZWNvcmQpCit7CisgICAgcmV0dXJu
IENyb3NzVGhyZWFkUmVjb3JkRGF0YSB7CisgICAgICAgIHJlY29yZC5pZGVudGlmaWVyLAorICAg
ICAgICByZWNvcmQucmVxdWVzdEhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJlcXVlc3Qu
aXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlY29yZC5vcHRpb25zLmlzb2xhdGVkQ29weSgpLAor
ICAgICAgICByZWNvcmQucmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlY29yZC5y
ZXNwb25zZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJlc3BvbnNlLmNyb3NzVGhyZWFk
RGF0YSgpCisgICAgfTsKK30KKworc3RhdGljIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29y
ZCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKENyb3NzVGhyZWFkUmVjb3JkRGF0YSYmIGRhdGEp
Cit7CisgICAgcmV0dXJuIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB7CisgICAgICAg
IGRhdGEuaWRlbnRpZmllciwKKyAgICAgICAgZGF0YS5yZXF1ZXN0SGVhZGVyc0d1YXJkLAorICAg
ICAgICBXVEZNb3ZlKGRhdGEucmVxdWVzdCksCisgICAgICAgIFdURk1vdmUoZGF0YS5vcHRpb25z
KSwKKyAgICAgICAgV1RGTW92ZShkYXRhLnJlZmVycmVyKSwKKyAgICAgICAgZGF0YS5yZXNwb25z
ZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNyb3NzVGhyZWFk
RGF0YShXVEZNb3ZlKGRhdGEucmVzcG9uc2UpKQorICAgIH07Cit9CisKK1JlZjxXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGUo
V29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IGFkb3B0
UmVmKCpuZXcgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihzY29wZSkpOworICAgIGNvbm5l
Y3Rpb24tPm1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbcHJvdGVjdGVkQ29ubmVjdGlvbiA9IG1h
a2VSZWYoY29ubmVjdGlvbi5nZXQoKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CisKKyAgICAgICAg
QVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CisgICAgICAgIHByb3RlY3RlZENvbm5lY3Rpb24tPm1f
bWFpblRocmVhZENvbm5lY3Rpb24gPSBkb2N1bWVudC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3Zp
ZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihkb2N1bWVudC5wYWdlKCktPnNlc3Np
b25JRCgpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29ubmVjdGlvbjsKK30KKworV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihXb3JrZXJH
bG9iYWxTY29wZSYgc2NvcGUpCisgICAgOiBtX3Njb3BlKHNjb3BlKQorICAgICwgbV9wcm94eSht
X3Njb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkpCisgICAgLCBtX3Rhc2tNb2RlKFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpCit7Cit9CisKK1dvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246On5Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkK
K3sKKyAgICBpZiAobV9tYWluVGhyZWFkQ29ubmVjdGlvbikKKyAgICAgICAgbV9wcm94eS5wb3N0
VGFza1RvTG9hZGVyKFttYWluVGhyZWFkQ29ubmVjdGlvbiA9IFdURk1vdmUobV9tYWluVGhyZWFk
Q29ubmVjdGlvbildKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsgfSk7Cit9CisK
K3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5h
bWUpCit7CisgICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNv
bGF0ZWRDb3B5KCksIGNhY2hlTmFtZSA9IGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAg
bV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0o
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
ICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIGVy
cm9yLCBjYWNoZUlkZW50aWZpZXIsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICAgICAgb3BlbkNvbXBsZXRlZChy
ZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgICAgICB9
LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZp
ZXIsIGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhy
ZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVtb3Zl
KGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXSh1aW50NjRfdCByZW1v
dmVkQ2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlbW92ZWRDYWNoZUlkZW50aWZpZXIsIHJlbW92ZWRDYWNoZUlkZW50aWZp
ZXIgPT0gY2FjaGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIGVycm9yXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
KyAgICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIGNhY2hl
SWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAgICAg
IH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRv
UmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luKQoreworICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3JpZ2lu
Lmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRD
b25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2ZUNh
Y2hlcyhvcmlnaW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IFZlY3RvcjxDYWNoZUluZm8+JiBjYWNoZXMpIG11
dGFibGUgeworICAgICAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gaXNvbGF0ZWRDYWNoZXM7Cisg
ICAgICAgICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hlcy5z
aXplKCkpOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYWNoZSA6IGNhY2hlcykKKyAg
ICAgICAgICAgICAgICBpc29sYXRlZENhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsg
Y2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZS5pc29sYXRlZENvcHkoKSB9KTsKKworICAgICAg
ICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FjaGVzID0gV1RGTW92ZShp
c29sYXRlZENhY2hlcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICB1cGRh
dGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FjaGVzKSk7CisgICAgICAgICAg
ICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhj
b25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYgcmVjb3JkcykKK3sK
KyAgICBWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiByZWNvcmRzRGF0YTsKKyAgICByZWNv
cmRzRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCisgICAgICAgIHJlY29yZHNEYXRhLnVuY2hl
Y2tlZEFwcGVuZCh0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YShyZWNvcmQpKTsKKyAgICByZXR1cm4g
cmVjb3Jkc0RhdGE7Cit9CisKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OlJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NUaHJlYWRS
ZWNvcmREYXRhPiYmIHJlY29yZHNEYXRhKQoreworICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpSZWNvcmQ+IHJlY29yZHM7CisgICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHJlY29yZHNEYXRhLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmREYXRhIDogcmVj
b3Jkc0RhdGEpCisgICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKGZyb21Dcm9zc1RocmVh
ZFJlY29yZERhdGEoV1RGTW92ZShyZWNvcmREYXRhKSkpOworICAgIHJldHVybiByZWNvcmRzOwor
fQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit7
CisgICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAgICAgQVNTRVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOworCisgICAgICAgIG1f
bWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50
aWZpZXJdKFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykgbXV0YWJsZSB7CisgICAgICAgICAgICBt
X3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzRGF0YSA9IHJlY29yZHNEYXRh
RnJvbVJlY29yZHMocmVjb3JkcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAg
ICB1cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZWNvcmRzRnJvbVJlY29yZHNEYXRh
KFdURk1vdmUocmVjb3Jkc0RhdGEpKSk7CisgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENh
Y2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucykKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZp
ZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9w
dGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
bXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VS
VChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0
aW9uLT5iYXRjaERlbGV0ZU9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIFdURk1v
dmUob3B0aW9ucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgcmVxdWVzdElkZW50aWZpZXJdKFZlY3Rvcjx1aW50NjRfdD4mJiByZWNvcmRzLCBFcnJvciBl
cnJvcikgbXV0YWJsZSB7CisKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvciwgcmVxdWVzdElkZW50aWZp
ZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpOworICAgICAgICAgICAgICAgIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKKyAgICAgICAgICAgIH0sIG1fdGFza01v
ZGUpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykKK3sK
KyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkc0Rh
dGEgPSByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJlY29yZHMpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAg
IEFTU0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRD
b25uZWN0aW9uLT5iYXRjaFB1dE9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlY29yZHNGcm9t
UmVjb3Jkc0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YSkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8dWludDY0
X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpIG11dGFibGUgeworCisgICAgICAgICAgICBtX3By
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwg
ZXJyb3IsIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICBwdXRSZWNvcmRzQ29t
cGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7CisgICAg
ICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY0OGFm
MmZiZTE4MTU0ZWY1MDJiMmY5MjQyYTg0YzEzYTMwNWUyNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
CkBAIC0wLDAgKzEsNjAgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CisKK2NsYXNz
IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICB+V29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oV29ya2VyR2xvYmFsU2NvcGUmKTsKKworICAgIC8vIFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24KKyAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyog
Y2FjaGVOYW1lICovKSBmaW5hbDsKKyAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIGZpbmFsOworICAgIHZv
aWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiAvKiBvcmlnaW4gKi8pIGZpbmFsOworCisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5h
bDsKKyAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CisgICAgdm9pZCBk
b0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYpIGZpbmFsOworCisgICAgV29ya2VyR2xv
YmFsU2NvcGUmIG1fc2NvcGU7CisgICAgV29ya2VyTG9hZGVyUHJveHkmIG1fcHJveHk7CisgICAg
U3RyaW5nIG1fdGFza01vZGU7CisKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4g
bV9tYWluVGhyZWFkQ29ubmVjdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVD
YWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29w
ZUNhY2hlcy5jcHAKaW5kZXggYzUzOWNkZTYzYjRiNGQyNzcxYzY5Y2ZmN2Q1OWI3ZjEyNTg1Yjgx
OS4uYzhlNGZkYzFmNTk2MzBjYTRmZDVlNWJiYTM1NDFjYzQ5YTI4Yzc2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hl
cy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgQ2FjaGVTdG9yYWdlKiBXb3JrZXJHbG9iYWxTY29wZUNh
Y2hlczo6Y2FjaGVzKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKIENhY2hlU3RvcmFnZSogV29y
a2VyR2xvYmFsU2NvcGVDYWNoZXM6OmNhY2hlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhY2hl
cykKLSAgICAgICAgbV9jYWNoZXMgPSBDYWNoZVN0b3JhZ2U6OmNyZWF0ZShtX3Njb3BlLCBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgIG1fY2FjaGVzID0gQ2FjaGVT
dG9yYWdlOjpjcmVhdGUobV9zY29wZSwgbV9zY29wZS5jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkp
OwogICAgIHJldHVybiBtX2NhY2hlcy5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmMmFlZjAxZWU4NDRkZjAz
ZjFlZjQwNDljMDc4NTM0Njc1MTM1NzEuLjJhY2IxMjA0OTQ4ZmIwMDlkYmUxYmM4MGYyMjQyMWQw
ZDY4MGRhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE3NzIsNiArMTc3Miw4IEBACiAJCTQxQTFCMDFEMUU1NDIzOUUwMDdG
Mzc2OSAvKiBKU0RPTUd1YXJkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBMUIwMUIxRTU0MjM5NjAwN0YzNzY5IC8qIEpTRE9NR3Vh
cmRlZE9iamVjdC5jcHAgKi87IH07CiAJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFBM0Q1OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAgKi87IH07CiAJCTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCAq
LzsgfTsKKwkJNDFBN0QzNTIxRjQzOEQxNjAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFBN0QzNEYxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwICovOyB9OworCQk0MUE3RDM1MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFBN0QzNTAxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaCAqLzsgfTsKIAkJNDFBQkU2N0IxRDA1ODBEQjAwNkQ4NjJEIC8qIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFBQkU2N0ExRDA1ODBENTAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5oICovOyB9OwogCQk0MUFCRTY3QzFEMDU4MEUwMDA2RDg2MkQgLyogQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxQUJFNjc5MUQwNTgwRDUwMDZEODYyRCAvKiBDcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIuY3BwICovOyB9OwogCQk0MUFENzUzQTFDRUY2QkQxMDBBMzE0ODYgLyog
RmV0Y2hPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUFENzUzOTFDRUY2QkNFMDBBMzE0ODYgLyogRmV0Y2hPcHRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0NDUsNiArOTQ0Nyw4
IEBACiAJCTQxQTQ4QTlEMUU4MzEyRUIwMEQyQUMyRCAvKiBSVENQZWVyQ29ubmVjdGlvblN0YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1BlZXJDb25uZWN0aW9uU3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBNDhBQTcxRTg0QUVFQzAwRDJB
QzJEIC8qIFJUQ1J0cFBhcmFtZXRlcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0
cFBhcmFtZXRlcnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUE0OEFBODFF
ODRBRjFEMDBEMkFDMkQgLyogUlRDUnRwUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSVENSdHBQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxQTdEMzRGMUY0MzhEMTAwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUE3RDM1MDFGNDM4RDEwMDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQUJFNjc5MUQwNTgwRDUw
MDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBQkU2N0ExRDA1ODBENTAwNkQ4NjJEIC8q
IENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8qIEZldGNoT3B0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaE9wdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjcyLDYgKzE3Njc2LDggQEAKIAkJCQk0MUZCMjc4RTFG
MzRDMjgyMDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmNwcCAqLywKIAkJCQk0MUZCMjc4QzFG
MzRDMjgyMDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmggKi8sCiAJCQkJNDEzODBDMkIxRjM0
M0UyRjAwMTU1RkRBIC8qIERPTVdpbmRvd0NhY2hlcy5pZGwgKi8sCisJCQkJNDFBN0QzNEYxRjQz
OEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovLAorCQkJ
CTQxQTdEMzUwMUY0MzhEMTAwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmggKi8sCiAJCQkJNDFGQjI3OEYxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3Bl
Q2FjaGVzLmNwcCAqLywKIAkJCQk0MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMuaCAqLywKIAkJCQk0MTM4MEMyQTFGMzQzRTJGMDAxNTVGREEgLyogV29y
a2VyR2xvYmFsU2NvcGVDYWNoZXMuaWRsICovLApAQCAtMzAyNjEsNiArMzAyNjcsNyBAQAogCQkJ
CUExNDgzMkM2MTg3RjY2OEYwMERBNjNBNiAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQxQTdEMzUzMUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTJBNjg2MjFEQkIwRjYzMDA4
MzM3M0YgLyogV29ya2VyQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTU2MzlE
MTFDNkYwOUUzMDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTUyQTY4NjYxREJENEI1RDAwODMzNzNGIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMzM5NzUsNiArMzM5ODIsNyBAQAogCQkJCUExNDgzMkM1MTg3RjY2
ODMwMERBNjNBNiAvKiBXS1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzk5MTk5NjEyMDBE
REY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0
MzQ2NDUwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
MUE3RDM1MjFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTJBNjg2MTFEQkIwRjYzMDA4MzM3M0YgLyogV29ya2Vy
Q29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1NTYzOUQyMUM2RjA5RTcwMDgw
NkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MkE2
ODY1MURCRDRCNUQwMDgzMzczRiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCmluZGV4IDdlMWE4MzczOGQyMzk3
ZjI0ZDcyNGNkMDEyNjY2N2ZhNjA0ZTE4YjguLmIxNzM3MjNiZDdmN2EwZWM1NDc2NzFiYTAxZmQw
OTRmMjRiOWY3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKQEAgLTM1LDI4
ICszNSwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBGZXRjaE9wdGlvbnMgewog
ICAgIGVudW0gY2xhc3MgVHlwZSB7IEVtcHR5U3RyaW5nLCBBdWRpbywgRm9udCwgSW1hZ2UsIFNj
cmlwdCwgU3R5bGUsIFRyYWNrLCBWaWRlbyB9OwotICAgIFR5cGUgdHlwZSB7IFR5cGU6OkVtcHR5
U3RyaW5nIH07Ci0KICAgICBlbnVtIGNsYXNzIERlc3RpbmF0aW9uIHsgRW1wdHlTdHJpbmcsIERv
Y3VtZW50LCBTaGFyZWR3b3JrZXIsIFN1YnJlc291cmNlLCBVbmtub3duLCBXb3JrZXIgfTsKLSAg
ICBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiB7IERlc3RpbmF0aW9uOjpFbXB0eVN0cmluZyB9Owot
CiAgICAgZW51bSBjbGFzcyBNb2RlIHsgTmF2aWdhdGUsIFNhbWVPcmlnaW4sIE5vQ29ycywgQ29y
cyB9OwotICAgIE1vZGUgbW9kZSB7IE1vZGU6Ok5vQ29ycyB9OwotCiAgICAgZW51bSBjbGFzcyBD
cmVkZW50aWFscyB7IE9taXQsIFNhbWVPcmlnaW4sIEluY2x1ZGUgfTsKLSAgICBDcmVkZW50aWFs
cyBjcmVkZW50aWFscyB7IENyZWRlbnRpYWxzOjpPbWl0IH07Ci0KICAgICBlbnVtIGNsYXNzIENh
Y2hlIHsgRGVmYXVsdCwgTm9TdG9yZSwgUmVsb2FkLCBOb0NhY2hlLCBGb3JjZUNhY2hlLCBPbmx5
SWZDYWNoZWQgfTsKLSAgICBDYWNoZSBjYWNoZSB7IENhY2hlOjpEZWZhdWx0IH07Ci0KICAgICBl
bnVtIGNsYXNzIFJlZGlyZWN0IHsgRm9sbG93LCBFcnJvciwgTWFudWFsIH07Ci0gICAgUmVkaXJl
Y3QgcmVkaXJlY3QgeyBSZWRpcmVjdDo6Rm9sbG93IH07CiAKLSAgICBSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyB9OworICAgIEZldGNo
T3B0aW9ucygpID0gZGVmYXVsdDsKKyAgICBGZXRjaE9wdGlvbnMoVHlwZSwgRGVzdGluYXRpb24s
IE1vZGUsIENyZWRlbnRpYWxzLCBDYWNoZSwgUmVkaXJlY3QsIFJlZmVycmVyUG9saWN5LCBTdHJp
bmcmJiwgYm9vbCk7CisgICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgdHlwZSwgZGVzdGluYXRpb24sIG1vZGUsIGNyZWRlbnRpYWxzLCBjYWNoZSwgcmVkaXJl
Y3QsIHJlZmVycmVyUG9saWN5LCBpbnRlZ3JpdHkuaXNvbGF0ZWRDb3B5KCksIGtlZXBBbGl2ZSB9
OyB9CiAKKyAgICBUeXBlIHR5cGUgeyBUeXBlOjpFbXB0eVN0cmluZyB9OworICAgIERlc3RpbmF0
aW9uIGRlc3RpbmF0aW9uIHsgRGVzdGluYXRpb246OkVtcHR5U3RyaW5nIH07CisgICAgTW9kZSBt
b2RlIHsgTW9kZTo6Tm9Db3JzIH07CisgICAgQ3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBDcmVk
ZW50aWFsczo6T21pdCB9OworICAgIENhY2hlIGNhY2hlIHsgQ2FjaGU6OkRlZmF1bHQgfTsKKyAg
ICBSZWRpcmVjdCByZWRpcmVjdCB7IFJlZGlyZWN0OjpGb2xsb3cgfTsKKyAgICBSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyB9OwogICAg
IFN0cmluZyBpbnRlZ3JpdHk7Ci0KICAgICBib29sIGtlZXBBbGl2ZSB7IGZhbHNlIH07CiB9Owog
CitpbmxpbmUgRmV0Y2hPcHRpb25zOjpGZXRjaE9wdGlvbnMoVHlwZSB0eXBlLCBEZXN0aW5hdGlv
biBkZXN0aW5hdGlvbiwgTW9kZSBtb2RlLCBDcmVkZW50aWFscyBjcmVkZW50aWFscywgQ2FjaGUg
Y2FjaGUsIFJlZGlyZWN0IHJlZGlyZWN0LCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwg
U3RyaW5nJiYgaW50ZWdyaXR5LCBib29sIGtlZXBBbGl2ZSkKKyAgICA6IHR5cGUodHlwZSkKKyAg
ICAsIGRlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbW9kZShtb2RlKQorICAgICwgY3Jl
ZGVudGlhbHMoY3JlZGVudGlhbHMpCisgICAgLCBjYWNoZShjYWNoZSkKKyAgICAsIHJlZGlyZWN0
KHJlZGlyZWN0KQorICAgICwgcmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3kpCisgICAgLCBp
bnRlZ3JpdHkoV1RGTW92ZShpbnRlZ3JpdHkpKQorICAgICwga2VlcEFsaXZlKGtlZXBBbGl2ZSkK
K3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxODBmODhlNjk1ODdlMGEwNDNmYTY2NTBiMDNh
NjIwMTRkYjk5NTJhLi5kOWFkNTlhMjVmZWIwMzk5MjFmZDI0YzE5MzIzMWIyY2U0ZjY5YTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzg2
LDQgKzM4NiwxMSBAQCBQZXJmb3JtYW5jZSYgV29ya2VyR2xvYmFsU2NvcGU6OnBlcmZvcm1hbmNl
KCkgY29uc3QKICAgICByZXR1cm4gKm1fcGVyZm9ybWFuY2U7CiB9CiAKK0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK3sK
KyAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKKyAgICAgICAgbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uID0gV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKCp0aGlz
KTsKKyAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CmluZGV4IGM1YjBkNTJhYjRjYWNkNjFhMmI5OTQzNGY3NzgzYWVlZTU4MjIzOTMuLjA0OTFkN2M0
ZmRkMDU2N2UxZjI3YTIxYjQ4ZWU2Zjc1NTY3MjhmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTI3LDExICsyNywxMyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1
ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaD4KQEAgLTY2LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcEluZGV4
ZWREYXRhYmFzZSgpOwogI2VuZGlmCiAKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uJiBjYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3Jp
cHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJTY3JpcHQoKSB7
IG1fc2NyaXB0ID0gbnVsbHB0cjsgfQogCkBAIC0xODMsNiArMTg3LDcgQEAgcHJpdmF0ZToKICAg
ICBtdXRhYmxlIFJlZlB0cjxDcnlwdG8+IG1fY3J5cHRvOwogCiAgICAgU2Vzc2lvbklEIG1fc2Vz
c2lvbklEOworICAgIFJlZlB0cjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hl
U3RvcmFnZUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318289</attachid>
            <date>2017-08-16 14:27:04 -0700</date>
            <delta_ts>2017-08-16 15:09:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175599-20170816142704.patch</filename>
            <type>text/plain</type>
            <size>38604</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk3Y2EzNzY4NGFmZTU4
NzZiYmM3ZGU4ZGUxYzljZmY4M2U0MTY1Zi4uMTU4YzE4YWFiMmY0YWU5YWRlMDNiMDUxNDM3MWE5
YTAyNGQ1MTA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA4LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBJbXBs
ZW1lbnQgV29ya2VyIGNvbm5lY3Rpb24gdG8gdGhlIENhY2hlIHN0b3JhZ2UgZW5naW5lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgIEFkZGluZyBhIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24gdG8gY29ubmVjdCB3b3JrZXJzIENhY2hlL0NhY2hlU3RvcmFnZQorICAgICAgICB0byB0aGUg
Y2FjaGUgc3RvcmFnZSBlbmdpbmUuCisgICAgICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24gZG9lcyB0aGlzIGJ5IGhvcHBpbmcgdG8gdGhlIG1haW4gdGhyZWFkIHRvIGNhbGwgdGhlIGRv
Y3VtZW50IGNhY2hlIHN0b3JhZ2UgY29ubmVjdGlvbiB0byBkbyB0aGUgYWN0dWFsIGpvYi4KKyAg
ICAgICAgRG9pbmcgc29tZSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIHJlZmFjdG9yaW5nIHRvIHNo
YXJlIGNvZGUgd2l0aCBXSzIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhY2hlIHN0b3JhZ2UgY29u
bmVjdGlvbi4gCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbik6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW5P
clJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjp1cGRhdGVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6dXBkYXRlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpyZW1vdmVSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0Jh
dGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJH
bG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZUNhY2hlczo6Y2FjaGVzIGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6OmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaDoKKwogMjAxNy0wOC0xNiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9y
aS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbSGFyZkJ1enpdIERlY29tcG9zZWQgVmlldG5h
bWVzZSBjaGFyYWN0ZXJzIGFyZSByZW5kZXJlZCBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCAwNjdkZDdkNGM4NDBmNGQ3YTVhZGQ2NjNlNTJiNWQ1MzQ0YTk5OTRlLi40YzdhZTkw
OWJlM2M0MWZlOTRlNzg4MmZhMGU5ZmYwMGE3N2I4OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtODk4LDYgKzg5OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZS5jcHAKICAgICBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCiAgICAgTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisgICAgTW9kdWxl
cy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAogICAgIE1vZHVsZXMvY2Fj
aGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCiAKICAgICBNb2R1bGVzL2NyZWRlbnRpYWxz
L0Jhc2ljQ3JlZGVudGlhbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGVRdWVyeU9wdGlvbnMuaAppbmRleCA2OGY2N2ZhY2YzNTY4NzFlZWY0ZTU1NDY5NThiNzI3
YTY1OTM2OTNiLi43NDI3YjhkYmIwN2YwNjgwNWQ2YjE0NmZjMDg5NTg2Y2JiN2YyNmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlUXVlcnlPcHRpb25zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oCkBA
IC0zMCwxMCArMzAsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENhY2hlUXVl
cnlPcHRpb25zIHsKKyAgICBDYWNoZVF1ZXJ5T3B0aW9ucygpID0gZGVmYXVsdDsKKyAgICBDYWNo
ZVF1ZXJ5T3B0aW9ucyhib29sIGlnbm9yZVNlYXJjaCwgYm9vbCBpZ25vcmVNZXRob2QsIGJvb2wg
aWdub3JlVmFyeSwgU3RyaW5nIGNhY2hlTmFtZSk7CisgICAgQ2FjaGVRdWVyeU9wdGlvbnMgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBpZ25vcmVTZWFyY2gsIGlnbm9yZU1ldGhvZCwg
aWdub3JlVmFyeSwgY2FjaGVOYW1lLmlzb2xhdGVkQ29weSgpIH07IH0KKwogICAgIGJvb2wgaWdu
b3JlU2VhcmNoIHsgZmFsc2UgfTsKICAgICBib29sIGlnbm9yZU1ldGhvZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBpZ25vcmVWYXJ5IHsgZmFsc2UgfTsKICAgICBTdHJpbmcgY2FjaGVOYW1lOwogfTsK
IAoraW5saW5lIENhY2hlUXVlcnlPcHRpb25zOjpDYWNoZVF1ZXJ5T3B0aW9ucyhib29sIGlnbm9y
ZVNlYXJjaCwgYm9vbCBpZ25vcmVNZXRob2QsIGJvb2wgaWdub3JlVmFyeSwgU3RyaW5nIGNhY2hl
TmFtZSkKKyAgICA6IGlnbm9yZVNlYXJjaChpZ25vcmVTZWFyY2gpCisgICAgLCBpZ25vcmVNZXRo
b2QoaWdub3JlTWV0aG9kKQorICAgICwgaWdub3JlVmFyeShpZ25vcmVWYXJ5KQorICAgICwgY2Fj
aGVOYW1lKGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKSkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjQ0ZjllNDE3ZDQzY2FlZjNiMjI5MzllMzIzMmQ5
ZmFkYWM1ZDBiMS4uNTNmMGI2NTcxMzAwZmVkOGZiMGQ1MjcyYzQ3MmY5ZWVjZjg0MzE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC03OCw1ICs3OCw4MiBAQCBib29sIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OnF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbgog
ICAgIHJldHVybiB0cnVlOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit2b2lkIENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgY2FjaGVOYW1lLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAg
bV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVy
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBkb09wZW4ocmVxdWVzdElkZW50aWZpZXIsIG9y
aWdpbiwgY2FjaGVOYW1lKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1v
dmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElk
ZW50aWZpZXI7CisgICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRkKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBkb1JlbW92ZShyZXF1
ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKK30KKwordm9pZCBDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsr
bV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1
ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGRv
UmV0cmlldmVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbik7Cit9CisKK3ZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fcmV0cmlldmVS
ZWNvcmRzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOworCisgICAgZG9SZXRyaWV2ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIGNhY2hl
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxl
dGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX2JhdGNo
RGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92
ZShjYWxsYmFjaykpOworCisgICAgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbihyZXF1ZXN0SWRlbnRp
ZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMpKTsKK30KIAor
dm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpS
ZWNvcmQ+JiYgcmVjb3JkcywgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmll
cjsKKyAgICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRl
bnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgZG9CYXRjaFB1dE9wZXJhdGlvbihy
ZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpKTsKK30K
Kwordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuT3JSZW1vdmVDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3Ig
ZXJyb3IpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX29wZW5BbmRSZW1vdmVDYWNoZVBl
bmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgY2FsbGJhY2so
Y2FjaGVJZGVudGlmaWVyLCBlcnJvcik7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6dXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8Q2FjaGVJ
bmZvPiYmIGNhY2hlcykKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcmV0cmlldmVDYWNo
ZXNQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUoY2FjaGVzKSk7Cit9CisKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
dXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4m
JiByZWNvcmRzKQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9yZXRyaWV2ZVJlY29yZHNQ
ZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUocmVjb3JkcykpOworfQorCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRl
bGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rvcjx1
aW50NjRfdD4mJiByZWNvcmRzLCBFcnJvciBlcnJvcikKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRp
ZmllcikpCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKK30KKwor
dm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJy
b3IpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGlu
Z1JlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKHJlY29yZHMpLCBlcnJvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmgKaW5kZXggMjNlZDNlNTg4YTgzZDUyZjhjYjYwNGUzZTc0MWZhNWMyMDhmYjRiOC4uMmJmNjll
NWFjNWQyMmJhMmQwYTQ5YmE4OGQ1NDBkMzdmMzdlYTI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNjgsMjAgKzY5LDQ2IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dXNpbmcgT3BlblJlbW92ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBF
cnJvcik+OwotICAgIHVzaW5nIENhY2hlTWFwQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
VmVjdG9yPENhY2hlSW5mbz4mJik+OworICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RGOjpG
dW5jdGlvbjx2b2lkKFZlY3RvcjxDYWNoZUluZm8+JiYpPjsKICAgICB1c2luZyBSZWNvcmRzQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlY29yZD4mJik+OwogICAgIHVzaW5n
IEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPHVpbnQ2
NF90PiYmLCBFcnJvcik+OwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiAv
KiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyogY2FjaGVOYW1lICovLCBPcGVuUmVtb3ZlQ2Fs
bGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjaygwLCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8s
IE9wZW5SZW1vdmVDYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKDAsIEVycm9yOjpOb3RJ
bXBsZW1lbnRlZCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3Ry
aW5nJiAvKiBvcmlnaW4gKi8sIENhY2hlTWFwQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFj
ayh7IH0pOyB9CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25z
dCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLywgT3BlblJlbW92ZUNhbGxiYWNrJiYpOworICAgIHZv
aWQgcmVtb3ZlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgT3BlblJlbW92ZUNhbGxi
YWNrJiYpOworICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4g
Ki8sIENhY2hlc0NhbGxiYWNrJiYpOwogCi0gICAgdmlydHVhbCB2b2lkIHJldHJpZXZlUmVjb3Jk
cyh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFJlY29yZHNDYWxsYmFjayYmIGNhbGxi
YWNrKSB7IGNhbGxiYWNrKHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYmF0Y2hEZWxldGVPcGVy
YXRpb24odWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spIHsgY2FsbGJhY2soeyB9LCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywg
VmVjdG9yPFJlY29yZD4mJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNh
bGxiYWNrKHsgfSwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZvaWQgcmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgUmVjb3Jkc0NhbGxiYWNrJiYp
OworICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgLyogY2FjaGVJZGVudGlm
aWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBCYXRj
aE9wZXJhdGlvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0
X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBWZWN0b3I8UmVjb3JkPiYmLCBCYXRjaE9wZXJhdGlv
bkNhbGxiYWNrJiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigp
ID0gIGRlZmF1bHQ7CisKKyAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgeyBvcGVuT3JSZW1vdmVD
b21wbGV0ZWQoaWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7IH0KKyAgICB2b2lk
IHJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIEVycm9yIGVycm9yKSB7IG9wZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVyLCBj
YWNoZUlkZW50aWZpZXIsIGVycm9yKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
Q2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8Q2FjaGVJbmZvPiYmKTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
ZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8
dWludDY0X3Q+JiYsIEVycm9yKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFJlY29yZHND
b21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwg
RXJyb3IpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBkb09wZW4odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJpbmcm
IC8qIGNhY2hlTmFtZSAqLykgeyBvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCAwLCBF
cnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmlydHVhbCB2b2lkIGRvUmVtb3ZlKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsg
cmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCAwLCBFcnJvcjo6Tm90SW1wbGVtZW50
ZWQpOyB9CisgICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovKSB7IHVwZGF0ZUNhY2hlcyhy
ZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQorCisgICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50
aWZpZXIgKi8pIHsgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYpIHsgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1
ZXN0SWRlbnRpZmllciwgeyB9LCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPFJlY29yZD4mJikgeyBwdXRSZWNv
cmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0sIEVycm9yOjpOb3RJbXBsZW1lbnRl
ZCk7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVycm9y
KTsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIE9wZW5SZW1vdmVDYWxsYmFjaz4gbV9vcGVuQW5k
UmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ2FjaGVz
Q2FsbGJhY2s+IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVjb3Jkc0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0
czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrPiBtX2JhdGNo
RGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzOworCisgICAgdWludDY0X3QgbV9sYXN0UmVxdWVz
dElkZW50aWZpZXIgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWM5ZmFkMWY1MzIyMDUxYWRiYWQ0N2ZkZTNk
ZTc1MGUxYTBkNWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDIyMiBAQAor
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNhY2hlUXVlcnlPcHRpb25zLmgiCisj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgorI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBD
cm9zc1RocmVhZFJlY29yZERhdGEgeworICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CisKKyAgICBG
ZXRjaEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7CisgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3Q7CisKKyAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKKyAgICBTdHJpbmcgcmVm
ZXJyZXI7CisKKyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlc3BvbnNlSGVhZGVyc0d1YXJkOwor
ICAgIFJlc291cmNlUmVzcG9uc2U6OkNyb3NzVGhyZWFkRGF0YSByZXNwb25zZTsKK307CisKK3N0
YXRpYyBDcm9zc1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1RocmVhZFJlY29yZERhdGEoY29uc3Qg
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkJiByZWNvcmQpCit7CisgICAgcmV0dXJuIENy
b3NzVGhyZWFkUmVjb3JkRGF0YSB7CisgICAgICAgIHJlY29yZC5pZGVudGlmaWVyLAorICAgICAg
ICByZWNvcmQucmVxdWVzdEhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJlcXVlc3QuaXNv
bGF0ZWRDb3B5KCksCisgICAgICAgIHJlY29yZC5vcHRpb25zLmlzb2xhdGVkQ29weSgpLAorICAg
ICAgICByZWNvcmQucmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHJlY29yZC5yZXNw
b25zZUhlYWRlcnNHdWFyZCwKKyAgICAgICAgcmVjb3JkLnJlc3BvbnNlLmNyb3NzVGhyZWFkRGF0
YSgpCisgICAgfTsKK30KKworc3RhdGljIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCBm
cm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKENyb3NzVGhyZWFkUmVjb3JkRGF0YSYmIGRhdGEpCit7
CisgICAgcmV0dXJuIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB7CisgICAgICAgIGRh
dGEuaWRlbnRpZmllciwKKyAgICAgICAgZGF0YS5yZXF1ZXN0SGVhZGVyc0d1YXJkLAorICAgICAg
ICBXVEZNb3ZlKGRhdGEucmVxdWVzdCksCisgICAgICAgIFdURk1vdmUoZGF0YS5vcHRpb25zKSwK
KyAgICAgICAgV1RGTW92ZShkYXRhLnJlZmVycmVyKSwKKyAgICAgICAgZGF0YS5yZXNwb25zZUhl
YWRlcnNHdWFyZCwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNyb3NzVGhyZWFkRGF0
YShXVEZNb3ZlKGRhdGEucmVzcG9uc2UpKQorICAgIH07Cit9CisKK1JlZjxXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGUoV29y
a2VyR2xvYmFsU2NvcGUmIHNjb3BlKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IGFkb3B0UmVm
KCpuZXcgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihzY29wZSkpOworICAgIGNvbm5lY3Rp
b24tPm1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbcHJvdGVjdGVkQ29ubmVjdGlvbiA9IG1ha2VS
ZWYoY29ubmVjdGlvbi5nZXQoKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBEb2N1bWVu
dCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CisKKyAgICAgICAgQVNT
RVJUKGRvY3VtZW50LnBhZ2UoKSk7CisgICAgICAgIHByb3RlY3RlZENvbm5lY3Rpb24tPm1fbWFp
blRocmVhZENvbm5lY3Rpb24gPSBkb2N1bWVudC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVy
KCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihkb2N1bWVudC5wYWdlKCktPnNlc3Npb25J
RCgpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29ubmVjdGlvbjsKK30KKworV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihXb3JrZXJHbG9i
YWxTY29wZSYgc2NvcGUpCisgICAgOiBtX3Njb3BlKHNjb3BlKQorICAgICwgbV9wcm94eShtX3Nj
b3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkpCisgICAgLCBtX3Rhc2tNb2RlKFdvcmtl
clJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpCit7Cit9CisKK1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246On5Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK3sK
KyAgICBpZiAobV9tYWluVGhyZWFkQ29ubmVjdGlvbikKKyAgICAgICAgbV9wcm94eS5wb3N0VGFz
a1RvTG9hZGVyKFttYWluVGhyZWFkQ29ubmVjdGlvbiA9IFdURk1vdmUobV9tYWluVGhyZWFkQ29u
bmVjdGlvbildKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsgfSk7Cit9CisKK3Zv
aWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUp
Cit7CisgICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0
ZWRDb3B5KCksIGNhY2hlTmFtZSA9IGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CisKKyAgICAgICAgbV9t
YWluVGhyZWFkQ29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0odWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAg
ICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIGVycm9y
LCBjYWNoZUlkZW50aWZpZXIsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICAgICAgb3BlbkNvbXBsZXRlZChyZXF1
ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgICAgICB9LCBt
X3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFk
Q29ubmVjdGlvbik7CisKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVtb3ZlKGNh
Y2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXSh1aW50NjRfdCByZW1vdmVk
Q2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlbW92ZWRDYWNoZUlkZW50aWZpZXIsIHJlbW92ZWRDYWNoZUlkZW50aWZpZXIg
PT0gY2FjaGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIGVycm9yXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAg
ICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRl
bnRpZmllciwgZXJyb3IpOworICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAgICAgIH0p
OworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0
cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKQoreworICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3JpZ2luLmlz
b2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRDb25u
ZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hl
cyhvcmlnaW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
cmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IFZlY3RvcjxDYWNoZUluZm8+JiBjYWNoZXMpIG11dGFi
bGUgeworICAgICAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gaXNvbGF0ZWRDYWNoZXM7CisgICAg
ICAgICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hlcy5zaXpl
KCkpOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYWNoZSA6IGNhY2hlcykKKyAgICAg
ICAgICAgICAgICBpc29sYXRlZENhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2Fj
aGUuaWRlbnRpZmllciwgY2FjaGUubmFtZS5pc29sYXRlZENvcHkoKSB9KTsKKworICAgICAgICAg
ICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FjaGVzID0gV1RGTW92ZShpc29s
YXRlZENhY2hlcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVD
YWNoZXMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FjaGVzKSk7CisgICAgICAgICAgICB9
LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhjb25z
dCBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYgcmVjb3JkcykKK3sKKyAg
ICBWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiByZWNvcmRzRGF0YTsKKyAgICByZWNvcmRz
RGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHJlY29yZCA6IHJlY29yZHMpCisgICAgICAgIHJlY29yZHNEYXRhLnVuY2hlY2tl
ZEFwcGVuZCh0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YShyZWNvcmQpKTsKKyAgICByZXR1cm4gcmVj
b3Jkc0RhdGE7Cit9CisKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OlJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNv
cmREYXRhPiYmIHJlY29yZHNEYXRhKQoreworICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpSZWNvcmQ+IHJlY29yZHM7CisgICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHJlY29yZHNEYXRhLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmREYXRhIDogcmVjb3Jk
c0RhdGEpCisgICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKGZyb21Dcm9zc1RocmVhZFJl
Y29yZERhdGEoV1RGTW92ZShyZWNvcmREYXRhKSkpOworICAgIHJldHVybiByZWNvcmRzOworfQor
Cit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit7Cisg
ICAgbV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgQVNTRVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOworCisgICAgICAgIG1fbWFp
blRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZp
ZXJdKFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3By
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzRGF0YSA9IHJlY29yZHNEYXRhRnJv
bVJlY29yZHMocmVjb3JkcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICB1
cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFdU
Rk1vdmUocmVjb3Jkc0RhdGEpKSk7CisgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENhY2hl
UXVlcnlPcHRpb25zJiYgb3B0aW9ucykKK3sKKyAgICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlv
bnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0
YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVCht
X21haW5UaHJlYWRDb25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9u
LT5iYXRjaERlbGV0ZU9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIFdURk1vdmUo
b3B0aW9ucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
cmVxdWVzdElkZW50aWZpZXJdKFZlY3Rvcjx1aW50NjRfdD4mJiByZWNvcmRzLCBFcnJvciBlcnJv
cikgbXV0YWJsZSB7CisKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvciwgcmVxdWVzdElkZW50aWZpZXJd
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgICAgICAgICAgICAgIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKKyAgICAgICAgICAgIH0sIG1fdGFza01vZGUp
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykKK3sKKyAg
ICBtX3Byb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkc0RhdGEg
PSByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJlY29yZHMpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFT
U0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKKworICAgICAgICBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLT5iYXRjaFB1dE9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlY29yZHNGcm9tUmVj
b3Jkc0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YSkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8dWludDY0X3Q+
JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpIG11dGFibGUgeworCisgICAgICAgICAgICBtX3Byb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgZXJy
b3IsIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAgICAgICBwdXRSZWNvcmRzQ29tcGxl
dGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7CisgICAgICAg
ICAgICB9LCBtX3Rhc2tNb2RlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY0OGFmMmZi
ZTE4MTU0ZWY1MDJiMmY5MjQyYTg0YzEzYTMwNWUyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsNjAgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CisKK2NsYXNzIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICB+V29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oV29ya2VyR2xvYmFsU2NvcGUmKTsKKworICAgIC8vIFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24KKyAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyogY2Fj
aGVOYW1lICovKSBmaW5hbDsKKyAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIGZpbmFsOworICAgIHZvaWQg
ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiAvKiBvcmlnaW4gKi8pIGZpbmFsOworCisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsK
KyAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CisgICAgdm9pZCBkb0Jh
dGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYpIGZpbmFsOworCisgICAgV29ya2VyR2xvYmFs
U2NvcGUmIG1fc2NvcGU7CisgICAgV29ya2VyTG9hZGVyUHJveHkmIG1fcHJveHk7CisgICAgU3Ry
aW5nIG1fdGFza01vZGU7CisKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9t
YWluVGhyZWFkQ29ubmVjdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNo
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcy5jcHAKaW5kZXggYzUzOWNkZTYzYjRiNGQyNzcxYzY5Y2ZmN2Q1OWI3ZjEyNTg1YjgxOS4u
YzhlNGZkYzFmNTk2MzBjYTRmZDVlNWJiYTM1NDFjYzQ5YTI4Yzc2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgQ2FjaGVTdG9yYWdlKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hl
czo6Y2FjaGVzKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKIENhY2hlU3RvcmFnZSogV29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXM6OmNhY2hlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhY2hlcykK
LSAgICAgICAgbV9jYWNoZXMgPSBDYWNoZVN0b3JhZ2U6OmNyZWF0ZShtX3Njb3BlLCBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgIG1fY2FjaGVzID0gQ2FjaGVTdG9y
YWdlOjpjcmVhdGUobV9zY29wZSwgbV9zY29wZS5jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkpOwog
ICAgIHJldHVybiBtX2NhY2hlcy5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFmMmFlZjAxZWU4NDRkZjAzZjFl
ZjQwNDljMDc4NTM0Njc1MTM1NzEuLmJkNTBhOWNmYzhiOTQ2ZjgxZWNkZmFiMDUyNDE0NDgyNzM2
ZGI5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE3NzIsNiArMTc3Miw4IEBACiAJCTQxQTFCMDFEMUU1NDIzOUUwMDdGMzc2
OSAvKiBKU0RPTUd1YXJkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFBMUIwMUIxRTU0MjM5NjAwN0YzNzY5IC8qIEpTRE9NR3VhcmRl
ZE9iamVjdC5jcHAgKi87IH07CiAJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFBM0Q1OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVh
ZC5jcHAgKi87IH07CiAJCTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCAqLzsg
fTsKKwkJNDFBN0QzNTIxRjQzOEQxNjAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFBN0QzNEYxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwICovOyB9OworCQk0MUE3RDM1MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFBN0QzNTAxRjQzOEQxMDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uaCAqLzsgfTsKIAkJNDFBQkU2N0IxRDA1ODBEQjAwNkQ4NjJEIC8qIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFBQkU2N0ExRDA1ODBENTAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlci5oICovOyB9OwogCQk0MUFCRTY3QzFEMDU4MEUwMDA2RDg2MkQgLyogQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQUJFNjc5MUQwNTgwRDUwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuY3BwICovOyB9OwogCQk0MUFENzUzQTFDRUY2QkQxMDBBMzE0ODYgLyogRmV0
Y2hPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUFENzUzOTFDRUY2QkNFMDBBMzE0ODYgLyogRmV0Y2hPcHRpb25zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0NDUsNiArOTQ0Nyw4IEBA
CiAJCTQxQTQ4QTlEMUU4MzEyRUIwMEQyQUMyRCAvKiBSVENQZWVyQ29ubmVjdGlvblN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBNDhBQTcxRTg0QUVFQzAwRDJBQzJE
IC8qIFJUQ1J0cFBhcmFtZXRlcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFBh
cmFtZXRlcnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUE0OEFBODFFODRB
RjFEMDBEMkFDMkQgLyogUlRDUnRwUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSVENSdHBQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxQTdEMzRGMUY0MzhEMTAwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUE3
RDM1MDFGNDM4RDEwMDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQUJFNjc5MUQwNTgwRDUwMDZE
ODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBQkU2N0ExRDA1ODBENTAwNkQ4NjJEIC8qIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFBRDc1MzkxQ0VGNkJDRTAwQTMxNDg2IC8qIEZldGNoT3B0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaE9wdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjcyLDYgKzE3Njc2LDggQEAKIAkJCQk0MUZCMjc4RTFGMzRD
MjgyMDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmNwcCAqLywKIAkJCQk0MUZCMjc4QzFGMzRD
MjgyMDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmggKi8sCiAJCQkJNDEzODBDMkIxRjM0M0Uy
RjAwMTU1RkRBIC8qIERPTVdpbmRvd0NhY2hlcy5pZGwgKi8sCisJCQkJNDFBN0QzNEYxRjQzOEQx
MDAwODk4OERFIC8qIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQx
QTdEMzUwMUY0MzhEMTAwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgg
Ki8sCiAJCQkJNDFGQjI3OEYxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzLmNwcCAqLywKIAkJCQk0MUZCMjc4RDFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2VyR2xvYmFs
U2NvcGVDYWNoZXMuaCAqLywKIAkJCQk0MTM4MEMyQTFGMzQzRTJGMDAxNTVGREEgLyogV29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXMuaWRsICovLApAQCAtMzAyNjEsNiArMzAyNjcsNyBAQAogCQkJCUEx
NDgzMkM2MTg3RjY2OEYwMERBNjNBNiAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJFNDM0NjQ2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxQTdEMzUzMUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTJBNjg2MjFEQkIwRjYzMDA4MzM3
M0YgLyogV29ya2VyQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTU2MzlEMTFD
NkYwOUUzMDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUyQTY4NjYxREJENEI1RDAwODMzNzNGIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzE4OTgsNyArMzE5MDUsNiBAQAogCQkJCUUxMjVGODNEMTgyNDExRTcw
MEQ4NENEOSAvKiBKU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M5QUNBQkYxRjNDRjFBRjAwRjNBQTA5IC8qIEpTQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGht
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDOUFDQUMxMUYzQ0YxQUYwMEYzQUEwOSAvKiBKU0Ny
eXB0b1JzYUtleUFsZ29yaXRobS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDgyODQwODFGNDQ1
OTRDMDA4NjNBQzMgLyogUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzQ2QzFGQzBDMEREQzhGMDAyMENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0NkMxRkUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NT
SW1wb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA3MTBFNkNDQkVFMDBCRjYw
ODggLyogSlNDU1NLZXlmcmFtZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzE2Niw2ICsz
MzE3Miw3IEBACiAJCQkJOTNGMTlBRDUwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1Rl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTgyNEFCQUExQUU4NDlDODAwOTA3NEI3IC8qIFJl
bmRlclRyZWVQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDYxODAyQjFDOEEwNkQ5
MDAyNkMwMkMgLyogUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTQ4
Mjg0MDgxRjQ0NTk0QzAwODYzQUMzIC8qIFJlbmRlclRyZWVVcGRhdGVyRmlyc3RMZXR0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjE0NTEwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZp
ZGVvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODY3MDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFMjA1MDdEMThBNDU4QkYwMDgwNjQ3
RSAvKiBSZW5kZXJWVFRDdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzk3NSw2ICszMzk4Miw3
IEBACiAJCQkJQTE0ODMyQzUxODdGNjY4MzAwREE2M0E2IC8qIFdLVmlldy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3OTkxOTk2MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY0NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQxQTdEMzUyMUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MkE2ODYxMURC
QjBGNjMwMDgzMzczRiAvKiBXb3JrZXJDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTU1NjM5RDIxQzZGMDlFNzAwODA2RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTUyQTY4NjUxREJENEI1RDAwODMzNzNGIC8qIFdvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25z
LmgKaW5kZXggN2UxYTgzNzM4ZDIzOTdmMjRkNzI0Y2QwMTI2NjY3ZmE2MDRlMThiOC4uYjE3Mzcy
M2JkN2Y3YTBlYzU0NzY3MWJhMDFmZDA5NGYyNGI5ZjczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
ZXRjaE9wdGlvbnMuaApAQCAtMzUsMjggKzM1LDM4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IEZldGNoT3B0aW9ucyB7CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgRW1wdHlTdHJpbmcs
IEF1ZGlvLCBGb250LCBJbWFnZSwgU2NyaXB0LCBTdHlsZSwgVHJhY2ssIFZpZGVvIH07Ci0gICAg
VHlwZSB0eXBlIHsgVHlwZTo6RW1wdHlTdHJpbmcgfTsKLQogICAgIGVudW0gY2xhc3MgRGVzdGlu
YXRpb24geyBFbXB0eVN0cmluZywgRG9jdW1lbnQsIFNoYXJlZHdvcmtlciwgU3VicmVzb3VyY2Us
IFVua25vd24sIFdvcmtlciB9OwotICAgIERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uIHsgRGVzdGlu
YXRpb246OkVtcHR5U3RyaW5nIH07Ci0KICAgICBlbnVtIGNsYXNzIE1vZGUgeyBOYXZpZ2F0ZSwg
U2FtZU9yaWdpbiwgTm9Db3JzLCBDb3JzIH07Ci0gICAgTW9kZSBtb2RlIHsgTW9kZTo6Tm9Db3Jz
IH07Ci0KICAgICBlbnVtIGNsYXNzIENyZWRlbnRpYWxzIHsgT21pdCwgU2FtZU9yaWdpbiwgSW5j
bHVkZSB9OwotICAgIENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzIHsgQ3JlZGVudGlhbHM6Ok9taXQg
fTsKLQogICAgIGVudW0gY2xhc3MgQ2FjaGUgeyBEZWZhdWx0LCBOb1N0b3JlLCBSZWxvYWQsIE5v
Q2FjaGUsIEZvcmNlQ2FjaGUsIE9ubHlJZkNhY2hlZCB9OwotICAgIENhY2hlIGNhY2hlIHsgQ2Fj
aGU6OkRlZmF1bHQgfTsKLQogICAgIGVudW0gY2xhc3MgUmVkaXJlY3QgeyBGb2xsb3csIEVycm9y
LCBNYW51YWwgfTsKLSAgICBSZWRpcmVjdCByZWRpcmVjdCB7IFJlZGlyZWN0OjpGb2xsb3cgfTsK
IAotICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5IHsgUmVmZXJyZXJQb2xpY3k6OkVt
cHR5U3RyaW5nIH07CisgICAgRmV0Y2hPcHRpb25zKCkgPSBkZWZhdWx0OworICAgIEZldGNoT3B0
aW9ucyhUeXBlLCBEZXN0aW5hdGlvbiwgTW9kZSwgQ3JlZGVudGlhbHMsIENhY2hlLCBSZWRpcmVj
dCwgUmVmZXJyZXJQb2xpY3ksIFN0cmluZyYmLCBib29sKTsKKyAgICBGZXRjaE9wdGlvbnMgaXNv
bGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyB0eXBlLCBkZXN0aW5hdGlvbiwgbW9kZSwgY3Jl
ZGVudGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVmZXJyZXJQb2xpY3ksIGludGVncml0eS5pc29s
YXRlZENvcHkoKSwga2VlcEFsaXZlIH07IH0KIAorICAgIFR5cGUgdHlwZSB7IFR5cGU6OkVtcHR5
U3RyaW5nIH07CisgICAgRGVzdGluYXRpb24gZGVzdGluYXRpb24geyBEZXN0aW5hdGlvbjo6RW1w
dHlTdHJpbmcgfTsKKyAgICBNb2RlIG1vZGUgeyBNb2RlOjpOb0NvcnMgfTsKKyAgICBDcmVkZW50
aWFscyBjcmVkZW50aWFscyB7IENyZWRlbnRpYWxzOjpPbWl0IH07CisgICAgQ2FjaGUgY2FjaGUg
eyBDYWNoZTo6RGVmYXVsdCB9OworICAgIFJlZGlyZWN0IHJlZGlyZWN0IHsgUmVkaXJlY3Q6OkZv
bGxvdyB9OworICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5IHsgUmVmZXJyZXJQb2xp
Y3k6OkVtcHR5U3RyaW5nIH07CiAgICAgU3RyaW5nIGludGVncml0eTsKLQogICAgIGJvb2wga2Vl
cEFsaXZlIHsgZmFsc2UgfTsKIH07CiAKK2lubGluZSBGZXRjaE9wdGlvbnM6OkZldGNoT3B0aW9u
cyhUeXBlIHR5cGUsIERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNb2RlIG1vZGUsIENyZWRlbnRp
YWxzIGNyZWRlbnRpYWxzLCBDYWNoZSBjYWNoZSwgUmVkaXJlY3QgcmVkaXJlY3QsIFJlZmVycmVy
UG9saWN5IHJlZmVycmVyUG9saWN5LCBTdHJpbmcmJiBpbnRlZ3JpdHksIGJvb2wga2VlcEFsaXZl
KQorICAgIDogdHlwZSh0eXBlKQorICAgICwgZGVzdGluYXRpb24oZGVzdGluYXRpb24pCisgICAg
LCBtb2RlKG1vZGUpCisgICAgLCBjcmVkZW50aWFscyhjcmVkZW50aWFscykKKyAgICAsIGNhY2hl
KGNhY2hlKQorICAgICwgcmVkaXJlY3QocmVkaXJlY3QpCisgICAgLCByZWZlcnJlclBvbGljeShy
ZWZlcnJlclBvbGljeSkKKyAgICAsIGludGVncml0eShXVEZNb3ZlKGludGVncml0eSkpCisgICAg
LCBrZWVwQWxpdmUoa2VlcEFsaXZlKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDE4MGY4
OGU2OTU4N2UwYTA0M2ZhNjY1MGIwM2E2MjAxNGRiOTk1MmEuLmQ5YWQ1OWEyNWZlYjAzOTkyMWZk
MjRjMTkzMjMxYjJjZTRmNjlhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCkBAIC0zODYsNCArMzg2LDExIEBAIFBlcmZvcm1hbmNlJiBXb3JrZXJH
bG9iYWxTY29wZTo6cGVyZm9ybWFuY2UoKSBjb25zdAogICAgIHJldHVybiAqbV9wZXJmb3JtYW5j
ZTsKIH0KIAorQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiYgV29ya2VyR2xvYmFsU2NvcGU6OmNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KQorICAgICAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24gPSBXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9jYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggYzViMGQ1MmFiNGNhY2Q2MWEyYjk5NDM0Zjc3
ODNhZWVlNTgyMjM5My4uMDQ5MWQ3YzRmZGQwNTY3ZTFmMjdhMjFiNDhlZTZmNzU1NjcyOGY1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMjcsMTEg
KzI3LDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJhc2U2NFV0aWxpdGllcy5oIgor
I2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXNz
aW9uSUQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgIldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3Jr
ZXJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oPgpAQCAtNjYsNiArNjgsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdG9wSW5kZXhlZERhdGFiYXNlKCk7CiAjZW5kaWYKIAorICAgIENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24mIGNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKKwogICAgIFdvcmtl
clNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CiAg
ICAgdm9pZCBjbGVhclNjcmlwdCgpIHsgbV9zY3JpcHQgPSBudWxscHRyOyB9CiAKQEAgLTE4Myw2
ICsxODcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPENyeXB0bz4gbV9jcnlwdG87
CiAKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgUmVmUHRyPFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>