<?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>186166</bug_id>
          
          <creation_ts>2018-05-31 16:24:01 -0700</creation_ts>
          <short_desc>Make NetworkProcess get cache storage parameters at creation of the CacheStorage engine</short_desc>
          <delta_ts>2019-01-22 18:36:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=193702</see_also>
          <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>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1429035</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-31 16:24:01 -0700</bug_when>
    <thetext>That will help speed up time and ensure we only get a sandbox extension when actually needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429042</commentid>
    <comment_count>1</comment_count>
      <attachid>341702</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-31 16:36:24 -0700</bug_when>
    <thetext>Created attachment 341702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429043</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-31 16:37:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/40452995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429225</commentid>
    <comment_count>3</comment_count>
      <attachid>341762</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-01 08:24:39 -0700</bug_when>
    <thetext>Created attachment 341762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433162</commentid>
    <comment_count>4</comment_count>
      <attachid>341762</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-06-14 16:19:03 -0700</bug_when>
    <thetext>Comment on attachment 341762
Patch

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

Is it common to load the first page without initializing a cache storage engine at all?

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:855
&gt; +void NetworkProcess::cacheStorageParameters(PAL::SessionID sessionID, CacheStorageParametersCallback&amp;&amp; callback)

This seems to ask the UIProcess every time this is called unless it is called more than once before we get a response.  Do we store the result anywhere?  A cacheStorageParameters cache if you will...

if (we already have parameters)
    call completion handler immediately
else
    retrieve cache storage parameters

Then store them on NetworkProcess in NetworkProcess::setCacheStorageParameters

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:582
&gt; +        m_websiteDataStores.set(store-&gt;sessionID(), WTFMove(store));

Parameter evaluation order is undefined.  We need to get the sessionID before moving from store.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:590
&gt; +    if (!sessionID.isEphemeral())
&gt; +        m_websiteDataStores.remove(sessionID);

Don&apos;t we want to remove ephemeral sessions, too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433167</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-14 16:30:45 -0700</bug_when>
    <thetext>&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=341762&amp;action=review
&gt; 
&gt; Is it common to load the first page without initializing a cache storage
&gt; engine at all?

Yes, it is common, you typically do not use a cache storage engine unless your page is served by a service worker.
In such a case, we would spin NetworkProcess, spin WebProcess, spin StorageProcess, spin another WebProcess, instantiate service worker in this process, execute some JavaScript and then grab the sandbox extension for cache storage API.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:855
&gt; &gt; +void NetworkProcess::cacheStorageParameters(PAL::SessionID sessionID, CacheStorageParametersCallback&amp;&amp; callback)
&gt; 
&gt; This seems to ask the UIProcess every time this is called unless it is
&gt; called more than once before we get a response.  Do we store the result
&gt; anywhere?  A cacheStorageParameters cache if you will...

It does ask UIProcess each time.
This is fine as we create one CacheStorageEngine per session ID and this is the one that will cache the information.
The CacheStorageEngine stays alive as long as the network process is not notified that the sessionID is no longer valid.

&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:582
&gt; &gt; +        m_websiteDataStores.set(store-&gt;sessionID(), WTFMove(store));
&gt; 
&gt; Parameter evaluation order is undefined.  We need to get the sessionID
&gt; before moving from store.

Ah, that is right, since we are creating a RefPtr from a Ref.
I&apos;ll fix it.
 
&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:590
&gt; &gt; +    if (!sessionID.isEphemeral())
&gt; &gt; +        m_websiteDataStores.remove(sessionID);
&gt; 
&gt; Don&apos;t we want to remove ephemeral sessions, too?

There should be no need since we are not adding them to the map anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433174</commentid>
    <comment_count>6</comment_count>
      <attachid>342777</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-06-14 16:46:16 -0700</bug_when>
    <thetext>Created attachment 342777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433204</commentid>
    <comment_count>7</comment_count>
      <attachid>342777</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-14 18:05:56 -0700</bug_when>
    <thetext>Comment on attachment 342777
Patch

Clearing flags on attachment: 342777

Committed r232863: &lt;https://trac.webkit.org/changeset/232863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433205</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-14 18:05:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497152</commentid>
    <comment_count>9</comment_count>
      <attachid>342777</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-22 18:36:15 -0800</bug_when>
    <thetext>Comment on attachment 342777
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:138
&gt; +    for (auto&amp; callbacks : m_cacheStorageParametersCallbacks.values()) {
&gt; +        for (auto&amp; callback : callbacks)
&gt; +            callback(String { }, 0);
&gt; +    }

See bug #193702.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341702</attachid>
            <date>2018-05-31 16:36:24 -0700</date>
            <delta_ts>2018-06-01 08:24:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186166-20180531163623.patch</filename>
            <type>text/plain</type>
            <size>57504</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjMDBlMTlhZTQ2NTdm
YWViMDkwYmYyNzRhZGIxNTU1NjIyMDRkOC4uOTVhOTdkYTIzMDFkMTljMzg0OTgzNzhkNWUyNGE0
YTEzZDQ4NDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA1LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9j
ZXNzIGdldCBjYWNoZSBzdG9yYWdlIHBhcmFtZXRlcnMgYXQgY3JlYXRpb24gb2YgdGhlIENhY2hl
U3RvcmFnZSBlbmdpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjYWNoZVN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIwMTgtMDUtMzEgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBNYXJnaW4gYm94
IGlzIGJvcmRlciBib3ggKyBtYXJnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyM2RlNWRkNzA5OTE0ZWRlNDVi
YzE1M2VlNTNkYjZlZGVmMzNmMDNjLi45ZDEyMzY2YTMwMDAxMWZiNTM3NjQwYTM4NmNiMTFjMDNk
NWY2NDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE4LTA1LTMxICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNzIGdl
dCBjYWNoZSBzdG9yYWdlIHBhcmFtZXRlcnMgYXQgY3JlYXRpb24gb2YgdGhlIENhY2hlU3RvcmFn
ZSBlbmdpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2UgQ2FjaGVTdG9yYWdlOjpFbmdpbmUgY3JlYXRpb24gYXN5bmNocm9ub3VzLgorICAgICAg
ICBVcGRhdGUgRW5naW5lIHB1YmxpYyBtZXRob2RzIGJlIHN0YXRpYyBtZXRob2RzIHRha2luZyBh
IFNlc3Npb25JRCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgZW5naW5lLgorCisg
ICAgICAgIEFkZCBJUEMgbWV0aGRvcyB0byByZXRyaWV2ZSBjYWNoZSBzdG9yYWdlIHBhcmFtZXRl
cnMgZnJvbSBOZXR3b3JrUHJvY2VzcyB0byBVSVByb2Nlc3MuCisKKyAgICAgICAgQWRkIE5ldHdv
cmtQcm9jZXNzUHJveHkgYWJpbGl0eSB0byBjb21wdXRlIHRoZSBjYWNoZSBzdG9yYWdlIHBhcmFt
ZXRlcnMgYmFzZWQgb24gdGhlIFNlc3Npb25JRC4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSwg
bWFrZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IHN0b3JlIGEgbWFwIG9mIFNlc3Npb25JRC10by1XZWJz
aXRlRGF0YVN0b3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNhY2hlU3RvcmFnZVBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9y
YWdlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0
b3JhZ2VEaXJlY3RvcnkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZnJvbSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnB1dFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmxvY2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6dW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6
OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpkZWZhdWx0RW5naW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OnNob3VsZFBlcnNpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6d2Vha1B0ckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6fkNhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6Y2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cHV0UmVjb3Jkcyk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmVuZ2luZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2
YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0
YVN0b3JlKToKKwogMjAxOC0wNS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAogICAgICAgICBbSlNDXSBQYXNzIFZNJiBwYXJhbWV0ZXIgYXMgbXVjaCBhcyBwb3Nz
aWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggMmE3ODY0NDY1NmNjYjI5YTNmNjhjODhhMWIwNmQ1ZDEx
OTdmNDBhNi4uNmU5OTM5M2RmMmI4OWQ2YzBmZmRhZGQ5ZjI0MWFiOGZjMDkyZmI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCkBAIC04NSwxMSArODUsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
TlNIVFRQQ29va2llU3RvcmFnZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShTdHJpbmcmJiBwYXRoKSB7IG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShw
YXRoKTsgfQotICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsgfQotICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpIHsgbV9jYWNoZVN0b3JhZ2VQ
ZXJPcmlnaW5RdW90YSA9IHF1b3RhOyB9Ci0KICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
VVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbnN1cmVTZXNz
aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlLCBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJik7CiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KFBBTDo6U2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiwgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYpOwpAQCAtMTczLDkgKzE2OCw2IEBAIHBy
aXZhdGU6CiAKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRlbnRpYWxTdG9yYWdlOwogCi0g
ICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgIHVpbnQ2NF90IG1fY2FjaGVT
dG9yYWdlUGVyT3JpZ2luUXVvdGEgeyAwIH07Ci0KICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdF
X1BBUlRJVElPTklORykKICAgICBib29sIHNob3VsZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgU3Ry
aW5nJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKSBjb25zdDsKICAgICBib29sIHNob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgU3RyaW5nJiB0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggMjlkNjI0NjlkNDg3ZTAyNTgwZTM1ZjlkNzM5YzY1N2JiYzE4
MWUzYy4uYTE2MDgxNGQ2MzA3ODZkYTQ5NGZkZWIwZTgyZTdkYzUwM2Q4NGIyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzMiw2
ICsxMzIsMTAgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKCkKIAogTmV0d29ya1By
b2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCiB7CisgICAgZm9yIChhdXRvJiBjYWxsYmFja3MgOiBt
X2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3MudmFsdWVzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgICAgIGNhbGxiYWNrKFN0cmlu
ZyB7IH0sIDApOworICAgIH0KIH0KIAogQXV0aGVudGljYXRpb25NYW5hZ2VyJiBOZXR3b3JrUHJv
Y2Vzczo6YXV0aGVudGljYXRpb25NYW5hZ2VyKCkKQEAgLTU2NCw3ICs1NjgsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaQogICAgIH0pOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCi0gICAgICAgIENhY2hlU3RvcmFnZTo6
RW5naW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJBbGxDYWNoZXMoY2xlYXJUYXNrc0hhbmRsZXIp
OworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoc2Vzc2lvbklE
LCBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCkpOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSkKICAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZpZWRTaW5jZSwgW2NsZWFy
VGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsgfSk7CkBAIC02MDgs
NyArNjEyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQotICAgICAgICAgICAgQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVhckNhY2hlc0Zvck9yaWdpbihvcmlnaW5E
YXRhLCBjbGVhclRhc2tzSGFuZGxlcik7CisgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oc2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbkRhdGEgeyBv
cmlnaW5EYXRhIH0sIGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKSk7CiAgICAgfQogCiAgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUp
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKQEAgLTg0OCwxOSArODUyLDI1IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAg
V2ViQ29yZTo6cHJlZmV0Y2hETlMoaG9zdG5hbWUpOwogfQogCi1TdHJpbmcgTmV0d29ya1Byb2Nl
c3M6OmNhY2hlU3RvcmFnZURpcmVjdG9yeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgaWYgKHNlc3Npb25JRCA9PSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpKQotICAgICAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgbV9jYWNo
ZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLmVuc3VyZShzZXNzaW9uSUQsIFsmXSB7CisgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OlJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25JRCB9LCAw
KTsKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2s+
IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsK
K30KIAotICAgIGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1cm4geyB9
Owordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHF1b3RhLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VE
aXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZSkKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLmZpbmQoc2Vzc2lv
bklEKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJh
Y2tzLmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICByZXR1cm4gc2Vzc2lvbi0+Y2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KGhhbmRsZSk7CisgICAgYXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKGl0ZXJhdG9yLT52YWx1
ZSk7CisgICAgbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLnJlbW92ZShpdGVyYXRv
cik7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJh
Y2soU3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKQEAg
LTg3OSwxMSArODg5LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW4KICNlbmRpZgogfQogCi11
aW50NjRfdCBOZXR3b3JrUHJvY2Vzczo6Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSBjb25z
dAotewotICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwotfQotCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYg
c2NoZW1lKSBjb25zdAogewogICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
U2VjdXJlKHNjaGVtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKaW5kZXggODNlYTI0MDFiMGNhMTZmNzhkZmZlNTZmZTVkYjkwZmM2MjgxYWM2ZC4u
ZWI1NzI2MzlkMDJlMGQzNWFlNjEyMDEwNTBiZTdjOGM4MzUxNDEyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTQzLDggKzE0Myw5IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29u
c3QgeyByZXR1cm4gbV9sb2FkVGhyb3R0bGVMYXRlbmN5OyB9Ci0gICAgU3RyaW5nIGNhY2hlU3Rv
cmFnZURpcmVjdG9yeShQQUw6OlNlc3Npb25JRCkgY29uc3Q7Ci0gICAgdWludDY0X3QgY2FjaGVT
dG9yYWdlUGVyT3JpZ2luUXVvdGEoKSBjb25zdDsKKworICAgIHVzaW5nIENhY2hlU3RvcmFnZVBh
cmFtZXRlcnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwg
dWludDY0X3QgcXVvdGEpPjsKKyAgICB2b2lkIGNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpT
ZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFjayYmKTsKIAogICAgIHZvaWQg
cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5KTsKIApAQCAtMjA4LDYgKzIwOSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNs
ZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKTsKIAorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGFyYW1l
dGVycyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcXVvdGEsIFN0cmluZyYmIGNhY2hlU3RvcmFn
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHRha2UgYSBzZXNzaW9uIElEIHNvIHdlIGNhbiBpZGVudGlmeSB3aGljaCBk
aXNrIGNhY2hlIHRvIGRlbGV0ZS4KICAgICB2b2lkIGNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCkBA
IC0yNTUsOCArMjU4LDYgQEAgcHJpdmF0ZToKICAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9j
ZXNzZXMuCiAgICAgVmVjdG9yPFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCi0gICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGly
ZWN0b3J5OwotICAgIHVpbnQ2NF90IG1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyAwIH07
CiAgICAgU3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OwogICAgIGJvb2wgbV9oYXNTZXRDYWNo
ZU1vZGVsOwogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsOwpAQCAtMjk5LDYgKzMwMCw4IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV90cmFja3NSZXNvdXJjZUxvYWRNaWxlc3Rv
bmVzIHsgZmFsc2UgfTsKKworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxDYWNo
ZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2s+PiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxs
YmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDU2
M2E1NjVmM2UyYmYwZWYxMTFhZmRhNGMyMDlhNTEyMGNmYTliNTUuLjgzNzZiYmM5YjQ4YTZiNDEz
OGM0MTRhYmRkOWE2Y2M4Zjk0ZWVhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtOTgsNCArOTgsNiBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVnaXN0
ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVy
VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChTdHJpbmcgc2NoZW1lKQorCisgICAgU2V0
Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHF1b3RhLCBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBmYzIyNTU0NDA1ODIzOThhMGI2YzIyY2NiYmNlZTJhY2M3ZjJkODUyLi5jYTA5OGQz
ZWFlNzAzNTc0YWU4OTFmZDA5MDUxNzEyNTkxODhmMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcApAQCAtNDYsOSArNDYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIuZW5jb2RlRW51bShjYWNoZU1vZGVsKTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZVNp
emVPdmVycmlkZTsKICAgICBlbmNvZGVyIDw8IGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uOwotICAgIGVuY29kZXIgPDwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgIGVuY29k
ZXIgPDwgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7Ci0gICAgZW5jb2RlciA8PCBjYWNoZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dp
bmc7CkBAIC0xMzIsMTYgKzEyOSw2IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNhY2hlU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGlza0NhY2hl
RGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IDA2ZjRkNDAwNTBmZjFhM2UyOGI4NjEyYmNkZDAwODVmYTg3NGVlYzEuLjJm
MzQ3Y2ExYWZiNTg4NmMxYTEzMTMyY2E5Y2E5OTFkNTM0ZGU1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKQEAgLTU2LDkgKzU2LDYgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICBpbnQ2NF90IGRpc2tDYWNoZVNpemVPdmVycmlkZSB7IC0x
IH07CiAgICAgYm9vbCBjYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiB7IHRydWUg
fTsKIAotICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgdWludDY0X3QgY2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNh
Y2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgZGlza0NhY2hl
RGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkaXNrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CiAgICAgYm9vbCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZp
Y2FjeUxvZ2dpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGRkYjhjMjUxMjg1
YjVmYmNjN2E2YzM4ZDM1YjcyZTE4NDMwYmNmNzIuLmU2MjZlMjM3ODBlN2E0ZjRlYWZmZTE4YmE1
NTIwMmE3ZjBlMDc3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTgwLDE1ICs4MCwyMyBAQCBF
bmdpbmU6On5FbmdpbmUoKQogICAgICAgICBjYWxsYmFjayhEYXRhIHsgfSwgMSk7CiB9CiAKLUVu
Z2luZSYgRW5naW5lOjpmcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgRW5naW5l
Ojpmcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZChFbmdpbmUmKT4m
JiBjYWxsYmFjaykKIHsKKyAgICBhdXRvIGl0ZXJhdG9yID0gZ2xvYmFsRW5naW5lTWFwKCkuZmlu
ZChzZXNzaW9uSUQpOworICAgIGlmIChpdGVyYXRvciAhPSBnbG9iYWxFbmdpbmVNYXAoKS5lbmQo
KSkgeworICAgICAgICBjYWxsYmFjaygqaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgc2Vz
c2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKTsKIAotICAg
IGF1dG8gYWRkUmVzdWx0ID0gZ2xvYmFsRW5naW5lTWFwKCkuYWRkKHNlc3Npb25JRCwgbnVsbHB0
cik7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gRW5naW5lOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmNhY2hlU3RvcmFnZURpcmVjdG9yeShzZXNzaW9uSUQpKTsKLSAgICByZXR1cm4gKmFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hl
U3RvcmFnZVBhcmFtZXRlcnMoc2Vzc2lvbklELCBbc2Vzc2lvbklELCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShhdXRvJiYgcm9vdFBhdGgsIGF1dG8gcXVvdGEpIHsKKyAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBnbG9iYWxFbmdpbmVNYXAoKS5hZGQoc2Vzc2lvbklELCBudWxscHRyKTsK
KyAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UmVmKCpuZXcgRW5naW5lIHsgU3RyaW5nIHsgcm9vdFBh
dGggfSwgcXVvdGEgfSk7CisgICAgICAgIGNhbGxiYWNrKCphZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OmRlc3Ryb3lFbmdpbmUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQpAQCAtOTcsMjAgKzEwNSwxMDEgQEAgdm9pZCBFbmdpbmU6OmRlc3Ry
b3lFbmdpbmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIGdsb2JhbEVuZ2luZU1hcCgp
LnJlbW92ZShzZXNzaW9uSUQpOwogfQogCi12b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBib29sIHNob3VsZENvbXB1dGVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBmcm9t
KHNlc3Npb25JRCwgW3Nob3VsZENvbXB1dGVTaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICAgICAg
ZW5naW5lLmZldGNoRW50cmllcyhzaG91bGRDb21wdXRlU2l6ZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6b3BlbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3RyaW5nJiYgY2Fj
aGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW29yaWdpbiA9IFdURk1vdmUob3Jp
Z2luKSwgY2FjaGVOYW1lID0gV1RGTW92ZShjYWNoZU5hbWUpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBlbmdpbmUub3Blbihv
cmlnaW4sIGNhY2hlTmFtZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOworfQorCit2b2lk
IEVuZ2luZTo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllciwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAg
ICAgICAgZW5naW5lLnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCB1aW50NjRfdCB1cGRh
dGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgZnJvbShzZXNzaW9uSUQpLmZldGNoRW50cmllcyhzaG91bGRDb21w
dXRlU2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGZyb20oc2Vzc2lvbklE
LCBbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVyLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBlbmdpbmUu
cmV0cmlldmVDYWNoZXMob3JpZ2luLCB1cGRhdGVDb3VudGVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfSk7Cit9CisKKwordm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYg
dXJsLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgZnJvbShzZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZpZXIsIHVybCA9IFdURk1vdmUo
dXJsKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxl
IHsKKyAgICAgICAgZW5naW5lLnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1v
dmUodXJsKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6
cHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYgcmVjb3Jkcywg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllciwgcmVjb3JkcyA9
IFdURk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVu
Z2luZSkgbXV0YWJsZSB7CisgICAgICAgIGVuZ2luZS5wdXRSZWNvcmRzKGNhY2hlSWRlbnRpZmll
ciwgV1RGTW92ZShyZWNvcmRzKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOwogfQogCi1F
bmdpbmUmIEVuZ2luZTo6ZGVmYXVsdEVuZ2luZSgpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTWF0Y2hp
bmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWY8RW5naW5lPj4gZGVmYXVsdEVuZ2luZSA9IHsgRW5naW5lOjpjcmVhdGUoTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZURpcmVjdG9yeShzZXNzaW9uSUQpKSB9Owot
ICAgIHJldHVybiBkZWZhdWx0RW5naW5lLmdldCgpOworICAgIGZyb20oc2Vzc2lvbklELCBbY2Fj
aGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1v
dmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkg
bXV0YWJsZSB7CisgICAgICAgIGVuZ2luZS5kZWxldGVNYXRjaGluZ1JlY29yZHMoY2FjaGVJZGVu
dGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgRW5naW5lOjpsb2NrKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQoreworICAgIGZyb20oc2Vzc2lvbklE
LCBbY2FjaGVJZGVudGlmaWVyXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBlbmdp
bmUubG9jayhjYWNoZUlkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6dW5s
b2NrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQor
eworICAgIGZyb20oc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyXShhdXRvJiBlbmdpbmUpIG11
dGFibGUgeworICAgICAgICBlbmdpbmUudW5sb2NrKGNhY2hlSWRlbnRpZmllcik7CisgICAgfSk7
Cit9CisKK3ZvaWQgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgZnJv
bShzZXNzaW9uSUQsIFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgICAgIGVuZ2luZS5jbGVh
ck1lbW9yeVJlcHJlc2VudGF0aW9uKG9yaWdpbiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0p
OworfQorCit2b2lkIEVuZ2luZTo6cmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjYWxsYmFjaykKK3sKKyAg
ICBmcm9tKHNlc3Npb25JRCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVu
Z2luZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKGVuZ2luZS5yZXByZXNlbnRhdGlvbigp
KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgUmVmPFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmIGFnZ3JlZ2F0b3Ip
Cit7CisgICAgZnJvbShzZXNzaW9uSUQsIFthZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9y
KV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICAgICAgZW5naW5lLmNsZWFyQWxsQ2FjaGVz
KGFnZ3JlZ2F0b3IpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JP
cmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiBvcmlnaW5EYXRhLCBSZWY8V1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I+JiYgYWdncmVnYXRv
cikKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW29yaWdpbkRhdGEgPSBXVEZNb3ZlKG9yaWdpbkRh
dGEpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKV0oYXV0byYgZW5naW5lKSBtdXRh
YmxlIHsKKyAgICAgICAgZW5naW5lLmNsZWFyQ2FjaGVzRm9yT3JpZ2luKG9yaWdpbkRhdGEsIGFn
Z3JlZ2F0b3IpOworICAgIH0pOwogfQogCi1FbmdpbmU6OkVuZ2luZShTdHJpbmcmJiByb290UGF0
aCkKK0VuZ2luZTo6RW5naW5lKFN0cmluZyYmIHJvb3RQYXRoLCB1aW50NjRfdCBxdW90YSkKICAg
ICA6IG1fcm9vdFBhdGgoV1RGTW92ZShyb290UGF0aCkpCisgICAgLCBtX3F1b3RhKHF1b3RhKQog
ewogICAgIGlmICghbV9yb290UGF0aC5pc051bGwoKSkKICAgICAgICAgbV9pb1F1ZXVlID0gV29y
a1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGVTdG9yYWdlRW5naW5lLnNlcmlh
bEJhY2tncm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJh
Y2tncm91bmQpOwpAQCAtMjMyLDcgKzMyMSw3IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGVzRnJv
bURpc2soY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENhY2hlc0NhbGxiCiAg
ICAgaW5pdGlhbGl6ZShbdGhpcywgb3JpZ2luLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYg
Y2FjaGVzID0gbV9jYWNoZXMuZW5zdXJlKG9yaWdpbiwgWyZvcmlnaW4sIHRoaXNdIHsKICAgICAg
ICAgICAgIGF1dG8gcGF0aCA9IGNhY2hlc1Jvb3RQYXRoKG9yaWdpbik7Ci0gICAgICAgICAgICBy
ZXR1cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdp
biB9LCBXVEZNb3ZlKHBhdGgpLCBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gQ2FjaGVzOjpjcmVhdGUo
KnRoaXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdpbiB9LCBXVEZNb3ZlKHBhdGgpLCBt
X3F1b3RhKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIGlmIChjYWNo
ZXMtPmlzSW5pdGlhbGl6ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5kZXggZTI5NzNiMmI1NmVkZjJi
ZDM5NTNkNmU5ZDQwYjAyMThmODFlMDM3Yy4uZjg0MmQzYmVjOWI3MDQzMjVlYjE1OTM4MjEyMzEy
ZDdlNjMyNDNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC01NywyNCArNTcsMjggQEAgY2xhc3MgRW5n
aW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiB7CiBwdWJsaWM6CiAgICAgfkVuZ2luZSgp
OwogCi0gICAgc3RhdGljIEVuZ2luZSYgZnJvbShQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGlj
IHZvaWQgZnJvbShQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZChFbmdpbmUmKT4mJik7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCk7CiAgICAgc3RhdGlj
IHZvaWQgZmV0Y2hFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBib29sIHNob3VsZENvbXB1dGVTaXpl
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4p
PiYmKTsKIAotICAgIHN0YXRpYyBSZWY8RW5naW5lPiBjcmVhdGUoU3RyaW5nJiYgcm9vdFBhdGgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW5naW5lKFdURk1vdmUocm9vdFBhdGgpKSk7IH0KKyAg
ICBzdGF0aWMgdm9pZCBvcGVuKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiwgU3RyaW5nJiYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVu
dGlmaWVyQ2FsbGJhY2smJik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZUNhY2hlcyhQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAK
LSAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9Cisg
ICAgc3RhdGljIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIG9wZW4o
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2
b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2b2lkIHJldHJpZXZlQ2FjaGVz
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CisgICAgc3RhdGlj
IHZvaWQgbG9jayhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgdm9pZCB1bmxvY2soUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
Zmllcik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxi
YWNrJiYpOwotICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKLSAgICB2b2lkIGRlbGV0ZU1h
dGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCBj
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsK
KyAgICBzdGF0aWMgdm9pZCByZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogCi0gICAgdm9pZCBsb2NrKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB1bmxvY2sodWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckFsbENhY2hlcyhQQUw6OlNlc3Npb25JRCwgUmVmPFdU
Rjo6Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckNhY2hlc0Zv
ck9yaWdpbihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJl
ZjxXVEY6OkNhbGxiYWNrQWdncmVnYXRvcj4mJik7CisKKyAgICBib29sIHNob3VsZFBlcnNpc3Qo
KSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKICAgICB2b2lkIHdyaXRlRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB2b2lkIHJlYWRGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgTmV0d29ya0Nh
Y2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJik7CkBAIC04NCwxNyArODgsMjggQEAgcHVibGljOgog
ICAgIGNvbnN0IE5ldHdvcmtDYWNoZTo6U2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Fs
dC52YWx1ZSgpOyB9CiAgICAgdWludDY0X3QgbmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJu
ICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKLSAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24o
KTsKKworICAgIFdlYWtQdHJGYWN0b3J5PEVuZ2luZT4mIHdlYWtQdHJGYWN0b3J5KCkgeyByZXR1
cm4gbV93ZWFrRmFjdG9yeTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEVuZ2luZShTdHJp
bmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEpOworCisgICAgdm9pZCBvcGVuKGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW1v
dmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCiAgICAgdm9pZCBjbGVhckFs
bENhY2hlcyhXVEY6OkNhbGxiYWNrQWdncmVnYXRvciYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNG
b3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV1RGOjpDYWxsYmFj
a0FnZ3JlZ2F0b3ImKTsKIAotICAgIFdlYWtQdHJGYWN0b3J5PEVuZ2luZT4mIHdlYWtQdHJGYWN0
b3J5KCkgeyByZXR1cm4gbV93ZWFrRmFjdG9yeTsgfQorICAgIHZvaWQgY2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworICAgIFN0cmluZyByZXByZXNlbnRhdGlv
bigpOwogCi1wcml2YXRlOgotICAgIHN0YXRpYyBFbmdpbmUmIGRlZmF1bHRFbmdpbmUoKTsKLSAg
ICBleHBsaWNpdCBFbmdpbmUoU3RyaW5nJiYgcm9vdFBhdGgpOworICAgIHZvaWQgcmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCBwdXRSZWNvcmRz
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVl
cnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYpOworCisgICAgdm9pZCBsb2NrKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB1bmxvY2sodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAogICAgIFN0cmluZyBj
YWNoZXNSb290UGF0aChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIApAQCAtMTE1LDYg
KzEzMCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpDbGllbnRPcmlnaW4sIFJl
ZlB0cjxDYWNoZXM+PiBtX2NhY2hlczsKICAgICB1aW50NjRfdCBtX25leHRDYWNoZUlkZW50aWZp
ZXIgeyAwIH07CiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgdWludDY0X3QgbV9xdW90YSB7
IDAgfTsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7CiAgICAgc3RkOjpvcHRpb25h
bDxOZXR3b3JrQ2FjaGU6OlNhbHQ+IG1fc2FsdDsKICAgICBIYXNoTWFwPENhY2hlSWRlbnRpZmll
ciwgTG9ja0NvdW50PiBtX2NhY2hlTG9ja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmNwcAppbmRleCA1MzVmMDVhZDJhZGY5M2FlN2U3NjQ5YjJlYmZkMjliZjg4MDhiMDJiLi5h
NTYyMzQ1NWQ5YWYwZTQyNzIwZWM1YWUzM2JhZjQ3MTk1YzhhYjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTU4LDE1ICs1OCwxNSBAQCBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjp+Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbigpCiAgICAgICAg
IGF1dG8mIHNlc3Npb25JRCA9IGtleVZhbHVlLmtleTsKICAgICAgICAgZm9yIChhdXRvJiByZWZl
cmVuY2VzIDoga2V5VmFsdWUudmFsdWUpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWZlcmVuY2Vz
LnZhbHVlKTsKLSAgICAgICAgICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnVubG9jayhyZWZl
cmVuY2VzLmtleSk7CisgICAgICAgICAgICBFbmdpbmU6OnVubG9jayhzZXNzaW9uSUQsIHJlZmVy
ZW5jZXMua2V5KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGNhY2hlTmFtZSkKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIGNhY2hlTmFtZSkKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJvcGVuICglIiBQUkl1NjQgIikiLCByZXF1ZXN0
SWRlbnRpZmllcik7Ci0gICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkub3BlbihvcmlnaW4sIGNh
Y2hlTmFtZSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkp
LCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVy
cm9yJiByZXN1bHQpIHsKKyAgICBFbmdpbmU6Om9wZW4oc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoY2FjaGVOYW1lKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlv
bi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNo
ZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRlVOQ1RJ
T05fSUZfQUxMT1dFRF9JTl9DQUxMQkFDSygib3BlbiIsICJjYWNoZSBpZGVudGlmaWVyIGlzICUi
IFBSSXU2NCwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlkZW50aWZpZXI7
IH0pOwogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpPcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNz
aW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwpAQCAtNzUsMTYgKzc1LDE2IEBAIHZvaWQgQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlbW92
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmVtb3ZlICglIiBQUkl1NjQgIikgY2FjaGUgJSIgUFJJdTY0LCByZXF1ZXN0SWRlbnRpZmllciwg
Y2FjaGVJZGVudGlmaWVyKTsKLSAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5yZW1vdmUoY2Fj
aGVJZGVudGlmaWVyLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmll
ck9yRXJyb3ImIHJlc3VsdCkgeworICAgIEVuZ2luZTo6cmVtb3ZlKHNlc3Npb25JRCwgY2FjaGVJ
ZGVudGlmaWVyLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9y
RXJyb3ImIHJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VE
X0lOX0NBTExCQUNLKCJyZW1vdmUiLCAicmVtb3ZlZCBjYWNoZSAlIiBQUkl1NjQsIFtdKGNvbnN0
IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pZGVudGlmaWVyOyB9KTsKICAgICAgICAgY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVtb3Zl
Q29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklE
KCkpOwogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNh
Y2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291
bnRlcikKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJjYWNoZXMgKCUiIFBSSXU2NCAiKSIsIHJlcXVlc3RJZGVudGlm
aWVyKTsKLSAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4s
IHVwZGF0ZUNvdW50ZXIsIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpKSwgc2Vzc2lvbklELCBvcmlnaW4sIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUluZm9z
T3JFcnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoc2Vzc2lvbklE
LCBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50ZXIsIFtjb25uZWN0aW9uID0gbWFrZVJlZiht
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCBvcmlnaW4sIHJlcXVlc3RJZGVu
dGlmaWVyXShDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xP
R19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJjYWNoZXMiLCAiY2FjaGVzIHNpemUg
aXMgJWx1IiwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmluZm9zLnNpemUo
KTsgfSk7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OlVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KSwgc2Vz
c2lvbklELnNlc3Npb25JRCgpKTsKICAgICB9KTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXEKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmll
dmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsKQogewog
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlUmVjb3JkcyAoJSIgUFJJdTY0ICIp
IGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7
Ci0gICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkucmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRp
ZmllciwgV1RGTW92ZSh1cmwpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNv
bm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9y
JiYgcmVzdWx0KSB7CisgICAgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoc2Vzc2lvbklELCBjYWNo
ZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRz
T3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExP
V0VEX0lOX0NBTExCQUNLKCJyZXRyaWV2ZVJlY29yZHMiLCAicmVjb3JkcyBzaXplIGlzICVsdSIs
IFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwogICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpV
cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpOwogICAgIH0pOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWluCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlbGV0ZU1hdGNoaW5nUmVj
b3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucykKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkZWxldGVNYXRjaGluZ1JlY29yZHMgKCUiIFBSSXU2NCAiKSBp
biBjYWNoZSAlIiBQUkl1NjQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpOwot
ICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLmRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhjYWNoZUlk
ZW50aWZpZXIsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFtjb25uZWN0aW9u
ID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0
SWRlbnRpZmllcl0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSB7CisgICAgRW5n
aW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMoc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFtjb25uZWN0aW9uID0gbWFrZVJlZiht
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0o
UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0ZVTkNUSU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0soImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyIs
ICJkZWxldGVkICVsdSByZWNvcmRzIiwgIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5zaXplKCk7IH0pOwogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpEZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVu
dGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwpAQCAtMTEx
LDcgKzExMSw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0
Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiB2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OnB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8
UmVjb3JkPiYmIHJlY29yZHMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicHV0UmVj
b3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCAiLCAlbHUgcmVjb3JkcyIsIHJl
cXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMuc2l6ZSgpKTsKLSAgICBF
bmdpbmU6OmZyb20oc2Vzc2lvbklEKS5wdXRSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92
ZShyZWNvcmRzKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlmaWVyc09yRXJy
b3ImJiByZXN1bHQpIHsKKyAgICBFbmdpbmU6OnB1dFJlY29yZHMoc2Vzc2lvbklELCBjYWNoZUlk
ZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jk
SWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNU
SU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0soInB1dFJlY29yZHMiLCAicHV0ICVsdSByZWNvcmRz
IiwgIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwogICAg
ICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpQdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9u
SUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghY291bnRlcisrKQotICAgICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5sb2Nr
KGNhY2hlSWRlbnRpZmllcik7CisgICAgICAgIEVuZ2luZTo6bG9jayhzZXNzaW9uSUQsIGNhY2hl
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVy
ZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpCkBAIC0xNDcsMjAgKzE0NywyMiBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmRlcmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0XwogICAgIGlm
ICgtLXJlZmVyZW5jZVJlc3VsdC0+dmFsdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVuZ2lu
ZTo6ZnJvbShzZXNzaW9uSUQpLnVubG9jayhjYWNoZUlkZW50aWZpZXIpOworICAgIEVuZ2luZTo6
dW5sb2NrKHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyKTsKICAgICByZWZlcmVuY2VzLnJlbW92
ZShyZWZlcmVuY2VSZXN1bHQpOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewotICAgIEVuZ2luZTo6
ZnJvbShzZXNzaW9uSUQpLmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2luLCBbY29ubmVj
dGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVx
dWVzdElkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7CisgICAgRW5n
aW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKHNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW4p
LCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Np
b25JRCwgcmVxdWVzdElkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7
CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OkNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb25Db21wbGV0ZWQocmVxdWVzdElkZW50aWZp
ZXIsIGVycm9yKSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKICAgICB9KTsKIH0KIAogdm9pZCBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjplbmdpbmVSZXByZXNlbnRhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6RW5naW5lUmVwcmVzZW50YXRpb25Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIs
IEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJlcHJlc2VudGF0aW9uKCkpLCBzZXNzaW9uSUQuc2Vz
c2lvbklEKCkpOworICAgIEVuZ2luZTo6cmVwcmVzZW50YXRpb24oc2Vzc2lvbklELCBbY29ubmVj
dGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVx
dWVzdElkZW50aWZpZXJdIChhdXRvJiYgcmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RW5naW5lUmVw
cmVzZW50YXRpb25Db21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgcmVwcmVzZW50YXRpb24g
fSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCBlNTdjNWUzOTBlMDYzZDlmYjFkNWQwZDkyNWZhMmUz
MWU3YWZkMjIzLi5iYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNkYmE2MTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTAsOSArNTAsOSBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAotICAgIHZvaWQgb3BlbihQQUw6OlNlc3Np
b25JRCwgdWludDY0X3Qgb3BlblJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSk7CisgICAgdm9pZCBvcGVuKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBvcGVuUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmLCBTdHJpbmcmJiBjYWNoZU5hbWUpOwogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0
cmlldmVDYWNoZXNJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCB1cGRhdGVDb3VudGVyKTsKKyAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwg
dWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKICAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRz
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMmJik7CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZl
cmVuY2UoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBkZXJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsK
IAotICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwor
ICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKICAgICB2b2lk
IGVuZ2luZVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllcik7CiAKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDdlNDhjZjhmMzdmMzdiYzVkMjI1ZjQxZjhlM2U5
NTIwNmEwMWQ3ZjIuLjAxNzE4NDMyMzAwMGE5NDkwNTA4YWVjM2M5ODAzZWZkZDRiZGY3ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KQEAgLTExMCwxMiArMTEwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJv
Y2Vzc0MKIAogICAgIEFTU0VSVCghbV9kaXNrQ2FjaGVJc0Rpc2FibGVkRm9yVGVzdGluZyk7CiAK
LSAgICBpZiAoIXBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKSB7Ci0g
ICAgICAgIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VE
aXJlY3Rvcnk7Ci0gICAgICAgIG1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgPSBwYXJhbWV0
ZXJzLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwotICAgIH0KLQogI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCiAgICAg
aW5pdGlhbGl6ZVdpRmlBc3NlcnRpb25zKHBhcmFtZXRlcnMpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCmluZGV4IGU5ODliZDhlOTlkNDExMWNmZDczN2EwNjUwMzc3NWYzZGRjMDA1ZjYu
LjFlMDJlOTFjOGNhMzVlNGE5N2NlYWVmNjE4MDkxNTVmZGQ1M2QyZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCkBAIC03MiwxMiArNzIsNiBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYQogICAg
IGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcykKICAg
ICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7CiAKLSAgICBpZiAoIXNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpICYmICFwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc051bGwo
KSkgewotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgICAgICBzZXNz
aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShwYXJhbWV0ZXJzLmNhY2hlU3Rv
cmFnZURpcmVjdG9yeSkpOwotICAgICAgICBzZXNzaW9uLT5zZXRDYWNoZVN0b3JhZ2VQZXJPcmln
aW5RdW90YShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKTsKLSAgICB9Ci0K
ICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9u
OjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuY3BwCmluZGV4IDU3ZGFkNTVjNjU5YjY0MjlmZjVjNjgxYTBlMTZiZDEzMmE4OGU3ZTgu
LjhhYzk5NTBiNWFiYjQ0YTY1YWE1NGNiZTE0NjJkNmQ0ODYzYTA3OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKQEAgLTQx
LDkgKzQxLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0Nvb2tpZVN0
b3JhZ2VJZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZVBhdGhFeHRlbnNp
b25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBwZW5kaW5nQ29va2llczsKLSAgICBlbmNvZGVyIDw8
IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICBlbmNvZGVyIDw8IGNhY2hlU3RvcmFnZVBlck9y
aWdpblF1b3RhOwotICAgIGVuY29kZXIgPDwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
QEAgLTY3LDI5ICs2NCwxMyBAQCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzPiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQwogICAgIGRlY29kZXIg
Pj4gcGVuZGluZ0Nvb2tpZXM7CiAgICAgaWYgKCFwZW5kaW5nQ29va2llcykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjYWNoZVN0b3Jh
Z2VEaXJlY3Rvcnk7Ci0gICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAg
aWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YTsKLSAgICBkZWNvZGVyID4+IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwotICAgIGlmICgh
Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY2FjaGVTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGRlY29kZXIgPj4gY2FjaGVTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIAotICAg
IHJldHVybiB7eyBXVEZNb3ZlKCp1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciksIFdU
Rk1vdmUoKmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92ZSgqcGVuZGlu
Z0Nvb2tpZXMpLCBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3RvcnkpLCBXVEZNb3ZlKCpjYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSksIFdURk1vdmUoKmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoKm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyl9fTsKKyAg
ICByZXR1cm4ge3sgV1RGTW92ZSgqdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpLCBX
VEZNb3ZlKCpjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoKnBlbmRp
bmdDb29raWVzKSwgV1RGTW92ZSgqbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKX19OwogfQogCiBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6cHJp
dmF0ZVNlc3Npb25QYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBB
U1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotICAgIHJldHVybiB7IHsgfSwgeyB9LCB7
IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1
b3RhLCB7IH0sIHsgc2Vzc2lvbklELCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMKKyAg
ICByZXR1cm4geyB7IH0sIHsgfSwgeyB9LCB7IHNlc3Npb25JRCwgeyB9LCBBbGxvd3NDZWxsdWxh
ckFjY2Vzczo6WWVzCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICwgbnVsbHB0cgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaAppbmRleCA4ZDQzNDk2MzU1MTY2MmQ4MTg5MTM1NDMxMzIyMjA2ZWQ1ZTQ1YTA4Li5hYmZm
NTAzYmY2Nzg1NDk5NjI5MWE3Y2MyYzU3ZTMxOGU5MDM0NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTU0LDkgKzU0LDYg
QEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBWZWN0b3I8dWludDhf
dD4gdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IHBlbmRpbmdDb29raWVzOwotICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VE
aXJlY3Rvcnk7Ci0gICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyAwIH07
Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyBuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyNTE0NTY4ZTQ4NDM2
NTA4ZjI1NWRkNDM4MWNlYTc0ZmI1ODk3YjE3Li5lZjFhYTA4ODc3ZDAzZjVjYmMyOWEwYTZiNDgz
YWYwYjQxY2QxNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTU3NCw2ICs1NzQsNDEgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTeW5jQWxsQ29va2llcygpCiAgICAgfQogfQogCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmFkZFNlc3Npb24oUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYg
c3RvcmUpCit7CisgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIHsgc3RvcmUtPnBhcmFtZXRl
cnMoKSB9LCAwKTsKKyAgICBpZiAoIXN0b3JlLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQor
ICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldChzdG9yZS0+c2Vzc2lvbklEKCksIFdURk1v
dmUoc3RvcmUpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSkK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uIHsg
c2Vzc2lvbklEIH0sIDApOworICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMucmVtb3ZlKHNlc3Npb25JRCk7Cit9CisKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV93ZWJzaXRlRGF0YVN0
b3Jlcy5maW5kKHNlc3Npb25JRCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fd2Vic2l0ZURhdGFT
dG9yZXMuZW5kKCkpIHsKKyAgICAgICAgYXV0byBxdW90YSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0
ZURhdGFTdG9yZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIDogV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25J
RCwgcXVvdGEsIHsgfSwgeyB9IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAg
ICBhdXRvJiBzdG9yZSA9ICppdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgY2FjaGVTdG9yYWdl
RGlyZWN0b3J5ID0gc3RvcmUuY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBpZiAoIWNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjYWNoZVN0b3JhZ2VE
aXJlY3RvcnksIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7
IHNlc3Npb25JRCwgc3RvcmUuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSwgc3RvcmUuY2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KCksIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSB9LCAwKTsKK30KKwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmNvbnRlbnRFeHRlbnNpb25SdWxlcyhVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGVmNjY1NmNiN2I2OTNk
ZDQ1NTRmZmUyYWY0YWJkODA1MGMwMzYwNjIuLjZjYzUyMWM2YWMxZDRjNGNmMGFhNDg3Mjc0OTgx
MDdjMjBhM2E0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIE5ldHdv
cmtQcm9jZXNzUHJveHlfaAogI2RlZmluZSBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKIAorI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5o
IgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAi
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKQEAgLTk5LDYgKzEwMCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwogI2VuZGlmCiAKKyAgICB2b2lkIGFkZFNl
c3Npb24oUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCk7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NQcm94eShXZWJQ
cm9jZXNzUG9vbCYpOwogCkBAIC0xNDMsNiArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0
b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKTsKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICNlbmRpZgorICAgIHZvaWQgcmV0
cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEKTsKIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBjb250ZW50RXh0ZW5zaW9uUnVsZXMoVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CkBAIC0xNzcsNiArMTgyLDggQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIEhhc2hTZXQ8V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkqPiBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXM7
CiAjZW5kaWYKKworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxXZWJzaXRlRGF0
YVN0b3JlPj4gbV93ZWJzaXRlRGF0YVN0b3JlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEwODg2MmFmYjYzYTg1MjRiN2M1
OWIyNTI0NmIzYmUwZDZhOWM0MGIuLjk5NmE0YTU5NWQyOTM1MzcyODdkMmUwYTY3MjIyOTgzZjBj
MmI1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTUzLDQgKzUzLDYgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0
OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAjZW5kaWYKKwor
ICAgIFJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXgg
OWI3YWQ4MmMxOTRmYWE0ZTA4N2YwNDZkMDNiNTcwYThkNGQ5OGZkNy4uYWMzYjkxM2YyZDM0ZGFj
YjAxMTM4OWNjNzUwNDVhMGU3MWIyNmYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcApAQCAtNDQ4LDIyICs0NDgsMTkgQEAgTmV0d29ya1Byb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUq
IHdpdGgKIHsKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykgewogICAgICAgICBpZiAod2l0aFdl
YnNpdGVEYXRhU3RvcmUpIHsKLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHdpdGhXZWJzaXRlRGF0
YVN0b3JlLT5wYXJhbWV0ZXJzKCkpLCAwKTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmFkZFNlc3Npb24obWFrZVJlZigqd2l0aFdlYnNpdGVEYXRhU3RvcmUpKTsKICAgICAgICAgICAg
IHdpdGhXZWJzaXRlRGF0YVN0b3JlLT5jbGVhclBlbmRpbmdDb29raWVzKCk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAgIH0KIAotICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7Ci0KICAgICBtX25ldHdvcmtQ
cm9jZXNzID0gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzKTsKIAogICAgIE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKICAgICBpZiAod2l0aFdl
YnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyA9IHdpdGhXZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0ZXJzKCk7Ci0gICAgICAgIHBhcmFtZXRl
cnMuZGVmYXVsdFNlc3Npb25QYXJhbWV0ZXJzID0gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRTZXNz
aW9uUGFyYW1ldGVycyA9IFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBjb25j
ZXB0dWFsbHkgY29ycmVjdCwgYnV0IGl0J3MgbmVlZGVkIHRvIHByZXNlcnZlIGJlaGF2aW9yIGlu
dHJvZHVjZWQgaW4gcjIxMzI0MS4KICAgICAgICAgLy8gV2Ugc2hvdWxkIHNlcGFyYXRlIHRoZSBj
b25jZXB0IG9mIHRoZSBkZWZhdWx0IHNlc3Npb24gZnJvbSB0aGUgY3VycmVudGx5IHVzZWQgcGVy
c2lzdGVudCBzZXNzaW9uLgpAQCAtNDgyLDExICs0NzksNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSog
d2l0aAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1
c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFtZXRlcnMuY2FjaGVT
dG9yYWdlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlID8gbV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgOiBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBpZiAoIXBh
cmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMu
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7Ci0gICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkgOiBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7Ci0KICAgICBwYXJhbWV0ZXJzLmRpc2tD
YWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAg
ICAgaWYgKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwpAQCAtNTM5LDEyICs1MzEsMTIgQEAgTmV0d29ya1Byb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUq
IHdpdGgKICAgICB9CiAKICAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKSB7Ci0gICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRl
RGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRl
cnMoKSksIDApOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hZGRTZXNzaW9uKG1ha2VSZWYo
bV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOwog
ICAgIH0KICAgICAKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsKLSAgICAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVE
YXRhU3RvcmUod2l0aFdlYnNpdGVEYXRhU3RvcmUtPnBhcmFtZXRlcnMoKSksIDApOworICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5hZGRTZXNzaW9uKG1ha2VSZWYoKndpdGhXZWJzaXRlRGF0YVN0
b3JlKSk7CiAgICAgICAgIHdpdGhXZWJzaXRlRGF0YVN0b3JlLT5jbGVhclBlbmRpbmdDb29raWVz
KCk7CiAgICAgfQogCkBAIC03MjUsNyArNzE3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0
QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGUK
ICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFT
dG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJh
bWV0ZXJzKCkpLCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKKyAgICAgICAgICAgIG5ldHdv
cmtQcm9jZXNzKCktPnJlbW92ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCkBA
IC0xMjAyLDExICsxMTk0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5n
V2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgYXV0byBzZXNzaW9uSUQg
PSBwYWdlLnNlc3Npb25JRCgpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewog
ICAgICAgICBBU1NFUlQocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKTsKLSAgICAgICAgc2Vu
ZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRl
RGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSkpOworICAgICAg
ICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFk
ZFNlc3Npb24obWFrZVJlZihwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkpOwogICAgICAgICBwYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoc2Vz
c2lvbklEKSksIDApOwogICAgICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclBlbmRp
bmdDb29raWVzKCk7CiAgICAgfSBlbHNlIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSkgewotICAgICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUocGFnZS53ZWJzaXRl
RGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSk7CisgICAgICAgIGlmIChtX25ldHdvcmtQcm9jZXNz
KQorICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbihtYWtlUmVmKHBhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpKSk7CiAgICAgICAgIHBhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUocGFnZS53ZWJzaXRlRGF0YVN0b3Jl
KCkucGFyYW1ldGVycygpKSwgMCk7CiAgICAgICAgIHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmNs
ZWFyUGVuZGluZ0Nvb2tpZXMoKTsKIApAQCAtMTI0Miw3ICsxMjM2LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHkmIHBhZ2Up
CiAKICAgICAgICAgLy8gVGhlIGxhc3QgdXNlciBvZiB0aGlzIG5vbi1kZWZhdWx0IFBBTDo6U2Vz
c2lvbklEIGlzIGdvbmUsIHNvIGNsZWFuIGl0IHVwIGluIHRoZSBjaGlsZCBwcm9jZXNzZXMuCiAg
ICAgICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKHNlc3Npb25J
RCksIDApOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+cmVtb3ZlU2Vzc2lvbihzZXNz
aW9uSUQpOwogICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpEZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpLCAwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggYTM3M2YwZjc4N2E3ZTRmOGI1NzQ0NjEzMmJhY2Rk
MDAxYTA1NGU1Mi4uYzBlMTYwNTM4MWYyNWQ4OTM1YWYxNzg1YzNlMjY0ZmU2ZDVlNzMzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNzgsMTEgKzc4LDYgQEAgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAg
ICAgaWYgKCFjb29raWVGaWxlLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUoY29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRl
bnNpb25IYW5kbGUpOwogCi0gICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGly
ZWN0b3J5LmlzTnVsbCgpKSB7Ci0gICAgICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRl
cnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgfQotCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKaW5kZXggNTQ4NzYxYTNmYzQ5M2M5MWZjNzMzYWNmMWI5ODNjNTBkOWQw
ZTQ0ZS4uYjgzMjRjYmFlMWUyOWFiNWVmNzQ4MzI3MTE3ZDQzNWM0NWRjYmQ1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKQEAgLTExNiw4ICsxMTYsMTAgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVE
YXRhU3RvcmUoKQogICAgIGlmIChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkgJiYgbV9zZXNzaW9uSUQg
IT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgewogICAgICAgICBBU1NFUlQo
bm9uRGVmYXVsdERhdGFTdG9yZXMoKS5nZXQobV9zZXNzaW9uSUQpID09IHRoaXMpOwogICAgICAg
ICBub25EZWZhdWx0RGF0YVN0b3JlcygpLnJlbW92ZShtX3Nlc3Npb25JRCk7Ci0gICAgICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkp
Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb25JRCkpOworICAgICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29s
cygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cmVt
b3ZlU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341762</attachid>
            <date>2018-06-01 08:24:39 -0700</date>
            <delta_ts>2018-06-14 16:46:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186166-20180601082439.patch</filename>
            <type>text/plain</type>
            <size>57494</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjMDBlMTlhZTQ2NTdm
YWViMDkwYmYyNzRhZGIxNTU1NjIyMDRkOC4uOTVhOTdkYTIzMDFkMTljMzg0OTgzNzhkNWUyNGE0
YTEzZDQ4NDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA1LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9j
ZXNzIGdldCBjYWNoZSBzdG9yYWdlIHBhcmFtZXRlcnMgYXQgY3JlYXRpb24gb2YgdGhlIENhY2hl
U3RvcmFnZSBlbmdpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjYWNoZVN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIwMTgtMDUtMzEgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBNYXJnaW4gYm94
IGlzIGJvcmRlciBib3ggKyBtYXJnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyM2RlNWRkNzA5OTE0ZWRlNDVi
YzE1M2VlNTNkYjZlZGVmMzNmMDNjLi45ZDEyMzY2YTMwMDAxMWZiNTM3NjQwYTM4NmNiMTFjMDNk
NWY2NDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE4LTA1LTMxICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9jZXNzIGdl
dCBjYWNoZSBzdG9yYWdlIHBhcmFtZXRlcnMgYXQgY3JlYXRpb24gb2YgdGhlIENhY2hlU3RvcmFn
ZSBlbmdpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2UgQ2FjaGVTdG9yYWdlOjpFbmdpbmUgY3JlYXRpb24gYXN5bmNocm9ub3VzLgorICAgICAg
ICBVcGRhdGUgRW5naW5lIHB1YmxpYyBtZXRob2RzIGJlIHN0YXRpYyBtZXRob2RzIHRha2luZyBh
IFNlc3Npb25JRCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgZW5naW5lLgorCisg
ICAgICAgIEFkZCBJUEMgbWV0aGRvcyB0byByZXRyaWV2ZSBjYWNoZSBzdG9yYWdlIHBhcmFtZXRl
cnMgZnJvbSBOZXR3b3JrUHJvY2VzcyB0byBVSVByb2Nlc3MuCisKKyAgICAgICAgQWRkIE5ldHdv
cmtQcm9jZXNzUHJveHkgYWJpbGl0eSB0byBjb21wdXRlIHRoZSBjYWNoZSBzdG9yYWdlIHBhcmFt
ZXRlcnMgYmFzZWQgb24gdGhlIFNlc3Npb25JRC4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSwg
bWFrZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IHN0b3JlIGEgbWFwIG9mIFNlc3Npb25JRC10by1XZWJz
aXRlRGF0YVN0b3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNhY2hlU3RvcmFnZVBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9y
YWdlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0
b3JhZ2VEaXJlY3RvcnkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZnJvbSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnB1dFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmxvY2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6dW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6
OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpkZWZhdWx0RW5naW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OnNob3VsZFBlcnNpc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6d2Vha1B0ckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6fkNhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6Y2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cHV0UmVjb3Jkcyk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmVuZ2luZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2
YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0
YVN0b3JlKToKKwogMjAxOC0wNS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAogICAgICAgICBbSlNDXSBQYXNzIFZNJiBwYXJhbWV0ZXIgYXMgbXVjaCBhcyBwb3Nz
aWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggMmE3ODY0NDY1NmNjYjI5YTNmNjhjODhhMWIwNmQ1ZDEx
OTdmNDBhNi4uNmU5OTM5M2RmMmI4OWQ2YzBmZmRhZGQ5ZjI0MWFiOGZjMDkyZmI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCkBAIC04NSwxMSArODUsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
TlNIVFRQQ29va2llU3RvcmFnZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShTdHJpbmcmJiBwYXRoKSB7IG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShw
YXRoKTsgfQotICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsgfQotICAgIHZvaWQgc2V0Q2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpIHsgbV9jYWNoZVN0b3JhZ2VQ
ZXJPcmlnaW5RdW90YSA9IHF1b3RhOyB9Ci0KICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
VVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbnN1cmVTZXNz
aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlLCBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJik7CiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KFBBTDo6U2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiwgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYpOwpAQCAtMTczLDkgKzE2OCw2IEBAIHBy
aXZhdGU6CiAKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRlbnRpYWxTdG9yYWdlOwogCi0g
ICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgIHVpbnQ2NF90IG1fY2FjaGVT
dG9yYWdlUGVyT3JpZ2luUXVvdGEgeyAwIH07Ci0KICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdF
X1BBUlRJVElPTklORykKICAgICBib29sIHNob3VsZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgU3Ry
aW5nJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKSBjb25zdDsKICAgICBib29sIHNob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgU3RyaW5nJiB0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggMjlkNjI0NjlkNDg3ZTAyNTgwZTM1ZjlkNzM5YzY1N2JiYzE4
MWUzYy4uYTE2MDgxNGQ2MzA3ODZkYTQ5NGZkZWIwZTgyZTdkYzUwM2Q4NGIyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzMiw2
ICsxMzIsMTAgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKCkKIAogTmV0d29ya1By
b2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCiB7CisgICAgZm9yIChhdXRvJiBjYWxsYmFja3MgOiBt
X2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3MudmFsdWVzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgICAgIGNhbGxiYWNrKFN0cmlu
ZyB7IH0sIDApOworICAgIH0KIH0KIAogQXV0aGVudGljYXRpb25NYW5hZ2VyJiBOZXR3b3JrUHJv
Y2Vzczo6YXV0aGVudGljYXRpb25NYW5hZ2VyKCkKQEAgLTU2NCw3ICs1NjgsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaQogICAgIH0pOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCi0gICAgICAgIENhY2hlU3RvcmFnZTo6
RW5naW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJBbGxDYWNoZXMoY2xlYXJUYXNrc0hhbmRsZXIp
OworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoc2Vzc2lvbklE
LCBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCkpOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSkKICAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZpZWRTaW5jZSwgW2NsZWFy
VGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsgfSk7CkBAIC02MDgs
NyArNjEyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQotICAgICAgICAgICAgQ2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVhckNhY2hlc0Zvck9yaWdpbihvcmlnaW5E
YXRhLCBjbGVhclRhc2tzSGFuZGxlcik7CisgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oc2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbkRhdGEgeyBv
cmlnaW5EYXRhIH0sIGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKSk7CiAgICAgfQogCiAgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUp
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKQEAgLTg0OCwxOSArODUyLDI1IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAg
V2ViQ29yZTo6cHJlZmV0Y2hETlMoaG9zdG5hbWUpOwogfQogCi1TdHJpbmcgTmV0d29ya1Byb2Nl
c3M6OmNhY2hlU3RvcmFnZURpcmVjdG9yeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgaWYgKHNlc3Npb25JRCA9PSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpKQotICAgICAgICByZXR1cm4gbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgbV9jYWNo
ZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLmVuc3VyZShzZXNzaW9uSUQsIFsmXSB7CisgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OlJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25JRCB9LCAw
KTsKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2s+
IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsK
K30KIAotICAgIGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1cm4geyB9
Owordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHF1b3RhLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VE
aXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZSkKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLmZpbmQoc2Vzc2lv
bklEKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJh
Y2tzLmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICByZXR1cm4gc2Vzc2lvbi0+Y2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KGhhbmRsZSk7CisgICAgYXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKGl0ZXJhdG9yLT52YWx1
ZSk7CisgICAgbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLnJlbW92ZShpdGVyYXRv
cik7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJh
Y2soU3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKQEAg
LTg3OSwxMSArODg5LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW4KICNlbmRpZgogfQogCi11
aW50NjRfdCBOZXR3b3JrUHJvY2Vzczo6Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSBjb25z
dAotewotICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwotfQotCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYg
c2NoZW1lKSBjb25zdAogewogICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
U2VjdXJlKHNjaGVtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKaW5kZXggODNlYTI0MDFiMGNhMTZmNzhkZmZlNTZmZTVkYjkwZmM2MjgxYWM2ZC4u
ZWI1NzI2MzlkMDJlMGQzNWFlNjEyMDEwNTBiZTdjOGM4MzUxNDEyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTQzLDggKzE0Myw5IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29u
c3QgeyByZXR1cm4gbV9sb2FkVGhyb3R0bGVMYXRlbmN5OyB9Ci0gICAgU3RyaW5nIGNhY2hlU3Rv
cmFnZURpcmVjdG9yeShQQUw6OlNlc3Npb25JRCkgY29uc3Q7Ci0gICAgdWludDY0X3QgY2FjaGVT
dG9yYWdlUGVyT3JpZ2luUXVvdGEoKSBjb25zdDsKKworICAgIHVzaW5nIENhY2hlU3RvcmFnZVBh
cmFtZXRlcnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiwg
dWludDY0X3QgcXVvdGEpPjsKKyAgICB2b2lkIGNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpT
ZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFjayYmKTsKIAogICAgIHZvaWQg
cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5KTsKIApAQCAtMjA4LDYgKzIwOSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNs
ZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKTsKIAorICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGFyYW1l
dGVycyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcXVvdGEsIFN0cmluZyYmIGNhY2hlU3RvcmFn
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHRha2UgYSBzZXNzaW9uIElEIHNvIHdlIGNhbiBpZGVudGlmeSB3aGljaCBk
aXNrIGNhY2hlIHRvIGRlbGV0ZS4KICAgICB2b2lkIGNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCkBA
IC0yNTUsOCArMjU4LDYgQEAgcHJpdmF0ZToKICAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9j
ZXNzZXMuCiAgICAgVmVjdG9yPFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCi0gICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGly
ZWN0b3J5OwotICAgIHVpbnQ2NF90IG1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyAwIH07
CiAgICAgU3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OwogICAgIGJvb2wgbV9oYXNTZXRDYWNo
ZU1vZGVsOwogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsOwpAQCAtMjk5LDYgKzMwMCw4IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV90cmFja3NSZXNvdXJjZUxvYWRNaWxlc3Rv
bmVzIHsgZmFsc2UgfTsKKworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxDYWNo
ZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2s+PiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxs
YmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDU2
M2E1NjVmM2UyYmYwZWYxMTFhZmRhNGMyMDlhNTEyMGNmYTliNTUuLjgzNzZiYmM5YjQ4YTZiNDEz
OGM0MTRhYmRkOWE2Y2M4Zjk0ZWVhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtOTgsNCArOTgsNiBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVnaXN0
ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVy
VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChTdHJpbmcgc2NoZW1lKQorCisgICAgU2V0
Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHF1b3RhLCBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBmYzIyNTU0NDA1ODIzOThhMGI2YzIyY2NiYmNlZTJhY2M3ZjJkODUyLi5jYTA5OGQz
ZWFlNzAzNTc0YWU4OTFmZDA5MDUxNzEyNTkxODhmMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcApAQCAtNDYsOSArNDYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIuZW5jb2RlRW51bShjYWNoZU1vZGVsKTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZVNp
emVPdmVycmlkZTsKICAgICBlbmNvZGVyIDw8IGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uOwotICAgIGVuY29kZXIgPDwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgIGVuY29k
ZXIgPDwgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7Ci0gICAgZW5jb2RlciA8PCBjYWNoZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dp
bmc7CkBAIC0xMzIsMTYgKzEyOSw2IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgc3Rk
OjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNhY2hlU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGlza0NhY2hl
RGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IDA2ZjRkNDAwNTBmZjFhM2UyOGI4NjEyYmNkZDAwODVmYTg3NGVlYzEuLjJm
MzQ3Y2ExYWZiNTg4NmMxYTEzMTMyY2E5Y2E5OTFkNTM0ZGU1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKQEAgLTU2LDkgKzU2LDYgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICBpbnQ2NF90IGRpc2tDYWNoZVNpemVPdmVycmlkZSB7IC0x
IH07CiAgICAgYm9vbCBjYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiB7IHRydWUg
fTsKIAotICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgdWludDY0X3QgY2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNh
Y2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgZGlza0NhY2hl
RGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkaXNrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CiAgICAgYm9vbCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZp
Y2FjeUxvZ2dpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGRkYjhjMjUxMjg1
YjVmYmNjN2E2YzM4ZDM1YjcyZTE4NDMwYmNmNzIuLmU2MjZlMjM3ODBlN2E0ZjRlYWZmZTE4YmE1
NTIwMmE3ZjBlMDc3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTgwLDE1ICs4MCwyMyBAQCBF
bmdpbmU6On5FbmdpbmUoKQogICAgICAgICBjYWxsYmFjayhEYXRhIHsgfSwgMSk7CiB9CiAKLUVu
Z2luZSYgRW5naW5lOjpmcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgRW5naW5l
Ojpmcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZChFbmdpbmUmKT4m
JiBjYWxsYmFjaykKIHsKKyAgICBhdXRvIGl0ZXJhdG9yID0gZ2xvYmFsRW5naW5lTWFwKCkuZmlu
ZChzZXNzaW9uSUQpOworICAgIGlmIChpdGVyYXRvciAhPSBnbG9iYWxFbmdpbmVNYXAoKS5lbmQo
KSkgeworICAgICAgICBjYWxsYmFjaygqaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgc2Vz
c2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKTsKIAotICAg
IGF1dG8gYWRkUmVzdWx0ID0gZ2xvYmFsRW5naW5lTWFwKCkuYWRkKHNlc3Npb25JRCwgbnVsbHB0
cik7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gRW5naW5lOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmNhY2hlU3RvcmFnZURpcmVjdG9yeShzZXNzaW9uSUQpKTsKLSAgICByZXR1cm4gKmFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hl
U3RvcmFnZVBhcmFtZXRlcnMoc2Vzc2lvbklELCBbc2Vzc2lvbklELCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShhdXRvJiYgcm9vdFBhdGgsIGF1dG8gcXVvdGEpIHsKKyAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBnbG9iYWxFbmdpbmVNYXAoKS5hZGQoc2Vzc2lvbklELCBudWxscHRyKTsK
KyAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UmVmKCpuZXcgRW5naW5lIHsgU3RyaW5nIHsgcm9vdFBh
dGggfSwgcXVvdGEgfSk7CisgICAgICAgIGNhbGxiYWNrKCphZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBFbmdpbmU6OmRlc3Ryb3lFbmdpbmUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQpAQCAtOTcsMjAgKzEwNSwxMDEgQEAgdm9pZCBFbmdpbmU6OmRlc3Ry
b3lFbmdpbmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIGdsb2JhbEVuZ2luZU1hcCgp
LnJlbW92ZShzZXNzaW9uSUQpOwogfQogCi12b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBib29sIHNob3VsZENvbXB1dGVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBmcm9t
KHNlc3Npb25JRCwgW3Nob3VsZENvbXB1dGVTaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICAgICAg
ZW5naW5lLmZldGNoRW50cmllcyhzaG91bGRDb21wdXRlU2l6ZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6b3BlbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3RyaW5nJiYgY2Fj
aGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW29yaWdpbiA9IFdURk1vdmUob3Jp
Z2luKSwgY2FjaGVOYW1lID0gV1RGTW92ZShjYWNoZU5hbWUpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBlbmdpbmUub3Blbihv
cmlnaW4sIGNhY2hlTmFtZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOworfQorCit2b2lk
IEVuZ2luZTo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllciwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAg
ICAgICAgZW5naW5lLnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCB1aW50NjRfdCB1cGRh
dGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgZnJvbShzZXNzaW9uSUQpLmZldGNoRW50cmllcyhzaG91bGRDb21w
dXRlU2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGZyb20oc2Vzc2lvbklE
LCBbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVyLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBlbmdpbmUu
cmV0cmlldmVDYWNoZXMob3JpZ2luLCB1cGRhdGVDb3VudGVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfSk7Cit9CisKKwordm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYg
dXJsLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgZnJvbShzZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZpZXIsIHVybCA9IFdURk1vdmUo
dXJsKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxl
IHsKKyAgICAgICAgZW5naW5lLnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1v
dmUodXJsKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6
cHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYgcmVjb3Jkcywg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllciwgcmVjb3JkcyA9
IFdURk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVu
Z2luZSkgbXV0YWJsZSB7CisgICAgICAgIGVuZ2luZS5wdXRSZWNvcmRzKGNhY2hlSWRlbnRpZmll
ciwgV1RGTW92ZShyZWNvcmRzKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOwogfQogCi1F
bmdpbmUmIEVuZ2luZTo6ZGVmYXVsdEVuZ2luZSgpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTWF0Y2hp
bmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWY8RW5naW5lPj4gZGVmYXVsdEVuZ2luZSA9IHsgRW5naW5lOjpjcmVhdGUoTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZURpcmVjdG9yeShzZXNzaW9uSUQpKSB9Owot
ICAgIHJldHVybiBkZWZhdWx0RW5naW5lLmdldCgpOworICAgIGZyb20oc2Vzc2lvbklELCBbY2Fj
aGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1v
dmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkg
bXV0YWJsZSB7CisgICAgICAgIGVuZ2luZS5kZWxldGVNYXRjaGluZ1JlY29yZHMoY2FjaGVJZGVu
dGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgRW5naW5lOjpsb2NrKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQoreworICAgIGZyb20oc2Vzc2lvbklE
LCBbY2FjaGVJZGVudGlmaWVyXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBlbmdp
bmUubG9jayhjYWNoZUlkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6dW5s
b2NrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQor
eworICAgIGZyb20oc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyXShhdXRvJiBlbmdpbmUpIG11
dGFibGUgeworICAgICAgICBlbmdpbmUudW5sb2NrKGNhY2hlSWRlbnRpZmllcik7CisgICAgfSk7
Cit9CisKK3ZvaWQgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgZnJv
bShzZXNzaW9uSUQsIFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgICAgIGVuZ2luZS5jbGVh
ck1lbW9yeVJlcHJlc2VudGF0aW9uKG9yaWdpbiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0p
OworfQorCit2b2lkIEVuZ2luZTo6cmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjYWxsYmFjaykKK3sKKyAg
ICBmcm9tKHNlc3Npb25JRCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVu
Z2luZSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKGVuZ2luZS5yZXByZXNlbnRhdGlvbigp
KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgUmVmPFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmIGFnZ3JlZ2F0b3Ip
Cit7CisgICAgZnJvbShzZXNzaW9uSUQsIFthZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9y
KV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICAgICAgZW5naW5lLmNsZWFyQWxsQ2FjaGVz
KGFnZ3JlZ2F0b3IpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JP
cmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiBvcmlnaW5EYXRhLCBSZWY8V1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I+JiYgYWdncmVnYXRv
cikKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW29yaWdpbkRhdGEgPSBXVEZNb3ZlKG9yaWdpbkRh
dGEpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKV0oYXV0byYgZW5naW5lKSBtdXRh
YmxlIHsKKyAgICAgICAgZW5naW5lLmNsZWFyQ2FjaGVzRm9yT3JpZ2luKG9yaWdpbkRhdGEsIGFn
Z3JlZ2F0b3IpOworICAgIH0pOwogfQogCi1FbmdpbmU6OkVuZ2luZShTdHJpbmcmJiByb290UGF0
aCkKK0VuZ2luZTo6RW5naW5lKFN0cmluZyYmIHJvb3RQYXRoLCB1aW50NjRfdCBxdW90YSkKICAg
ICA6IG1fcm9vdFBhdGgoV1RGTW92ZShyb290UGF0aCkpCisgICAgLCBtX3F1b3RhKHF1b3RhKQog
ewogICAgIGlmICghbV9yb290UGF0aC5pc051bGwoKSkKICAgICAgICAgbV9pb1F1ZXVlID0gV29y
a1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGVTdG9yYWdlRW5naW5lLnNlcmlh
bEJhY2tncm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJh
Y2tncm91bmQpOwpAQCAtMjMyLDcgKzMyMSw3IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGVzRnJv
bURpc2soY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENhY2hlc0NhbGxiCiAg
ICAgaW5pdGlhbGl6ZShbdGhpcywgb3JpZ2luLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYg
Y2FjaGVzID0gbV9jYWNoZXMuZW5zdXJlKG9yaWdpbiwgWyZvcmlnaW4sIHRoaXNdIHsKICAgICAg
ICAgICAgIGF1dG8gcGF0aCA9IGNhY2hlc1Jvb3RQYXRoKG9yaWdpbik7Ci0gICAgICAgICAgICBy
ZXR1cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdp
biB9LCBXVEZNb3ZlKHBhdGgpLCBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gQ2FjaGVzOjpjcmVhdGUo
KnRoaXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdpbiB9LCBXVEZNb3ZlKHBhdGgpLCBt
X3F1b3RhKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIGlmIChjYWNo
ZXMtPmlzSW5pdGlhbGl6ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5kZXggZTI5NzNiMmI1NmVkZjJi
ZDM5NTNkNmU5ZDQwYjAyMThmODFlMDM3Yy4uZjg0MmQzYmVjOWI3MDQzMjVlYjE1OTM4MjEyMzEy
ZDdlNjMyNDNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC01NywyNCArNTcsMjggQEAgY2xhc3MgRW5n
aW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiB7CiBwdWJsaWM6CiAgICAgfkVuZ2luZSgp
OwogCi0gICAgc3RhdGljIEVuZ2luZSYgZnJvbShQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGlj
IHZvaWQgZnJvbShQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZChFbmdpbmUmKT4mJik7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCk7CiAgICAgc3RhdGlj
IHZvaWQgZmV0Y2hFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBib29sIHNob3VsZENvbXB1dGVTaXpl
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4p
PiYmKTsKIAotICAgIHN0YXRpYyBSZWY8RW5naW5lPiBjcmVhdGUoU3RyaW5nJiYgcm9vdFBhdGgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW5naW5lKFdURk1vdmUocm9vdFBhdGgpKSk7IH0KKyAg
ICBzdGF0aWMgdm9pZCBvcGVuKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiwgU3RyaW5nJiYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVu
dGlmaWVyQ2FsbGJhY2smJik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZUNhY2hlcyhQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAK
LSAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9Cisg
ICAgc3RhdGljIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIG9wZW4o
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2
b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2b2lkIHJldHJpZXZlQ2FjaGVz
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CisgICAgc3RhdGlj
IHZvaWQgbG9jayhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgdm9pZCB1bmxvY2soUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
Zmllcik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxi
YWNrJiYpOwotICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKLSAgICB2b2lkIGRlbGV0ZU1h
dGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCBj
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsK
KyAgICBzdGF0aWMgdm9pZCByZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogCi0gICAgdm9pZCBsb2NrKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB1bmxvY2sodWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckFsbENhY2hlcyhQQUw6OlNlc3Npb25JRCwgUmVmPFdU
Rjo6Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckNhY2hlc0Zv
ck9yaWdpbihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJl
ZjxXVEY6OkNhbGxiYWNrQWdncmVnYXRvcj4mJik7CisKKyAgICBib29sIHNob3VsZFBlcnNpc3Qo
KSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKICAgICB2b2lkIHdyaXRlRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB2b2lkIHJlYWRGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgTmV0d29ya0Nh
Y2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJik7CkBAIC04NCwxNyArODgsMjggQEAgcHVibGljOgog
ICAgIGNvbnN0IE5ldHdvcmtDYWNoZTo6U2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Fs
dC52YWx1ZSgpOyB9CiAgICAgdWludDY0X3QgbmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJu
ICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKLSAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24o
KTsKKworICAgIFdlYWtQdHJGYWN0b3J5PEVuZ2luZT4mIHdlYWtQdHJGYWN0b3J5KCkgeyByZXR1
cm4gbV93ZWFrRmFjdG9yeTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEVuZ2luZShTdHJp
bmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEpOworCisgICAgdm9pZCBvcGVuKGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW1v
dmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCiAgICAgdm9pZCBjbGVhckFs
bENhY2hlcyhXVEY6OkNhbGxiYWNrQWdncmVnYXRvciYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNG
b3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV1RGOjpDYWxsYmFj
a0FnZ3JlZ2F0b3ImKTsKIAotICAgIFdlYWtQdHJGYWN0b3J5PEVuZ2luZT4mIHdlYWtQdHJGYWN0
b3J5KCkgeyByZXR1cm4gbV93ZWFrRmFjdG9yeTsgfQorICAgIHZvaWQgY2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworICAgIFN0cmluZyByZXByZXNlbnRhdGlv
bigpOwogCi1wcml2YXRlOgotICAgIHN0YXRpYyBFbmdpbmUmIGRlZmF1bHRFbmdpbmUoKTsKLSAg
ICBleHBsaWNpdCBFbmdpbmUoU3RyaW5nJiYgcm9vdFBhdGgpOworICAgIHZvaWQgcmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCBwdXRSZWNvcmRz
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVl
cnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYpOworCisgICAgdm9pZCBsb2NrKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB1bmxvY2sodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAogICAgIFN0cmluZyBj
YWNoZXNSb290UGF0aChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIApAQCAtMTE1LDYg
KzEzMCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpDbGllbnRPcmlnaW4sIFJl
ZlB0cjxDYWNoZXM+PiBtX2NhY2hlczsKICAgICB1aW50NjRfdCBtX25leHRDYWNoZUlkZW50aWZp
ZXIgeyAwIH07CiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgdWludDY0X3QgbV9xdW90YSB7
IDAgfTsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7CiAgICAgc3RkOjpvcHRpb25h
bDxOZXR3b3JrQ2FjaGU6OlNhbHQ+IG1fc2FsdDsKICAgICBIYXNoTWFwPENhY2hlSWRlbnRpZmll
ciwgTG9ja0NvdW50PiBtX2NhY2hlTG9ja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmNwcAppbmRleCA1MzVmMDVhZDJhZGY5M2FlN2U3NjQ5YjJlYmZkMjliZjg4MDhiMDJiLi5h
NTYyMzQ1NWQ5YWYwZTQyNzIwZWM1YWUzM2JhZjQ3MTk1YzhhYjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTU4LDE1ICs1OCwxNSBAQCBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjp+Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbigpCiAgICAgICAg
IGF1dG8mIHNlc3Npb25JRCA9IGtleVZhbHVlLmtleTsKICAgICAgICAgZm9yIChhdXRvJiByZWZl
cmVuY2VzIDoga2V5VmFsdWUudmFsdWUpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWZlcmVuY2Vz
LnZhbHVlKTsKLSAgICAgICAgICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnVubG9jayhyZWZl
cmVuY2VzLmtleSk7CisgICAgICAgICAgICBFbmdpbmU6OnVubG9jayhzZXNzaW9uSUQsIHJlZmVy
ZW5jZXMua2V5KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGNhY2hlTmFtZSkKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIGNhY2hlTmFtZSkKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJvcGVuICglIiBQUkl1NjQgIikiLCByZXF1ZXN0
SWRlbnRpZmllcik7Ci0gICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkub3BlbihvcmlnaW4sIGNh
Y2hlTmFtZSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkp
LCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVy
cm9yJiByZXN1bHQpIHsKKyAgICBFbmdpbmU6Om9wZW4oc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoY2FjaGVOYW1lKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlv
bi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNo
ZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRlVOQ1RJ
T05fSUZfQUxMT1dFRF9JTl9DQUxMQkFDSygib3BlbiIsICJjYWNoZSBpZGVudGlmaWVyIGlzICUi
IFBSSXU2NCwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlkZW50aWZpZXI7
IH0pOwogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpPcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNz
aW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwpAQCAtNzUsMTYgKzc1LDE2IEBAIHZvaWQgQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlbW92
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmVtb3ZlICglIiBQUkl1NjQgIikgY2FjaGUgJSIgUFJJdTY0LCByZXF1ZXN0SWRlbnRpZmllciwg
Y2FjaGVJZGVudGlmaWVyKTsKLSAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5yZW1vdmUoY2Fj
aGVJZGVudGlmaWVyLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmll
ck9yRXJyb3ImIHJlc3VsdCkgeworICAgIEVuZ2luZTo6cmVtb3ZlKHNlc3Npb25JRCwgY2FjaGVJ
ZGVudGlmaWVyLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9y
RXJyb3ImIHJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VE
X0lOX0NBTExCQUNLKCJyZW1vdmUiLCAicmVtb3ZlZCBjYWNoZSAlIiBQUkl1NjQsIFtdKGNvbnN0
IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pZGVudGlmaWVyOyB9KTsKICAgICAgICAgY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVtb3Zl
Q29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklE
KCkpOwogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNh
Y2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291
bnRlcikKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJjYWNoZXMgKCUiIFBSSXU2NCAiKSIsIHJlcXVlc3RJZGVudGlm
aWVyKTsKLSAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4s
IHVwZGF0ZUNvdW50ZXIsIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpKSwgc2Vzc2lvbklELCBvcmlnaW4sIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUluZm9z
T3JFcnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoc2Vzc2lvbklE
LCBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50ZXIsIFtjb25uZWN0aW9uID0gbWFrZVJlZiht
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCBvcmlnaW4sIHJlcXVlc3RJZGVu
dGlmaWVyXShDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xP
R19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJjYWNoZXMiLCAiY2FjaGVzIHNpemUg
aXMgJWx1IiwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmluZm9zLnNpemUo
KTsgfSk7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OlVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KSwgc2Vz
c2lvbklELnNlc3Npb25JRCgpKTsKICAgICB9KTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXEKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmll
dmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsKQogewog
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlUmVjb3JkcyAoJSIgUFJJdTY0ICIp
IGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7
Ci0gICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkucmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRp
ZmllciwgV1RGTW92ZSh1cmwpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNv
bm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9y
JiYgcmVzdWx0KSB7CisgICAgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoc2Vzc2lvbklELCBjYWNo
ZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRz
T3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExP
V0VEX0lOX0NBTExCQUNLKCJyZXRyaWV2ZVJlY29yZHMiLCAicmVjb3JkcyBzaXplIGlzICVsdSIs
IFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwogICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpV
cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpOwogICAgIH0pOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWluCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlbGV0ZU1hdGNoaW5nUmVj
b3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucykKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkZWxldGVNYXRjaGluZ1JlY29yZHMgKCUiIFBSSXU2NCAiKSBp
biBjYWNoZSAlIiBQUkl1NjQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpOwot
ICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLmRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhjYWNoZUlk
ZW50aWZpZXIsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFtjb25uZWN0aW9u
ID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0
SWRlbnRpZmllcl0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSB7CisgICAgRW5n
aW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMoc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFtjb25uZWN0aW9uID0gbWFrZVJlZiht
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0o
UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0ZVTkNUSU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0soImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyIs
ICJkZWxldGVkICVsdSByZWNvcmRzIiwgIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5zaXplKCk7IH0pOwogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpEZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVu
dGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwpAQCAtMTEx
LDcgKzExMSw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0
Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiB2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OnB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8
UmVjb3JkPiYmIHJlY29yZHMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicHV0UmVj
b3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCAiLCAlbHUgcmVjb3JkcyIsIHJl
cXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMuc2l6ZSgpKTsKLSAgICBF
bmdpbmU6OmZyb20oc2Vzc2lvbklEKS5wdXRSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92
ZShyZWNvcmRzKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlmaWVyc09yRXJy
b3ImJiByZXN1bHQpIHsKKyAgICBFbmdpbmU6OnB1dFJlY29yZHMoc2Vzc2lvbklELCBjYWNoZUlk
ZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jk
SWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNU
SU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0soInB1dFJlY29yZHMiLCAicHV0ICVsdSByZWNvcmRz
IiwgIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwogICAg
ICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpQdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9u
SUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghY291bnRlcisrKQotICAgICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5sb2Nr
KGNhY2hlSWRlbnRpZmllcik7CisgICAgICAgIEVuZ2luZTo6bG9jayhzZXNzaW9uSUQsIGNhY2hl
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVy
ZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpCkBAIC0xNDcsMjAgKzE0NywyMiBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmRlcmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0XwogICAgIGlm
ICgtLXJlZmVyZW5jZVJlc3VsdC0+dmFsdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVuZ2lu
ZTo6ZnJvbShzZXNzaW9uSUQpLnVubG9jayhjYWNoZUlkZW50aWZpZXIpOworICAgIEVuZ2luZTo6
dW5sb2NrKHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyKTsKICAgICByZWZlcmVuY2VzLnJlbW92
ZShyZWZlcmVuY2VSZXN1bHQpOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewotICAgIEVuZ2luZTo6
ZnJvbShzZXNzaW9uSUQpLmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2luLCBbY29ubmVj
dGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVx
dWVzdElkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7CisgICAgRW5n
aW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKHNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW4p
LCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Np
b25JRCwgcmVxdWVzdElkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7
CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OkNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb25Db21wbGV0ZWQocmVxdWVzdElkZW50aWZp
ZXIsIGVycm9yKSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKICAgICB9KTsKIH0KIAogdm9pZCBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjplbmdpbmVSZXByZXNlbnRhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6RW5naW5lUmVwcmVzZW50YXRpb25Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIs
IEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJlcHJlc2VudGF0aW9uKCkpLCBzZXNzaW9uSUQuc2Vz
c2lvbklEKCkpOworICAgIEVuZ2luZTo6cmVwcmVzZW50YXRpb24oc2Vzc2lvbklELCBbY29ubmVj
dGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVx
dWVzdElkZW50aWZpZXJdIChhdXRvJiYgcmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RW5naW5lUmVw
cmVzZW50YXRpb25Db21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgcmVwcmVzZW50YXRpb24g
fSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCBlNTdjNWUzOTBlMDYzZDlmYjFkNWQwZDkyNWZhMmUz
MWU3YWZkMjIzLi5iYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNkYmE2MTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTAsOSArNTAsOSBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAotICAgIHZvaWQgb3BlbihQQUw6OlNlc3Np
b25JRCwgdWludDY0X3Qgb3BlblJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSk7CisgICAgdm9pZCBvcGVuKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBvcGVuUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmLCBTdHJpbmcmJiBjYWNoZU5hbWUpOwogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0
cmlldmVDYWNoZXNJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCB1cGRhdGVDb3VudGVyKTsKKyAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwg
dWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKICAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRz
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMmJik7CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZl
cmVuY2UoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBkZXJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsK
IAotICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwor
ICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKICAgICB2b2lk
IGVuZ2luZVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllcik7CiAKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDdlNDhjZjhmMzdmMzdiYzVkMjI1ZjQxZjhlM2U5
NTIwNmEwMWQ3ZjIuLjAxNzE4NDMyMzAwMGE5NDkwNTA4YWVjM2M5ODAzZWZkZDRiZGY3ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KQEAgLTExMCwxMiArMTEwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJv
Y2Vzc0MKIAogICAgIEFTU0VSVCghbV9kaXNrQ2FjaGVJc0Rpc2FibGVkRm9yVGVzdGluZyk7CiAK
LSAgICBpZiAoIXBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKSB7Ci0g
ICAgICAgIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VE
aXJlY3Rvcnk7Ci0gICAgICAgIG1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgPSBwYXJhbWV0
ZXJzLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwotICAgIH0KLQogI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCiAgICAg
aW5pdGlhbGl6ZVdpRmlBc3NlcnRpb25zKHBhcmFtZXRlcnMpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCmluZGV4IGU5ODliZDhlOTlkNDExMWNmZDczN2EwNjUwMzc3NWYzZGRjMDA1ZjYu
LjFlMDJlOTFjOGNhMzVlNGE5N2NlYWVmNjE4MDkxNTVmZGQ1M2QyZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCkBAIC03MiwxMiArNzIsNiBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYQogICAg
IGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcykKICAg
ICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7CiAKLSAgICBpZiAoIXNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpICYmICFwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc051bGwo
KSkgewotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgICAgICBzZXNz
aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShwYXJhbWV0ZXJzLmNhY2hlU3Rv
cmFnZURpcmVjdG9yeSkpOwotICAgICAgICBzZXNzaW9uLT5zZXRDYWNoZVN0b3JhZ2VQZXJPcmln
aW5RdW90YShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKTsKLSAgICB9Ci0K
ICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9u
OjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuY3BwCmluZGV4IDU3ZGFkNTVjNjU5YjY0MjlmZjVjNjgxYTBlMTZiZDEzMmE4OGU3ZTgu
LjhhYzk5NTBiNWFiYjQ0YTY1YWE1NGNiZTE0NjJkNmQ0ODYzYTA3OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKQEAgLTQx
LDkgKzQxLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0Nvb2tpZVN0
b3JhZ2VJZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZVBhdGhFeHRlbnNp
b25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBwZW5kaW5nQ29va2llczsKLSAgICBlbmNvZGVyIDw8
IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICBlbmNvZGVyIDw8IGNhY2hlU3RvcmFnZVBlck9y
aWdpblF1b3RhOwotICAgIGVuY29kZXIgPDwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
QEAgLTY3LDI5ICs2NCwxMyBAQCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzPiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQwogICAgIGRlY29kZXIg
Pj4gcGVuZGluZ0Nvb2tpZXM7CiAgICAgaWYgKCFwZW5kaW5nQ29va2llcykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjYWNoZVN0b3Jh
Z2VEaXJlY3Rvcnk7Ci0gICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAg
aWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90
YTsKLSAgICBkZWNvZGVyID4+IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwotICAgIGlmICgh
Y2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY2FjaGVTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGRlY29kZXIgPj4gY2FjaGVTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIAotICAg
IHJldHVybiB7eyBXVEZNb3ZlKCp1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciksIFdU
Rk1vdmUoKmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92ZSgqcGVuZGlu
Z0Nvb2tpZXMpLCBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3RvcnkpLCBXVEZNb3ZlKCpjYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSksIFdURk1vdmUoKmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoKm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyl9fTsKKyAg
ICByZXR1cm4ge3sgV1RGTW92ZSgqdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpLCBX
VEZNb3ZlKCpjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSksIFdURk1vdmUoKnBlbmRp
bmdDb29raWVzKSwgV1RGTW92ZSgqbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKX19OwogfQogCiBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6cHJp
dmF0ZVNlc3Npb25QYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBB
U1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotICAgIHJldHVybiB7IHsgfSwgeyB9LCB7
IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1
b3RhLCB7IH0sIHsgc2Vzc2lvbklELCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMKKyAg
ICByZXR1cm4geyB7IH0sIHsgfSwgeyB9LCB7IHNlc3Npb25JRCwgeyB9LCBBbGxvd3NDZWxsdWxh
ckFjY2Vzczo6WWVzCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICwgbnVsbHB0cgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaAppbmRleCA4ZDQzNDk2MzU1MTY2MmQ4MTg5MTM1NDMxMzIyMjA2ZWQ1ZTQ1YTA4Li5hYmZm
NTAzYmY2Nzg1NDk5NjI5MWE3Y2MyYzU3ZTMxOGU5MDM0NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTU0LDkgKzU0LDYg
QEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBWZWN0b3I8dWludDhf
dD4gdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IHBlbmRpbmdDb29raWVzOwotICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VE
aXJlY3Rvcnk7Ci0gICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyAwIH07
Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyBuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyNTE0NTY4ZTQ4NDM2
NTA4ZjI1NWRkNDM4MWNlYTc0ZmI1ODk3YjE3Li5lNGFjMThhZTYzYjJlYmE2YzZmZmQ4MGNhZTVi
YzI1ODIxNmZlMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTU3NCw2ICs1NzQsNDAgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRTeW5jQWxsQ29va2llcygpCiAgICAgfQogfQogCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmFkZFNlc3Npb24oUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYg
c3RvcmUpCit7CisgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIHsgc3RvcmUtPnBhcmFtZXRl
cnMoKSB9LCAwKTsKKyAgICBpZiAoIXN0b3JlLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQor
ICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldChzdG9yZS0+c2Vzc2lvbklEKCksIFdURk1v
dmUoc3RvcmUpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSkK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uIHsg
c2Vzc2lvbklEIH0sIDApOworICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMucmVtb3ZlKHNlc3Npb25JRCk7Cit9CisKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV93ZWJzaXRlRGF0YVN0
b3Jlcy5maW5kKHNlc3Npb25JRCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fd2Vic2l0ZURhdGFT
dG9yZXMuZW5kKCkpIHsKKyAgICAgICAgYXV0byBxdW90YSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0
ZURhdGFTdG9yZSgpID8gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIDogV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25J
RCwgcXVvdGEsIHsgfSwgeyB9IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byYgc3RvcmUgPSAqaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIGNhY2hlU3RvcmFnZURp
cmVjdG9yeSA9IHN0b3JlLmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOworICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAg
aWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY2FjaGVTdG9yYWdlRGly
ZWN0b3J5LCBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBz
ZXNzaW9uSUQsIHN0b3JlLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCksIGNhY2hlU3RvcmFn
ZURpcmVjdG9yeSwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlIH0sIDApOwor
fQorCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y29udGVudEV4dGVuc2lvblJ1bGVzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZWY2NjU2Y2I3YjY5M2RkNDU1NGZmZTJh
ZjRhYmQ4MDUwYzAzNjA2Mi4uNmNjNTIxYzZhYzFkNGM0Y2YwYWE0ODcyNzQ5ODEwN2MyMGEzYTQ2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgTmV0d29ya1Byb2Nlc3NQ
cm94eV9oCiAjZGVmaW5lIE5ldHdvcmtQcm9jZXNzUHJveHlfaAogCisjaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAjaWYgRU5B
QkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgpAQCAtOTksNiArMTAwLDkgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Jik7CiAjZW5kaWYKIAorICAgIHZvaWQgYWRkU2Vzc2lvbihSZWY8
V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29s
Jik7CiAKQEAgLTE0Myw2ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcmFnZUFjY2Vz
c1JlcXVlc3RSZXN1bHQoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAg
IHZvaWQgYWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zLCB1aW50NjRfdCBjb250ZXh0SWQpOwogI2VuZGlmCisgICAgdm9pZCByZXRyaWV2ZUNhY2hl
U3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKICAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25SdWxlcyhVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyKTsKQEAgLTE3Nyw2ICsxODIsOCBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllczsKICNlbmRpZgor
CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+PiBt
X3dlYnNpdGVEYXRhU3RvcmVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTA4ODYyYWZiNjNhODUyNGI3YzU5YjI1MjQ2YjNi
ZTBkNmE5YzQwYi4uOTk2YTRhNTk1ZDI5MzUzNzI4N2QyZTBhNjcyMjI5ODNmMGMyYjUwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTMsNCArNTMsNiBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICNlbmRpZgorCisgICAgUmV0cmll
dmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5YjdhZDgyYzE5
NGZhYTRlMDg3ZjA0NmQwM2I1NzBhOGQ0ZDk4ZmQ3Li5hYzNiOTEzZjJkMzRkYWNiMDExMzg5Y2M3
NTA0NWEwZTcxYjI2ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC00NDgsMjIgKzQ0OCwxOSBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogewog
ICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIGlmICh3aXRoV2Vic2l0ZURhdGFT
dG9yZSkgewotICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUod2l0aFdlYnNpdGVEYXRhU3RvcmUtPnBh
cmFtZXRlcnMoKSksIDApOworICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lv
bihtYWtlUmVmKCp3aXRoV2Vic2l0ZURhdGFTdG9yZSkpOwogICAgICAgICAgICAgd2l0aFdlYnNp
dGVEYXRhU3RvcmUtPmNsZWFyUGVuZGluZ0Nvb2tpZXMoKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiAgICAgfQogCi0gICAgaWYgKG1fd2Vic2l0ZURhdGFT
dG9yZSkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVz
b2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKLQogICAgIG1fbmV0d29ya1Byb2Nlc3MgPSBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwogCiAgICAgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmICh3aXRoV2Vic2l0ZURhdGFT
dG9yZSkgewogICAgICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzID0gd2l0aFdl
YnNpdGVEYXRhU3RvcmUtPnBhcmFtZXRlcnMoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0
U2Vzc2lvblBhcmFtZXRlcnMgPSB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnM7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdFNlc3Npb25QYXJhbWV0
ZXJzID0gV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMpOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IGNvbmNlcHR1YWxseSBj
b3JyZWN0LCBidXQgaXQncyBuZWVkZWQgdG8gcHJlc2VydmUgYmVoYXZpb3IgaW50cm9kdWNlZCBp
biByMjEzMjQxLgogICAgICAgICAvLyBXZSBzaG91bGQgc2VwYXJhdGUgdGhlIGNvbmNlcHQgb2Yg
dGhlIGRlZmF1bHQgc2Vzc2lvbiBmcm9tIHRoZSBjdXJyZW50bHkgdXNlZCBwZXJzaXN0ZW50IHNl
c3Npb24uCkBAIC00ODIsMTEgKzQ3OSw2IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAg
Zm9yIChhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9j
b2xzKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzLmFwcGVuZChzY2hlbWUpOwogCi0gICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSA6IEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGlmICghcGFyYW1ldGVycy5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhID0gbV93ZWJz
aXRlRGF0YVN0b3JlID8gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2Fj
aGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSA6IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsKLQogICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBpZiAoIXBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CkBAIC01MzksMTIgKzUzMSwxMiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAg
IH0KIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUo
bV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSwgMCk7
CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24obWFrZVJlZihtX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSkpOwogICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclBlbmRpbmdDb29raWVzKCk7CiAgICAgfQogICAg
IAogICAgIGlmICh3aXRoV2Vic2l0ZURhdGFTdG9yZSkgewotICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZSh3
aXRoV2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpKSwgMCk7CisgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmFkZFNlc3Npb24obWFrZVJlZigqd2l0aFdlYnNpdGVEYXRhU3RvcmUpKTsKICAg
ICAgICAgd2l0aFdlYnNpdGVEYXRhU3RvcmUtPmNsZWFyUGVuZGluZ0Nvb2tpZXMoKTsKICAgICB9
CiAKQEAgLTcyNSw3ICs3MTcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3Jv
dXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZQogICAgICAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSks
IDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+cmVtb3ZlU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgp
KTsKICAgICB9CiAKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKQEAgLTEyMDIsMTEg
KzExOTQsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0
YVN0b3JlKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICBhdXRvIHNlc3Npb25JRCA9IHBhZ2Uuc2Vz
c2lvbklEKCk7CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7CiAgICAgICAgIEFT
U0VSVChwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnNlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwotICAgICAgICBzZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUo
cGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSk7CisgICAgICAgIGlmIChtX25l
dHdvcmtQcm9jZXNzKQorICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbiht
YWtlUmVmKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKSk7CiAgICAgICAgIHBhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyhzZXNzaW9uSUQpKSwg
MCk7CiAgICAgICAgIHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLmNsZWFyUGVuZGluZ0Nvb2tpZXMo
KTsKICAgICB9IGVsc2UgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKSB7Ci0gICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVEYXRhU3RvcmUo
KS5wYXJhbWV0ZXJzKCkpKTsKKyAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5hZGRTZXNzaW9uKG1ha2VSZWYocGFnZS53ZWJzaXRlRGF0
YVN0b3JlKCkpKTsKICAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0
ZXJzKCkpLCAwKTsKICAgICAgICAgcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQZW5kaW5n
Q29va2llcygpOwogCkBAIC0xMjQyLDcgKzEyMzYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
YWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIAogICAgICAg
ICAvLyBUaGUgbGFzdCB1c2VyIG9mIHRoaXMgbm9uLWRlZmF1bHQgUEFMOjpTZXNzaW9uSUQgaXMg
Z29uZSwgc28gY2xlYW4gaXQgdXAgaW4gdGhlIGNoaWxkIHByb2Nlc3Nlcy4KICAgICAgICAgaWYg
KG5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKSwgMCk7Cisg
ICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5yZW1vdmVTZXNzaW9uKHNlc3Npb25JRCk7CiAg
ICAgICAgIHBhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lT
ZXNzaW9uKHNlc3Npb25JRCksIDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQppbmRleCBhMzczZjBmNzg3YTdlNGY4YjU3NDQ2MTMyYmFjZGQwMDFhMDU0ZTUy
Li5jMGUxNjA1MzgxZjI1ZDg5MzVhZjE3ODVjM2UyNjRmZTZkNWU3MzNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC03OCwxMSArNzgsNiBAQCBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBpZiAoIWNv
b2tpZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFt
ZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRs
ZSk7CiAKLSAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNO
dWxsKCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBtX2Nv
bmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5jYWNoZVN0
b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKLSAgICB9Ci0KICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAppbmRleCA1NDg3NjFhM2ZjNDkzYzkxZmM3MzNhY2YxYjk4M2M1MGQ5ZDBlNDRlLi5iODMy
NGNiYWUxZTI5YWI1ZWY3NDgzMjcxMTdkNDM1YzQ1ZGNiZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtMTE2LDggKzExNiwxMCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
CiAgICAgaWYgKG1fc2Vzc2lvbklELmlzVmFsaWQoKSAmJiBtX3Nlc3Npb25JRCAhPSBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB7CiAgICAgICAgIEFTU0VSVChub25EZWZhdWx0
RGF0YVN0b3JlcygpLmdldChtX3Nlc3Npb25JRCkgPT0gdGhpcyk7CiAgICAgICAgIG5vbkRlZmF1
bHREYXRhU3RvcmVzKCkucmVtb3ZlKG1fc2Vzc2lvbklEKTsKLSAgICAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKLSAgICAgICAg
ICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lvbklEKSk7CisgICAgICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKQorICAgICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5yZW1vdmVTZXNzaW9u
KG1fc2Vzc2lvbklEKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342777</attachid>
            <date>2018-06-14 16:46:16 -0700</date>
            <delta_ts>2018-06-14 18:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186166-20180614164616.patch</filename>
            <type>text/plain</type>
            <size>57833</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E4Nzk3ZTk3YTZlMzQ1
ZjIwZDJmZGNjYWVmZTM3NDZiZmZmMWZkMy4uZDk2NGI2MmVlNWNmZjJlMTFmY2Y5ZTczZWNhN2Q3
MmY0NzMwOTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA2LTE0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtQcm9j
ZXNzIGdldCBjYWNoZSBzdG9yYWdlIHBhcmFtZXRlcnMgYXQgY3JlYXRpb24gb2YgdGhlIENhY2hl
U3RvcmFnZSBlbmdpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjYWNoZVN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENhY2hlU3RvcmFnZVBlck9yaWdp
blF1b3RhKTogRGVsZXRlZC4KKwogMjAxOC0wNi0xNCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFYOiBDcmFzaCBpbiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4
dFVuZGVyRWxlbWVudChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUp
IGNvbnN0ICsgNTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkZjkwMTk1ZWE3NTI2ZTE3MjljYmYxNjY0MGQ3YmYw
OWI2Y2Q1MzIuLjNkZmMzMjhhYjc0ODVmNDVkMmQ5MmUxNTNkMjUwMjFkZWYzNTMyZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTgtMDYtMTQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1Byb2Nlc3MgZ2V0IGNhY2hlIHN0b3Jh
Z2UgcGFyYW1ldGVycyBhdCBjcmVhdGlvbiBvZiB0aGUgQ2FjaGVTdG9yYWdlIGVuZ2luZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MTY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBDYWNoZVN0
b3JhZ2U6OkVuZ2luZSBjcmVhdGlvbiBhc3luY2hyb25vdXMuCisgICAgICAgIFVwZGF0ZSBFbmdp
bmUgcHVibGljIG1ldGhvZHMgYmUgc3RhdGljIG1ldGhvZHMgdGFraW5nIGEgU2Vzc2lvbklELCB3
aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBlbmdpbmUuCisKKyAgICAgICAgQWRkIElQ
QyBtZXRob2RzIHRvIHJldHJpZXZlIGNhY2hlIHN0b3JhZ2UgcGFyYW1ldGVycyBmcm9tIE5ldHdv
cmtQcm9jZXNzIHRvIFVJUHJvY2Vzcy4KKworICAgICAgICBBZGQgTmV0d29ya1Byb2Nlc3NQcm94
eSBhYmlsaXR5IHRvIGNvbXB1dGUgdGhlIGNhY2hlIHN0b3JhZ2UgcGFyYW1ldGVycyBiYXNlZCBv
biB0aGUgU2Vzc2lvbklELgorICAgICAgICBGb3IgdGhhdCBwdXJwb3NlLCBtYWtlIE5ldHdvcmtQ
cm9jZXNzUHJveHkgc3RvcmUgYSBtYXAgb2YgU2Vzc2lvbklELXRvLVdlYnNpdGVEYXRhU3RvcmUu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2FjaGVTdG9yYWdlUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNhY2hlU3RvcmFnZURpcmVjdG9y
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpmcm9tKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
OjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
OjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6cHV0UmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpk
ZWxldGVNYXRjaGluZ1JlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6bG9jayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp1bmxv
Y2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpy
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpj
bGVhckFsbENhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpj
bGVhckNhY2hlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpFbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVh
ZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6
OmRlZmF1bHRFbmdpbmUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVu
Z2luZTo6c2hvdWxkUGVyc2lzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjp3ZWFrUHRyRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RW5naW5lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjp+Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246Om9wZW4p
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZW1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMp
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2
ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
OjpkZWxldGVNYXRjaGluZ1JlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpwdXRSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6cmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVyZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZW5naW5lUmVw
cmVzZW50YXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24pOgor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFy
YW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6
CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjphZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVt
b3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJp
ZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VH
cm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUpOgorCiAy
MDE4LTA2LTE0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlc291cmNlIExvYWQgU3RhdGlzdGljczogU2hvcnRjdXQgY2xhc3NpZmljYXRpb24gZm9yIHJl
ZGlyZWN0IHRvIHByZXZhbGVudCByZXNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggMmE3ODY0NDY1
NmNjYjI5YTNmNjhjODhhMWIwNmQ1ZDExOTdmNDBhNi4uNmU5OTM5M2RmMmI4OWQ2YzBmZmRhZGQ5
ZjI0MWFiOGZjMDkyZmI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC04NSwxMSArODUsNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNIVFRQQ29va2llU3RvcmFnZSAqbnNDb29raWVTdG9y
YWdlKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2
b2lkIHNldENhY2hlU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBwYXRoKSB7IG1fY2FjaGVTdG9y
YWdlRGlyZWN0b3J5ID0gV1RGTW92ZShwYXRoKTsgfQotICAgIHVpbnQ2NF90IGNhY2hlU3RvcmFn
ZVBlck9yaWdpblF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5R
dW90YTsgfQotICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEodWludDY0X3Qg
cXVvdGEpIHsgbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSA9IHF1b3RhOyB9Ci0KICNpZiBQ
TEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBlbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJik7CiAg
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4mJiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYp
OwpAQCAtMTczLDkgKzE2OCw2IEBAIHByaXZhdGU6CiAKICAgICBDcmVkZW50aWFsU3RvcmFnZSBt
X2NyZWRlbnRpYWxTdG9yYWdlOwogCi0gICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5
OwotICAgIHVpbnQ2NF90IG1fY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEgeyAwIH07Ci0KICNp
ZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICBib29sIHNob3VsZFBh
cnRpdGlvbkNvb2tpZXMoY29uc3QgU3RyaW5nJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KSBjb25zdDsKICAgICBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgU3Ry
aW5nJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggM2ZiODE2NDZjOWZl
ZTg0NDhiZWMxZjJmMmE1ZTQwM2Q5MWRkZWU0Yy4uNzIyYTc1MmMyZmRlNzJjMzQ1ZTNlMGI5NWZk
ODcwMGY2NjU3NjZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTAgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdv
cmtQcm9jZXNzKCkKIAogTmV0d29ya1Byb2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCiB7CisgICAg
Zm9yIChhdXRvJiBjYWxsYmFja3MgOiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3Mu
dmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAg
ICAgICAgICAgIGNhbGxiYWNrKFN0cmluZyB7IH0sIDApOworICAgIH0KIH0KIAogQXV0aGVudGlj
YXRpb25NYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6YXV0aGVudGljYXRpb25NYW5hZ2VyKCkKQEAg
LTU2Myw3ICs1NjcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIH0pOwogCiAgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkp
Ci0gICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJBbGxD
YWNoZXMoY2xlYXJUYXNrc0hhbmRsZXIpOworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
Y2xlYXJBbGxDYWNoZXMoc2Vzc2lvbklELCBjbGVhclRhc2tzSGFuZGxlci5jb3B5UmVmKCkpOwog
CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNr
Q2FjaGUpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgY2xlYXJEaXNrQ2Fj
aGUobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tz
SGFuZGxlcildIHsgfSk7CkBAIC02MDcsNyArNjExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW8KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
RE9NQ2FjaGUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFz
KQotICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVh
ckNhY2hlc0Zvck9yaWdpbihvcmlnaW5EYXRhLCBjbGVhclRhc2tzSGFuZGxlcik7CisgICAgICAg
ICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oc2Vzc2lvbklE
LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIGNsZWFyVGFza3NIYW5kbGVyLmNv
cHlSZWYoKSk7CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKQEAg
LTg0OCwxOSArODUyLDI1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgV2ViQ29yZTo6cHJlZmV0Y2hETlMoaG9zdG5hbWUpOwog
fQogCi1TdHJpbmcgTmV0d29ya1Byb2Nlc3M6OmNhY2hlU3RvcmFnZURpcmVjdG9yeShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3Jh
Z2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUGFyYW1l
dGVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgaWYgKHNlc3Npb25JRCA9PSBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQotICAgICAgICByZXR1cm4gbV9jYWNoZVN0b3Jh
Z2VEaXJlY3Rvcnk7CisgICAgbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLmVuc3Vy
ZShzZXNzaW9uSUQsIFsmXSB7CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJldHJpZXZlQ2FjaGVTdG9yYWdlUGFy
YW1ldGVycyB7IHNlc3Npb25JRCB9LCAwKTsKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxDYWNoZVN0
b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2s+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBw
ZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKK30KIAotICAgIGF1dG8qIHNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNz
aW9uKQotICAgICAgICByZXR1cm4geyB9Owordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVT
dG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHF1b3Rh
LCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIGhhbmRsZSkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0
ZXJzQ2FsbGJhY2tzLmZpbmQoc2Vzc2lvbklEKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jYWNo
ZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLmVuZCgpKQorICAgICAgICByZXR1cm47CiAKLSAg
ICByZXR1cm4gc2Vzc2lvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgYXV0byBjYWxsYmFja3Mg
PSBXVEZNb3ZlKGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
Q2FsbGJhY2tzLnJlbW92ZShpdGVyYXRvcik7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNh
bGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soU3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5
IH0sIHF1b3RhKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSkKQEAgLTg3OSwxMSArODg5LDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW4KICNlbmRpZgogfQogCi11aW50NjRfdCBOZXR3b3JrUHJvY2Vzczo6Y2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZVBl
ck9yaWdpblF1b3RhOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVt
ZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25zdAogewogICAgIFNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKHNjaGVtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMDhlMjRkY2U2MTA4MjQ3Mjk3
MzA1Yjg2YWRjZWJlMjg0NDc0NzY4MS4uYmUzNDkzMTliMWE0ZGI4ZDM0ODg0YmJiNTE5MjQ4NWEw
NTA1MjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaApAQCAtMTQzLDggKzE0Myw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgU2Vjb25kcyBs
b2FkVGhyb3R0bGVMYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkVGhyb3R0bGVMYXRlbmN5
OyB9Ci0gICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeShQQUw6OlNlc3Npb25JRCkgY29u
c3Q7Ci0gICAgdWludDY0X3QgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSBjb25zdDsKKwor
ICAgIHVzaW5nIENhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU3RyaW5nJiwgdWludDY0X3QgcXVvdGEpPjsKKyAgICB2b2lkIGNhY2hl
U3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBhcmFtZXRlcnND
YWxsYmFjayYmKTsKIAogICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIApAQCAtMjA2LDYgKzIwNyw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKTsKIAorICAgIHZv
aWQgc2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcXVv
dGEsIFN0cmluZyYmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYpOworCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRha2UgYSBzZXNzaW9uIElEIHNv
IHdlIGNhbiBpZGVudGlmeSB3aGljaCBkaXNrIGNhY2hlIHRvIGRlbGV0ZS4KICAgICB2b2lkIGNs
ZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIEZ1bmN0aW9uPHZvaWQgKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC0yNTMsOCArMjU2LDYgQEAgcHJpdmF0ZToKICAgICAv
LyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAgICAgVmVjdG9yPFJlZlB0cjxOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCi0gICAg
U3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgIHVpbnQ2NF90IG1fY2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEgeyAwIH07CiAgICAgU3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5
OwogICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsOwogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1v
ZGVsOwpAQCAtMjc5LDYgKzI4MCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBIYXNoU2V0PFBB
TDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25zQ29udHJvbGxlZEJ5QXV0b21hdGlvbjsKIAorICAgIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJh
Y2s+PiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3M7CisKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHNldENvb2tp
ZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTYz
YTU2NWYzZTJiZjBlZjExMWFmZGE0YzIwOWE1MTIwY2ZhOWI1NS4uODM3NmJiYzliNDhhNmI0MTM4
YzQxNGFiZGQ5YTZjYzhmOTRlZWFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05OCw0ICs5OCw2IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZWdpc3Rl
clVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKFN0cmluZyBzY2hlbWUpCiAgICAgUmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKFN0cmluZyBzY2hlbWUpCiAgICAgUmVnaXN0ZXJVUkxTY2hl
bWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KFN0cmluZyBzY2hlbWUpCisKKyAgICBTZXRD
YWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cXVvdGEsIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGhhbmRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CmluZGV4IDhjOTA5ZmQwY2VkOWE0ZjEyZDUzZDExMzNlZjhlZGE5MzIwZGVlOTYuLjIwMTBiNDM3
Mzk4OThkZjJmYTNiMTg0MjdkMGY4OWRjOTZiOTk3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCkBAIC00Niw5ICs0Niw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKGNhY2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwgZGlza0NhY2hlU2l6
ZU92ZXJyaWRlOwogICAgIGVuY29kZXIgPDwgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb247Ci0gICAgZW5jb2RlciA8PCBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgZW5jb2Rl
ciA8PCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsKLSAgICBlbmNvZGVyIDw8IGNhY2hlU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURp
cmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2lu
ZzsKQEAgLTEzMCwxNiArMTI3LDYgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhbkhhbmRsZUhU
VFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhY2hlU3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBzdGQ6
Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwotICAgIGRlY29kZXIgPj4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOwotICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0LmNhY2hlU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kaXNrQ2FjaGVE
aXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKaW5kZXggMjJlMWI5YmEyMjE5ZDYwM2VkYzVlMzJhZjg1OWQwZGMwMWIxMTE1ZS4uNDM4
ODk0NWI3Y2Y1YTYwYTEwYzUyYjk0MjVhY2E4YmExZDE0ZmRiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaApAQCAtNTYsOSArNTYsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIGludDY0X3QgZGlza0NhY2hlU2l6ZU92ZXJyaWRlIHsgLTEg
fTsKICAgICBib29sIGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uIHsgdHJ1ZSB9
OwogCi0gICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICB1aW50NjRfdCBjYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY2Fj
aGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIFN0cmluZyBkaXNrQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGRpc2tDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKICAgICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmlj
YWN5TG9nZ2luZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggZGM4NzI2NDg0Njdl
MjYxOWYyZTQ3MzM0ZTU0OGMyYmI1N2JjNjMzMC4uZTYyNmUyMzc4MGU3YTRmNGVhZmZlMThiYTU1
MjAyYTdmMGUwNzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtODAsMTIgKzgwLDIzIEBAIEVu
Z2luZTo6fkVuZ2luZSgpCiAgICAgICAgIGNhbGxiYWNrKERhdGEgeyB9LCAxKTsKIH0KIAotRW5n
aW5lJiBFbmdpbmU6OmZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBFbmdpbmU6
OmZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkKEVuZ2luZSYpPiYm
IGNhbGxiYWNrKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gZ2xvYmFsRW5naW5lTWFwKCkuYWRk
KHNlc3Npb25JRCwgbnVsbHB0cik7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gRW5naW5lOjpjcmVhdGUoTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZURpcmVjdG9yeShzZXNzaW9uSUQpKTsKLSAg
ICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byBpdGVyYXRvciA9
IGdsb2JhbEVuZ2luZU1hcCgpLmZpbmQoc2Vzc2lvbklEKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0g
Z2xvYmFsRW5naW5lTWFwKCkuZW5kKCkpIHsKKyAgICAgICAgY2FsbGJhY2soKml0ZXJhdG9yLT52
YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpCisgICAgICAgIHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCk7CisKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVT
dG9yYWdlUGFyYW1ldGVycyhzZXNzaW9uSUQsIFtzZXNzaW9uSUQsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8mJiByb290UGF0aCwgYXV0byBxdW90YSkgeworICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IGdsb2JhbEVuZ2luZU1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpOwor
ICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gYWRvcHRSZWYoKm5ldyBFbmdpbmUgeyBTdHJpbmcgeyByb290UGF0
aCB9LCBxdW90YSB9KTsKKyAgICAgICAgY2FsbGJhY2soKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIH0pOwogfQogCiB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCkBAIC05NCwyMCArMTA1LDEwMSBAQCB2b2lkIEVuZ2luZTo6ZGVzdHJv
eUVuZ2luZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgZ2xvYmFsRW5naW5lTWFwKCku
cmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHNob3VsZENvbXB1dGVTaXplLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGZyb20o
c2Vzc2lvbklELCBbc2hvdWxkQ29tcHV0ZVNpemUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBl
bmdpbmUuZmV0Y2hFbnRyaWVzKHNob3VsZENvbXB1dGVTaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgRW5naW5lOjpvcGVuKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBTdHJpbmcmJiBjYWNo
ZU5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYm
IGNhbGxiYWNrKQoreworICAgIGZyb20oc2Vzc2lvbklELCBbb3JpZ2luID0gV1RGTW92ZShvcmln
aW4pLCBjYWNoZU5hbWUgPSBXVEZNb3ZlKGNhY2hlTmFtZSksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgICAgIGVuZ2luZS5vcGVuKG9y
aWdpbiwgY2FjaGVOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
RW5naW5lOjpyZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIGZyb20oc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAg
ICAgICBlbmdpbmUucmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0
ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW29yaWdpbiA9IFdURk1vdmUob3JpZ2lu
KSwgdXBkYXRlQ291bnRlciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5n
aW5lKSBtdXRhYmxlIHsKKyAgICAgICAgZW5naW5lLnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwgdXBk
YXRlQ291bnRlciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOworfQorCisKK3ZvaWQgRW5n
aW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGZyb20oc2Vzc2lvbklELCBb
Y2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgICAgIGVuZ2luZS5yZXRyaWV2
ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoY2FsbGJhY2sp
KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkPiYmIHJlY29yZHMsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpS
ZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgZnJvbShzZXNzaW9u
SUQpLmZldGNoRW50cmllcyhzaG91bGRDb21wdXRlU2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIGZyb20oc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCByZWNvcmRzID0g
V1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5n
aW5lKSBtdXRhYmxlIHsKKyAgICAgICAgZW5naW5lLnB1dFJlY29yZHMoY2FjaGVJZGVudGlmaWVy
LCBXVEZNb3ZlKHJlY29yZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgRW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBmcm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBlbmdpbmUuZGVsZXRlTWF0
Y2hpbmdSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShv
cHRpb25zKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6
bG9jayhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikK
K3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllcl0oYXV0byYgZW5naW5lKSBt
dXRhYmxlIHsKKyAgICAgICAgZW5naW5lLmxvY2soY2FjaGVJZGVudGlmaWVyKTsKKyAgICB9KTsK
K30KKwordm9pZCBFbmdpbmU6OnVubG9jayhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW2NhY2hlSWRlbnRp
Zmllcl0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICAgICAgZW5naW5lLnVubG9jayhjYWNo
ZUlkZW50aWZpZXIpOworICAgIH0pOwogfQogCi1FbmdpbmUmIEVuZ2luZTo6ZGVmYXVsdEVuZ2lu
ZSgpCit2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGF1dG8g
c2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPEVuZ2luZT4+IGRlZmF1bHRFbmdpbmUgPSB7IEVuZ2luZTo6
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnko
c2Vzc2lvbklEKSkgfTsKLSAgICByZXR1cm4gZGVmYXVsdEVuZ2luZS5nZXQoKTsKKyAgICBmcm9t
KHNlc3Npb25JRCwgW29yaWdpbiA9IFdURk1vdmUob3JpZ2luKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICAgICAgZW5naW5lLmNsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2luLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgRW5naW5lOjpyZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQoreworICAg
IGZyb20oc2Vzc2lvbklELCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5n
aW5lKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soZW5naW5lLnJlcHJlc2VudGF0aW9uKCkp
OworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBSZWY8V1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I+JiYgYWdncmVnYXRvcikK
K3sKKyAgICBmcm9tKHNlc3Npb25JRCwgW2FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3Ip
XShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgICAgICBlbmdpbmUuY2xlYXJBbGxDYWNoZXMo
YWdncmVnYXRvcik7CisgICAgfSk7Cit9CisKK3ZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9y
aWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIG9yaWdpbkRhdGEsIFJlZjxXVEY6OkNhbGxiYWNrQWdncmVnYXRvcj4mJiBhZ2dyZWdhdG9y
KQoreworICAgIGZyb20oc2Vzc2lvbklELCBbb3JpZ2luRGF0YSA9IFdURk1vdmUob3JpZ2luRGF0
YSksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpXShhdXRvJiBlbmdpbmUpIG11dGFi
bGUgeworICAgICAgICBlbmdpbmUuY2xlYXJDYWNoZXNGb3JPcmlnaW4ob3JpZ2luRGF0YSwgYWdn
cmVnYXRvcik7CisgICAgfSk7CiB9CiAKLUVuZ2luZTo6RW5naW5lKFN0cmluZyYmIHJvb3RQYXRo
KQorRW5naW5lOjpFbmdpbmUoU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3RhKQogICAg
IDogbV9yb290UGF0aChXVEZNb3ZlKHJvb3RQYXRoKSkKKyAgICAsIG1fcXVvdGEocXVvdGEpCiB7
CiAgICAgaWYgKCFtX3Jvb3RQYXRoLmlzTnVsbCgpKQogICAgICAgICBtX2lvUXVldWUgPSBXb3Jr
UXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYWNoZVN0b3JhZ2VFbmdpbmUuc2VyaWFs
QmFja2dyb3VuZCIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6QmFj
a2dyb3VuZCk7CkBAIC0yMjksNyArMzIxLDcgQEAgdm9pZCBFbmdpbmU6OnJlYWRDYWNoZXNGcm9t
RGlzayhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ2FjaGVzQ2FsbGIKICAg
ICBpbml0aWFsaXplKFt0aGlzLCBvcmlnaW4sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBhdXRvJiBj
YWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBbJm9yaWdpbiwgdGhpc10gewogICAgICAg
ICAgICAgYXV0byBwYXRoID0gY2FjaGVzUm9vdFBhdGgob3JpZ2luKTsKLSAgICAgICAgICAgIHJl
dHVybiBDYWNoZXM6OmNyZWF0ZSgqdGhpcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2lu
IH0sIFdURk1vdmUocGF0aCksIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3Jh
Z2VQZXJPcmlnaW5RdW90YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBDYWNoZXM6OmNyZWF0ZSgq
dGhpcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luIH0sIFdURk1vdmUocGF0aCksIG1f
cXVvdGEpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgaWYgKGNhY2hl
cy0+aXNJbml0aWFsaXplZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCBjZGZjMzQ4M2EwNDkxNjQ0
YTU1MWY0YTI2MjZkOTJkNmNmZDhhNjNjLi5kNWM5NDE5ZjU2YzU4ZTcwMDcxZDI5ZDdlNWM0MTZj
MGQ2OGNkYWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTU3LDI0ICs1NywyOCBAQCBjbGFzcyBFbmdp
bmUgOiBwdWJsaWMgUmVmQ291bnRlZDxFbmdpbmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RW5n
aW5lPiB7CiBwdWJsaWM6CiAgICAgfkVuZ2luZSgpOwogCi0gICAgc3RhdGljIEVuZ2luZSYgZnJv
bShQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIHZvaWQgZnJvbShQQUw6OlNlc3Npb25JRCwg
RnVuY3Rpb248dm9pZChFbmdpbmUmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveUVuZ2lu
ZShQQUw6OlNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZvaWQgZmV0Y2hFbnRyaWVzKFBBTDo6U2Vz
c2lvbklELCBib29sIHNob3VsZENvbXB1dGVTaXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmKTsKIAotICAgIHN0YXRpYyBSZWY8RW5n
aW5lPiBjcmVhdGUoU3RyaW5nJiYgcm9vdFBhdGgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW5n
aW5lKFdURk1vdmUocm9vdFBhdGgpKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBvcGVuKFBBTDo6U2Vz
c2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgU3RyaW5nJiYgY2FjaGVOYW1lLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAg
ICBzdGF0aWMgdm9pZCByZXRyaWV2ZUNhY2hlcyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAKLSAgICBib29sIHNob3VsZFBlcnNpc3QoKSBj
b25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CisgICAgc3RhdGljIHZvaWQgcmV0cmlldmVSZWNv
cmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVS
TCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHN0
YXRpYyB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworICAgIHN0YXRp
YyB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJz
Q2FsbGJhY2smJik7CiAKLSAgICB2b2lkIG9wZW4oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFj
ayYmKTsKLSAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUluZm9zQ2FsbGJhY2smJik7CisgICAgc3RhdGljIHZvaWQgbG9jayhQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCB1bmxvY2soUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHJldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwotICAgIHZvaWQgcHV0UmVjb3Jk
cyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKLSAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXByZXNlbnRh
dGlvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYp
OwogCi0gICAgdm9pZCBsb2NrKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Ci0gICAgdm9pZCB1
bmxvY2sodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckFs
bENhY2hlcyhQQUw6OlNlc3Npb25JRCwgUmVmPFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmKTsK
KyAgICBzdGF0aWMgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbihQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxXVEY6OkNhbGxiYWNrQWdncmVnYXRvcj4m
Jik7CisKKyAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1
ZTt9CiAKICAgICB2b2lkIHdyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3Jr
Q2FjaGU6OkRhdGEmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFj
ayYmKTsKICAgICB2b2lkIHJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJik7
CkBAIC04NCwxNSArODgsMjUgQEAgcHVibGljOgogICAgIGNvbnN0IE5ldHdvcmtDYWNoZTo6U2Fs
dCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdC52YWx1ZSgpOyB9CiAgICAgdWludDY0X3Qg
bmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJuICsrbV9uZXh0Q2FjaGVJZGVudGlmaWVyOyB9
CiAKLSAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYm
KTsKLSAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24oKTsKK3ByaXZhdGU6CisgICAgRW5naW5lKFN0
cmluZyYmIHJvb3RQYXRoLCB1aW50NjRfdCBxdW90YSk7CisKKyAgICB2b2lkIG9wZW4oY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJl
bW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpD
YWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIGNsZWFy
QWxsQ2FjaGVzKFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yJik7CiAgICAgdm9pZCBjbGVhckNhY2hl
c0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXVEY6OkNhbGxi
YWNrQWdncmVnYXRvciYpOwogCi1wcml2YXRlOgotICAgIHN0YXRpYyBFbmdpbmUmIGRlZmF1bHRF
bmdpbmUoKTsKLSAgICBleHBsaWNpdCBFbmdpbmUoU3RyaW5nJiYgcm9vdFBhdGgpOworICAgIHZv
aWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworICAgIFN0
cmluZyByZXByZXNlbnRhdGlvbigpOworCisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHB1dFJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisK
KyAgICB2b2lkIGxvY2sodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVubG9j
ayh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCiAgICAgU3RyaW5nIGNhY2hlc1Jvb3RQYXRo
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCkBAIC0xMTMsNiArMTI3LDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwgUmVmUHRyPENhY2hlcz4+
IG1fY2FjaGVzOwogICAgIHVpbnQ2NF90IG1fbmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsKICAg
ICBTdHJpbmcgbV9yb290UGF0aDsKKyAgICB1aW50NjRfdCBtX3F1b3RhIHsgMCB9OwogICAgIFJl
ZlB0cjxXb3JrUXVldWU+IG1faW9RdWV1ZTsKICAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtDYWNo
ZTo6U2FsdD4gbV9zYWx0OwogICAgIEhhc2hNYXA8Q2FjaGVJZGVudGlmaWVyLCBMb2NrQ291bnQ+
IG1fY2FjaGVMb2NrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4
IDUzNWYwNWFkMmFkZjkzYWU3ZTc2NDliMmViZmQyOWJmODgwOGIwMmIuLmE1NjIzNDU1ZDlhZjBl
NDI3MjBlYzVhZTMzYmFmNDcxOTVjOGFiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmNwcApAQCAtNTgsMTUgKzU4LDE1IEBAIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246On5DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uKCkKICAgICAgICAgYXV0byYgc2Vzc2lv
bklEID0ga2V5VmFsdWUua2V5OwogICAgICAgICBmb3IgKGF1dG8mIHJlZmVyZW5jZXMgOiBrZXlW
YWx1ZS52YWx1ZSkgewogICAgICAgICAgICAgQVNTRVJUKHJlZmVyZW5jZXMudmFsdWUpOwotICAg
ICAgICAgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkudW5sb2NrKHJlZmVyZW5jZXMua2V5KTsK
KyAgICAgICAgICAgIEVuZ2luZTo6dW5sb2NrKHNlc3Npb25JRCwgcmVmZXJlbmNlcy5rZXkpOwog
ICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
Om9wZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2Fj
aGVOYW1lKQordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYmIG9yaWdpbiwgU3RyaW5nJiYgY2FjaGVOYW1lKQogewogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIm9wZW4gKCUiIFBSSXU2NCAiKSIsIHJlcXVlc3RJZGVudGlmaWVyKTsK
LSAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5vcGVuKG9yaWdpbiwgY2FjaGVOYW1lLCBbY29u
bmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwg
cmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkg
eworICAgIEVuZ2luZTo6b3BlbihzZXNzaW9uSUQsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShj
YWNoZU5hbWUpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9y
RXJyb3ImIHJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VE
X0lOX0NBTExCQUNLKCJvcGVuIiwgImNhY2hlIGlkZW50aWZpZXIgaXMgJSIgUFJJdTY0LCBbXShj
b25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaWRlbnRpZmllcjsgfSk7CiAgICAgICAg
IGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Ok9w
ZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9u
SUQoKSk7CiAgICAgfSk7CkBAIC03NSwxNiArNzUsMTYgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWUKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVtb3ZlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmUgKCUiIFBS
SXU2NCAiKSBjYWNoZSAlIiBQUkl1NjQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZp
ZXIpOwotICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJlbW92ZShjYWNoZUlkZW50aWZpZXIs
IFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lv
bklELCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVz
dWx0KSB7CisgICAgRW5naW5lOjpyZW1vdmUoc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFtj
b25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklE
LCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0so
InJlbW92ZSIsICJyZW1vdmVkIGNhY2hlICUiIFBSSXU2NCwgW10oY29uc3QgYXV0byYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLmlkZW50aWZpZXI7IH0pOwogICAgICAgICBjb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZW1vdmVDb21wbGV0ZWQocmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQordm9pZCBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
b3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNhY2hlcyAoJSIgUFJJdTY0ICIpIiwgcmVxdWVzdElkZW50aWZpZXIpOwotICAgIEVu
Z2luZTo6ZnJvbShzZXNzaW9uSUQpLnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwgdXBkYXRlQ291bnRl
ciwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNz
aW9uSUQsIG9yaWdpbiwgcmVxdWVzdElkZW50aWZpZXJdKENhY2hlSW5mb3NPckVycm9yJiYgcmVz
dWx0KSB7CisgICAgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhzZXNzaW9uSUQsIFdURk1vdmUob3Jp
Z2luKSwgdXBkYXRlQ291bnRlciwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIG9yaWdpbiwgcmVxdWVzdElkZW50aWZpZXJdKENhY2hl
SW5mb3NPckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lG
X0FMTE9XRURfSU5fQ0FMTEJBQ0soImNhY2hlcyIsICJjYWNoZXMgc2l6ZSBpcyAlbHUiLCBbXShj
b25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaW5mb3Muc2l6ZSgpOyB9KTsKICAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
VXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpOwogICAgIH0pOwpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cQogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiB1cmwpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgicmV0cmlldmVSZWNvcmRzICglIiBQUkl1NjQgIikgaW4gY2FjaGUgJSIg
UFJJdTY0LCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKLSAgICBFbmdpbmU6
OmZyb20oc2Vzc2lvbklEKS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3Zl
KHVybCksIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwg
c2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpIHsK
KyAgICBFbmdpbmU6OnJldHJpZXZlUmVjb3JkcyhzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwg
V1RGTW92ZSh1cmwpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYgcmVz
dWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJB
Q0soInJldHJpZXZlUmVjb3JkcyIsICJyZWNvcmRzIHNpemUgaXMgJWx1IiwgW10oY29uc3QgYXV0
byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsgfSk7CiAgICAgICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlVwZGF0ZVJlY29yZHMo
cmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAg
fSk7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
OjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW4KIHZvaWQgQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29y
ZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBS
SXU2NCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7Ci0gICAgRW5naW5lOjpm
cm9tKHNlc3Npb25JRCkuZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShS
ZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIHsKKyAgICBFbmdpbmU6OmRlbGV0ZU1h
dGNoaW5nUmVjb3JkcyhzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShvcHRpb25zKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlm
aWVyc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRlVOQ1RJT05fSUZf
QUxMT1dFRF9JTl9DQUxMQkFDSygiZGVsZXRlTWF0Y2hpbmdSZWNvcmRzIiwgImRlbGV0ZWQgJWx1
IHJlY29yZHMiLCAgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsg
fSk7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OkRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3Vs
dCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgfSk7CkBAIC0xMTEsNyArMTExLDcgQEAg
dm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZWxldGVNYXRjaGluZ1JlY29yZHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bjo6cHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVj
b3JkcykKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwdXRSZWNvcmRzICglIiBQUkl1
NjQgIikgaW4gY2FjaGUgJSIgUFJJdTY0ICIsICVsdSByZWNvcmRzIiwgcmVxdWVzdElkZW50aWZp
ZXIsIGNhY2hlSWRlbnRpZmllciwgcmVjb3Jkcy5zaXplKCkpOwotICAgIEVuZ2luZTo6ZnJvbShz
ZXNzaW9uSUQpLnB1dFJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBb
Y29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25J
RCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkg
eworICAgIEVuZ2luZTo6cHV0UmVjb3JkcyhzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgV1RG
TW92ZShyZWNvcmRzKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlmaWVyc09y
RXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRlVOQ1RJT05fSUZfQUxMT1dF
RF9JTl9DQUxMQkFDSygicHV0UmVjb3JkcyIsICJwdXQgJWx1IHJlY29yZHMiLCAgW10oY29uc3Qg
YXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsgfSk7CiAgICAgICAgIGNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlB1dFJlY29yZHND
b21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQo
KSk7CiAgICAgfSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uOjpyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdAog
ICAgICAgICByZXR1cm4gMDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb3Vu
dGVyKyspCi0gICAgICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLmxvY2soY2FjaGVJZGVudGlm
aWVyKTsKKyAgICAgICAgRW5naW5lOjpsb2NrKHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZXJlZmVyZW5jZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKQEAgLTE0Nywy
MCArMTQ3LDIyIEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVyZWZlcmVu
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfCiAgICAgaWYgKC0tcmVmZXJlbmNl
UmVzdWx0LT52YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRW5naW5lOjpmcm9tKHNlc3Np
b25JRCkudW5sb2NrKGNhY2hlSWRlbnRpZmllcik7CisgICAgRW5naW5lOjp1bmxvY2soc2Vzc2lv
bklELCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHJlZmVyZW5jZXMucmVtb3ZlKHJlZmVyZW5jZVJl
c3VsdCk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3ZvaWQg
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4pCiB7Ci0gICAgRW5naW5lOjpmcm9tKHNlc3Npb25J
RCkuY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihvcmlnaW4sIFtjb25uZWN0aW9uID0gbWFrZVJl
ZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmll
cl0gKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKKyAgICBFbmdpbmU6OmNsZWFyTWVt
b3J5UmVwcmVzZW50YXRpb24oc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIFtjb25uZWN0aW9u
ID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0
SWRlbnRpZmllcl0gKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKICAgICAgICAgY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2xlYXJN
ZW1vcnlSZXByZXNlbnRhdGlvbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpLCBz
ZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwogfQogCiB2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OmVuZ2luZVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgbV9jb25uZWN0aW9uLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpFbmdp
bmVSZXByZXNlbnRhdGlvbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgRW5naW5lOjpmcm9t
KHNlc3Npb25JRCkucmVwcmVzZW50YXRpb24oKSksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Cisg
ICAgRW5naW5lOjpyZXByZXNlbnRhdGlvbihzZXNzaW9uSUQsIFtjb25uZWN0aW9uID0gbWFrZVJl
ZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmll
cl0gKGF1dG8mJiByZXByZXNlbnRhdGlvbikgeworICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpFbmdpbmVSZXByZXNlbnRhdGlvbkNv
bXBsZXRlZCB7IHJlcXVlc3RJZGVudGlmaWVyLCByZXByZXNlbnRhdGlvbiB9LCBzZXNzaW9uSUQu
c2Vzc2lvbklEKCkpOworICAgIH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5oCmluZGV4IGU1N2M1ZTM5MGUwNjNkOWZiMWQ1ZDBkOTI1ZmEyZTMxZTdhZmQyMjMuLmJj
ODgwZjVlYjU4OWFlZGNmZWU0NWEyMzQxODM4YjI1M2RiYTYxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbi5oCkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYpOwogCi0gICAgdm9pZCBvcGVuKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBvcGVuUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNv
bnN0IFN0cmluZyYgY2FjaGVOYW1lKTsKKyAgICB2b2lkIG9wZW4oUEFMOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IG9wZW5SZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0
cmluZyYmIGNhY2hlTmFtZSk7CiAgICAgdm9pZCByZW1vdmUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHJlbW92ZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwot
ICAgIHZvaWQgY2FjaGVzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXRyaWV2ZUNhY2hlc0lk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXIpOworICAgIHZvaWQgY2FjaGVzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXRyaWV2
ZUNhY2hlc0lkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRh
dGVDb3VudGVyKTsKIAogICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYm
KTsKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZmVyZW5jZShQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRlcmVmZXJlbmNl
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBj
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisgICAgdm9pZCBjbGVh
ck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwogICAgIHZvaWQgZW5naW5lUmVwcmVz
ZW50YXRpb24oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKTsKIAog
ICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNz
Q29jb2EubW0KaW5kZXggN2U0OGNmOGYzN2YzN2JjNWQyMjVmNDFmOGUzZTk1MjA2YTAxZDdmMi4u
MDE3MTg0MzIzMDAwYTk0OTA1MDhhZWMzYzk4MDNlZmRkNGJkZjdmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbQpAQCAtMTEwLDEyICsxMTAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQwogCiAgICAg
QVNTRVJUKCFtX2Rpc2tDYWNoZUlzRGlzYWJsZWRGb3JUZXN0aW5nKTsKIAotICAgIGlmICghcGFy
YW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAg
ICAgICAgbV9jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSA9IHBhcmFtZXRlcnMuY2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGE7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
Ci0gICAgfQotCiAjaWYgRU5BQkxFKFdJRklfQVNTRVJUSU9OUykKICAgICBpbml0aWFsaXplV2lG
aUFzc2VydGlvbnMocGFyYW1ldGVycyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5k
ZXggZTk4OWJkOGU5OWQ0MTExY2ZkNzM3YTA2NTAzNzc1ZjNkZGMwMDVmNi4uMWUwMmU5MWM4Y2Ez
NWU0YTk3Y2VhZWY2MTgwOTE1NWZkZDUzZDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KQEAg
LTcyLDEyICs3Miw2IEBAIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNp
dGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhCiAgICAgZm9yIChjb25zdCBh
dXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKQogICAgICAgICBzZXNzaW9u
LT5zZXRDb29raWUoY29va2llKTsKIAotICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkg
JiYgIXBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKSB7Ci0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNhY2hlU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgICAgIHNlc3Npb24tPnNldENhY2hl
U3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5
KSk7Ci0gICAgICAgIHNlc3Npb24tPnNldENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKHBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEpOwotICAgIH0KLQogICAgIFNlc3Npb25U
cmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZN
b3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5k
ZXggNTdkYWQ1NWM2NTliNjQyOWZmNWM2ODFhMGUxNmJkMTMyYTg4ZTdlOC4uOGFjOTk1MGI1YWJi
NDRhNjVhYTU0Y2JlMTQ2MmQ2ZDQ4NjNhMDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcApAQCAtNDEsOSArNDEsNiBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZp
ZXI7CiAgICAgZW5jb2RlciA8PCBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAg
ICBlbmNvZGVyIDw8IHBlbmRpbmdDb29raWVzOwotICAgIGVuY29kZXIgPDwgY2FjaGVTdG9yYWdl
RGlyZWN0b3J5OwotICAgIGVuY29kZXIgPDwgY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7Ci0g
ICAgZW5jb2RlciA8PCBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiB9CiAK
IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtNjcsMjkgKzY0
LDEzIEBAIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDCiAgICAgZGVjb2RlciA+PiBwZW5kaW5nQ29v
a2llczsKICAgICBpZiAoIXBlbmRpbmdDb29raWVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsK
LSAgICBkZWNvZGVyID4+IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICBpZiAoIWNhY2hlU3Rv
cmFnZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwotICAgIGRlY29k
ZXIgPj4gY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7Ci0gICAgaWYgKCFjYWNoZVN0b3JhZ2VQ
ZXJPcmlnaW5RdW90YSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6
b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgaWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgCi0gICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyKSwgV1RGTW92ZSgqY29va2ll
U3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpLCBXVEZNb3ZlKCpwZW5kaW5nQ29va2llcyksIFdU
Rk1vdmUoKmNhY2hlU3RvcmFnZURpcmVjdG9yeSksIFdURk1vdmUoKmNhY2hlU3RvcmFnZVBlck9y
aWdpblF1b3RhKSwgV1RGTW92ZSgqY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KSwgV1RGTW92ZSgqbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKX19OworICAgIHJldHVybiB7eyBX
VEZNb3ZlKCp1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciksIFdURk1vdmUoKmNvb2tp
ZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKSwgV1RGTW92ZSgqcGVuZGluZ0Nvb2tpZXMpLCBX
VEZNb3ZlKCpuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpfX07CiB9CiAKIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBh
cmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSk7Ci0gICAgcmV0dXJuIHsgeyB9LCB7IH0sIHsgfSwgeyB9LCBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEsIHsgfSwgeyBz
ZXNzaW9uSUQsIHsgfSwgQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcworICAgIHJldHVybiB7IHsg
fSwgeyB9LCB7IH0sIHsgc2Vzc2lvbklELCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLCBudWxscHRyCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IDhk
NDM0OTYzNTUxNjYyZDgxODkxMzU0MzEzMjIyMDZlZDVlNDVhMDguLmFiZmY1MDNiZjY3ODU0OTk2
MjkxYTdjYzJjNTdlMzE4ZTkwMzQ2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtNTQsOSArNTQsNiBAQCBzdHJ1Y3QgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFZlY3Rvcjx1aW50OF90PiB1aVByb2Nlc3ND
b29raWVTdG9yYWdlSWRlbnRpZmllcjsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY29v
a2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4gcGVuZGluZ0Nvb2tpZXM7Ci0gICAgU3RyaW5nIGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAg
ICB1aW50NjRfdCBjYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSB7IDAgfTsKLSAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwog
ICAgIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI1MTQ1NjhlNDg0MzY1MDhmMjU1ZGQ0Mzgx
Y2VhNzRmYjU4OTdiMTcuLmQ3NDUwMjVlYTgzMzVlZGExOTc4NDVmZGVkYjc3ZjZmNmZlOTYxOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtNTc0LDYgKzU3NCw0MSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFN5bmNBbGxDb29raWVzKCkKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6YWRkU2Vzc2lvbihSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiBzdG9yZSkKK3sKKyAg
ICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUgeyBzdG9yZS0+cGFyYW1ldGVycygpIH0sIDApOwor
ICAgIGF1dG8gc2Vzc2lvbklEID0gc3RvcmUtPnNlc3Npb25JRCgpOworICAgIGlmICghc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMuc2V0KHNlc3Np
b25JRCwgV1RGTW92ZShzdG9yZSkpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
bW92ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIGlmIChjYW5TZW5k
TWVzc2FnZSgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJv
eVNlc3Npb24geyBzZXNzaW9uSUQgfSwgMCk7CisgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSkKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jlcy5yZW1vdmUoc2Vzc2lvbklEKTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRl
cnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3dl
YnNpdGVEYXRhU3RvcmVzLmZpbmQoc2Vzc2lvbklEKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV93
ZWJzaXRlRGF0YVN0b3Jlcy5lbmQoKSkgeworICAgICAgICBhdXRvIHF1b3RhID0gbV9wcm9jZXNz
UG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkgPyBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUo
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkgOiBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGE7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
IHsgc2Vzc2lvbklELCBxdW90YSwgeyB9LCB7IH0gfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvJiBzdG9yZSA9ICppdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgY2Fj
aGVTdG9yYWdlRGlyZWN0b3J5ID0gc3RvcmUuY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICBpZiAoIWNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjYWNo
ZVN0b3JhZ2VEaXJlY3RvcnksIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFy
YW1ldGVycyB7IHNlc3Npb25JRCwgc3RvcmUuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSwg
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUgfSwgMCk7Cit9CisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojpjb250ZW50RXh0ZW5zaW9uUnVsZXMoVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlZjY2NTZjYjdiNjkz
ZGQ0NTU0ZmZlMmFmNGFiZDgwNTBjMDM2MDYyLi42Y2M1MjFjNmFjMWQ0YzRjZjBhYTQ4NzI3NDk4
MTA3YzIwYTNhNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBOZXR3
b3JrUHJvY2Vzc1Byb3h5X2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NQcm94eV9oCiAKKyNpbmNs
dWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHku
aCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUg
IkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCkBAIC05OSw2ICsxMDAsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKICNlbmRpZgogCisgICAgdm9pZCBhZGRT
ZXNzaW9uKFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24o
UEFMOjpTZXNzaW9uSUQpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoV2Vi
UHJvY2Vzc1Bvb2wmKTsKIApAQCAtMTQzLDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRl
eHRJZCk7CiAgICAgdm9pZCBhbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3Ry
aW5nPiYmIGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAjZW5kaWYKKyAgICB2b2lkIHJl
dHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCk7CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIHZvaWQgY29udGVudEV4dGVuc2lvblJ1bGVzKFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwpAQCAtMTc3LDYgKzE4Miw4IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBIYXNoU2V0PFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVz
OwogI2VuZGlmCisKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2Vic2l0ZURh
dGFTdG9yZT4+IG1fd2Vic2l0ZURhdGFTdG9yZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMDg4NjJhZmI2M2E4NTI0Yjdj
NTliMjUyNDZiM2JlMGQ2YTljNDBiLi45OTZhNGE1OTVkMjkzNTM3Mjg3ZDJlMGE2NzIyMjk4M2Yw
YzJiNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01Myw0ICs1Myw2IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgQ29udGVudEV4dGVuc2lvblJ1bGVzKFdlYktp
dDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogI2VuZGlmCisK
KyAgICBSZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IDRjMGYwMGUwZmM3ZDFmNzNlODQ1ZGU3YmU1NzY1Y2VjODM1ZjNkNzguLjdjNmNlYzAxNGZmZDc0
ZTFhYzUyYmU0NDkxYzM3NDNlODVlMTA4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQ0OCwyMiArNDQ4LDE5IEBAIE5ldHdvcmtQcm9jZXNzUHJv
eHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3Jl
KiB3aXRoCiB7CiAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAgaWYgKHdpdGhX
ZWJzaXRlRGF0YVN0b3JlKSB7Ci0gICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZSh3aXRoV2Vic2l0ZURh
dGFTdG9yZS0+cGFyYW1ldGVycygpKSwgMCk7CisgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNz
LT5hZGRTZXNzaW9uKG1ha2VSZWYoKndpdGhXZWJzaXRlRGF0YVN0b3JlKSk7CiAgICAgICAgICAg
ICB3aXRoV2Vic2l0ZURhdGFTdG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKICAgICB9CiAKLSAgICBpZiAobV93
ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5yZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwotCiAgICAgbV9uZXR3b3Jr
UHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcyk7CiAKICAgICBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCiAgICAgaWYgKHdpdGhX
ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMgPSB3aXRoV2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpOwotICAgICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHRTZXNzaW9uUGFyYW1ldGVycyA9IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0U2Vz
c2lvblBhcmFtZXRlcnMgPSBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycyk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgY29u
Y2VwdHVhbGx5IGNvcnJlY3QsIGJ1dCBpdCdzIG5lZWRlZCB0byBwcmVzZXJ2ZSBiZWhhdmlvciBp
bnRyb2R1Y2VkIGluIHIyMTMyNDEuCiAgICAgICAgIC8vIFdlIHNob3VsZCBzZXBhcmF0ZSB0aGUg
Y29uY2VwdCBvZiB0aGUgZGVmYXVsdCBzZXNzaW9uIGZyb20gdGhlIGN1cnJlbnRseSB1c2VkIHBl
cnNpc3RlbnQgc2Vzc2lvbi4KQEAgLTQ4MiwxMSArNDc5LDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUq
IHdpdGgKICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JD
dXN0b21Qcm90b2NvbHMpCiAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAKLSAgICBwYXJhbWV0ZXJzLmNhY2hl
U3RvcmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIDogQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFw
YXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJz
LmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwotICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpIDogV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhOwotCiAgICAgcGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwog
ICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTUzNywxMiArNTI5LDEyIEBAIE5ldHdvcmtQcm9jZXNzUHJv
eHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3Jl
KiB3aXRoCiAgICAgfQogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkgewotICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0
ZURhdGFTdG9yZShtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0
ZXJzKCkpLCAwKTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbihtYWtlUmVm
KG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpKSk7CiAgICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNsZWFyUGVuZGluZ0Nvb2tpZXMoKTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKHdpdGhXZWJzaXRlRGF0YVN0b3JlKSB7Ci0gICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRl
RGF0YVN0b3JlKHdpdGhXZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0ZXJzKCkpLCAwKTsKKyAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbihtYWtlUmVmKCp3aXRoV2Vic2l0ZURhdGFT
dG9yZSkpOwogICAgICAgICB3aXRoV2Vic2l0ZURhdGFTdG9yZS0+Y2xlYXJQZW5kaW5nQ29va2ll
cygpOwogICAgIH0KIApAQCAtNzIzLDcgKzcxNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRl
CiAgICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpKTsKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6RGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSkpOworICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5yZW1vdmVTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAgICAgICBzZW5kVG9TdG9y
YWdlUHJvY2VzcyhNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKTsKICAgICAgICAgc2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Np
b25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7CiAgICAgfQpAQCAtMTE5NywxMSArMTE4
OSwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3Rv
cmUoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFnZS5zZXNzaW9u
SUQoKTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgQVNTRVJU
KHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2Vzc2lvbklEID09IHNlc3Npb25JRCk7Ci0gICAgICAgIHNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdl
LndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpKTsKKyAgICAgICAgaWYgKG1fbmV0d29y
a1Byb2Nlc3MpCisgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hZGRTZXNzaW9uKG1ha2VS
ZWYocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKICAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVyczo6cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKHNlc3Npb25JRCkpLCAwKTsK
ICAgICAgICAgcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOwog
ICAgIH0gZWxzZSBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpIHsKLSAgICAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBh
cmFtZXRlcnMoKSkpOworICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24obWFrZVJlZihwYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKSkpOwogICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMo
KSksIDApOwogICAgICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclBlbmRpbmdDb29r
aWVzKCk7CiAKQEAgLTEyMzcsNyArMTIzMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VF
bmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5JiBwYWdlKQogCiAgICAgICAgIC8v
IFRoZSBsYXN0IHVzZXIgb2YgdGhpcyBub24tZGVmYXVsdCBQQUw6OlNlc3Npb25JRCBpcyBnb25l
LCBzbyBjbGVhbiBpdCB1cCBpbiB0aGUgY2hpbGQgcHJvY2Vzc2VzLgogICAgICAgICBpZiAobmV0
d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpLCAwKTsKKyAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnJlbW92ZVNlc3Npb24oc2Vzc2lvbklEKTsKICAgICAg
ICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVNlc3Np
b24oc2Vzc2lvbklEKSwgMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCmluZGV4IGEzNzNmMGY3ODdhN2U0ZjhiNTc0NDYxMzJiYWNkZDAwMWEwNTRlNTIuLmMw
ZTE2MDUzODFmMjVkODkzNWFmMTc4NWMzZTI2NGZlNmQ1ZTczM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTc4LDExICs3OCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIGlmICghY29va2ll
RmlsZS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNv
b2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsK
IAotICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc051bGwo
KSkgewotICAgICAgICBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IG1fY29uZmln
dXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFn
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwotICAgIH0KLQogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CmluZGV4IDY4MTkyZGUxMTI5ZGM0M2Y3MzZiOTFmM2QzNzBmMDZiOWNiOGZmOWUuLmE5ODRjMGYx
NTUwMGU0NzgzMzFiNjYyZWIyYWQ4Mzc1YWIwNDg2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0x
MTgsOCArMTE4LDkgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogICAg
ICAgICBBU1NFUlQobm9uRGVmYXVsdERhdGFTdG9yZXMoKS5nZXQobV9zZXNzaW9uSUQpID09IHRo
aXMpOwogICAgICAgICBub25EZWZhdWx0RGF0YVN0b3JlcygpLnJlbW92ZShtX3Nlc3Npb25JRCk7
CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJv
Y2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lv
bklEKSk7CiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvU3RvcmFnZVByb2Nlc3MoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb25JRCkpOworICAg
ICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQ
cm9jZXNzKCkpCisgICAgICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlbW92ZVNlc3Npb24o
bV9zZXNzaW9uSUQpOwogICAgICAgICB9CiAgICAgfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>