<?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>200572</bug_id>
          
          <creation_ts>2019-08-09 06:04:17 -0700</creation_ts>
          <short_desc>Blob should store its session ID</short_desc>
          <delta_ts>2019-08-10 15:50:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>200567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1559858</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 06:04:17 -0700</bug_when>
    <thetext>Blob should store its session ID</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559860</commentid>
    <comment_count>1</comment_count>
      <attachid>375910</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 06:13:16 -0700</bug_when>
    <thetext>Created attachment 375910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559865</commentid>
    <comment_count>2</comment_count>
      <attachid>375913</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 06:36:36 -0700</bug_when>
    <thetext>Created attachment 375913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559870</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-09 07:35:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/54125466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559894</commentid>
    <comment_count>4</comment_count>
      <attachid>375913</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-09 08:29:57 -0700</bug_when>
    <thetext>Comment on attachment 375913
Patch

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

&gt; Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp:161
&gt; +        return Blob::create(scriptExecutionContext()-&gt;sessionID());
&gt; +    return Blob::create(scriptExecutionContext()-&gt;sessionID(), *data, m_private-&gt;mimeType());

What guarantees that the script execution context is not null?

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:205
&gt; +        scheduleDispatchEvent(MessageEvent::create(Blob::create(scriptExecutionContext()-&gt;sessionID(), SharedBuffer::create(data, dataLength), emptyString()), { }));

What guarantees that the script execution context is not null?

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:587
&gt; +        dispatchEvent(MessageEvent::create(Blob::create(scriptExecutionContext()-&gt;sessionID(), WTFMove(binaryData), emptyString()), SecurityOrigin::create(m_url)-&gt;toString()));

What guarantees that the script execution context is not null?

&gt; Source/WebCore/bindings/js/JSDOMPromiseDeferred.h:141
&gt; +    PAL::SessionID sessionID() const { return globalObject()-&gt;scriptExecutionContext()-&gt;sessionID(); }

A little annoying that we have to add includes so this can be inlined.

What guarantees that neither the global object nor the script execution context is null?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2098
&gt; +            file = File::deserialize(jsCast&lt;JSDOMGlobalObject*&gt;(m_globalObject)-&gt;scriptExecutionContext()-&gt;sessionID(), filePath, URL(URL(), url-&gt;string()), type-&gt;string(), name-&gt;string(), optionalLastModified);

What guarantees that neither the global object nor the script execution context is null?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2864
&gt; +            return getJSValue(Blob::deserialize(jsCast&lt;JSDOMGlobalObject*&gt;(m_globalObject)-&gt;scriptExecutionContext()-&gt;sessionID(), URL(URL(), url-&gt;string()), type-&gt;string(), size, blobFilePathForBlobURL(url-&gt;string())).get());

What guarantees that neither the global object nor the script execution context is null?

&gt; Source/WebCore/fileapi/Blob.cpp:92
&gt;      , m_size(-1)

Seems peculiar to use -1 instead of Optional or something clearer. Might want to come back and revisit this.

&gt; Source/WebCore/html/FileInputType.cpp:417
&gt; +    m_fileListCreator = FileListCreator::create(element()-&gt;document().sessionID(), paths, shouldResolveDirectories, [this, shouldRequestIcon](Ref&lt;FileList&gt;&amp;&amp; fileList) {

Does this function ever get called when element() can be nullptr? Some of the other functions in InputType classes seem to guard against this.

&gt; Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp:152
&gt; +        ScriptExecutionContext&amp; context = globalScope;

I don’t understand why this local variable is needed. Can’t we call globalScope.sessionID()?

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:215
&gt; +    return Blob::create(scriptExecutionContext()-&gt;sessionID(), WTFMove(data), normalizedContentType);

What guarantees that script execution context is non-null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560056</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 14:47:30 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 375913 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375913&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp:161
&gt; &gt; +        return Blob::create(scriptExecutionContext()-&gt;sessionID());
&gt; &gt; +    return Blob::create(scriptExecutionContext()-&gt;sessionID(), *data, m_private-&gt;mimeType());
&gt; 
&gt; What guarantees that the script execution context is not null?

We create a blob to dispatch an event so the MediaRecorder is not stopped and its context is not null.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:205
&gt; &gt; +        scheduleDispatchEvent(MessageEvent::create(Blob::create(scriptExecutionContext()-&gt;sessionID(), SharedBuffer::create(data, dataLength), emptyString()), { }));
&gt; 
&gt; What guarantees that the script execution context is not null?

Ditto.

&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:587
&gt; &gt; +        dispatchEvent(MessageEvent::create(Blob::create(scriptExecutionContext()-&gt;sessionID(), WTFMove(binaryData), emptyString()), SecurityOrigin::create(m_url)-&gt;toString()));
&gt; 
&gt; What guarantees that the script execution context is not null?

Ditto.

&gt; &gt; Source/WebCore/bindings/js/JSDOMPromiseDeferred.h:141
&gt; &gt; +    PAL::SessionID sessionID() const { return globalObject()-&gt;scriptExecutionContext()-&gt;sessionID(); }
&gt; 
&gt; A little annoying that we have to add includes so this can be inlined.

Agreed.

&gt; What guarantees that neither the global object nor the script execution
&gt; context is null?

The caller has to make sure the promise is basically canInvokeCallback.
I&apos;ll revert this change since it might be a tempting but risky API and pass the sessionID through FetchBody.

&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2098
&gt; &gt; +            file = File::deserialize(jsCast&lt;JSDOMGlobalObject*&gt;(m_globalObject)-&gt;scriptExecutionContext()-&gt;sessionID(), filePath, URL(URL(), url-&gt;string()), type-&gt;string(), name-&gt;string(), optionalLastModified);
&gt; 
&gt; What guarantees that neither the global object nor the script execution
&gt; context is null?

There is a check before for m_globalObject not being null.
As of scriptExecutionContext, it only returns null after release_assert.

&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2864
&gt; &gt; +            return getJSValue(Blob::deserialize(jsCast&lt;JSDOMGlobalObject*&gt;(m_globalObject)-&gt;scriptExecutionContext()-&gt;sessionID(), URL(URL(), url-&gt;string()), type-&gt;string(), size, blobFilePathForBlobURL(url-&gt;string())).get());
&gt; 
&gt; What guarantees that neither the global object nor the script execution
&gt; context is null?

Ditto.

&gt; &gt; Source/WebCore/fileapi/Blob.cpp:92
&gt; &gt;      , m_size(-1)
&gt; 
&gt; Seems peculiar to use -1 instead of Optional or something clearer. Might
&gt; want to come back and revisit this.

True, this seems only used to lazily initialize m_size which can cost a sync IPC.

&gt; &gt; Source/WebCore/html/FileInputType.cpp:417
&gt; &gt; +    m_fileListCreator = FileListCreator::create(element()-&gt;document().sessionID(), paths, shouldResolveDirectories, [this, shouldRequestIcon](Ref&lt;FileList&gt;&amp;&amp; fileList) {
&gt; 
&gt; Does this function ever get called when element() can be nullptr? Some of
&gt; the other functions in InputType classes seem to guard against this.

From the call sites I checked, this seems fine, 2 of them are calling element() and the last is from the input element itself.

&gt; &gt; Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp:152
&gt; &gt; +        ScriptExecutionContext&amp; context = globalScope;
&gt; 
&gt; I don’t understand why this local variable is needed. Can’t we call
&gt; globalScope.sessionID()?

sessionID is a private method of WorkerGlobalScope.
We could make it public though.
I&apos;ll change that.

&gt; &gt; Source/WebCore/xml/XMLHttpRequest.cpp:215
&gt; &gt; +    return Blob::create(scriptExecutionContext()-&gt;sessionID(), WTFMove(data), normalizedContentType);
&gt; 
&gt; What guarantees that script execution context is non-null?

This is called from JS binding custom code which checks that there are no errors before calling responseBlob.
When the script execution context is stopped, the XHR object will be errored and createResponseBlob will not be created.

Thinking about it more, this behaviour does not seem to align well with the spec although Safari, Chrome and Firefox do seem to return null after context navigation. 
&apos;response&apos; attribute value caching is different in the various browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560092</commentid>
    <comment_count>6</comment_count>
      <attachid>375913</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-09 15:50:10 -0700</bug_when>
    <thetext>Comment on attachment 375913
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2098
&gt;&gt;&gt; +            file = File::deserialize(jsCast&lt;JSDOMGlobalObject*&gt;(m_globalObject)-&gt;scriptExecutionContext()-&gt;sessionID(), filePath, URL(URL(), url-&gt;string()), type-&gt;string(), name-&gt;string(), optionalLastModified);
&gt;&gt; 
&gt;&gt; What guarantees that neither the global object nor the script execution context is null?
&gt; 
&gt; There is a check before for m_globalObject not being null.
&gt; As of scriptExecutionContext, it only returns null after release_assert.

Cleanup for the future: If scriptExecutionContext only returns nullptr after a RELEASE_ASSERT, it should be changed to return a reference instead of a pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560256</commentid>
    <comment_count>7</comment_count>
      <attachid>376016</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-10 14:47:55 -0700</bug_when>
    <thetext>Created attachment 376016
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560259</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-10 14:49:28 -0700</bug_when>
    <thetext>&gt; &gt; What guarantees that neither the global object nor the script execution
&gt; &gt; context is null?
&gt; 
&gt; The caller has to make sure the promise is basically canInvokeCallback.
&gt; I&apos;ll revert this change since it might be a tempting but risky API and pass
&gt; the sessionID through FetchBody.

I&apos;ll fix this in bug 200616.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560275</commentid>
    <comment_count>9</comment_count>
      <attachid>376016</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-10 15:50:26 -0700</bug_when>
    <thetext>Comment on attachment 376016
Patch for landing

Clearing flags on attachment: 376016

Committed r248503: &lt;https://trac.webkit.org/changeset/248503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560276</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-10 15:50:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375910</attachid>
            <date>2019-08-09 06:13:16 -0700</date>
            <delta_ts>2019-08-09 06:36:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200572-20190809151314.patch</filename>
            <type>text/plain</type>
            <size>73199</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyNmE1ODU2NjcyNzc2
NGRjNTcxMzY0YjY5YjdhYzQ3NzQ4NGI2Mi4uMjlmM2NjZWJjNDE0ZTk1ZGUzMzRlMGE0NjA0MDZh
MDk4NjAyZDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOS0wOC0wOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBzaG91bGQgc3Rv
cmUgaXRzIHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMDU3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJsb2IgYXQgY3JlYXRpb24gdGltZSBub3cgaW5pdGlhbGl6ZXMgaXRzIHNlc3Np
b24gSUQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBpbiB0aGUgZnV0dXJlIHRvIGNhbGwgYmxv
YiByZWdpc3RyeSByb3V0aW5lcyB3aXRoIGl0LgorICAgICAgICBVcGRhdGUgYWxsIGNhbGwgc2l0
ZXMgdG8gcHJvdmlkZSB0aGUgc2Vzc2lvbiBJRC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNo
YW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldEZpbGUpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVXaXRoVHlwZUFu
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93
bmVyOjpibG9iKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpjcmVhdGVSZWNvcmRpbmdE
YXRhQmxvYik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6
OnNlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnNlc3Npb25JRCBjb25zdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0
ZW1MaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
SW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRy
YWcpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3ApOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJn
ZXQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9yaWdpbklkZW50aWZpZXJGb3JQ
YXN0ZWJvYXJkIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIgY29u
c3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJh
bnNmZXIgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1
dEV2ZW50RGF0YVRyYW5zZmVyIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFU
cmFuc2ZlciBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
OjpyZWFkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0
dGFjaG1lbnRGb3JGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0
YSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVz
dG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQpOgorICAgICAgICAqIGZpbGVhcGkvQmxv
Yi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBmaWxlYXBp
L0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGljZSBj
b25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0Zp
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUu
aDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaWRsOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6
CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kRGlyZWN0b3J5RmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9y
OjpGaWxlTGlzdENyZWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9yOjpj
cmVhdGVGaWxlTGlzdCk6CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OnRvQmxvYik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNyZWF0ZUZpbGUpOgor
ICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGVPcGFxdWVXaXRoQmxvYkJvZHlS
ZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0
Y2hGZXRjaEV2ZW50KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisKIDIwMTkt
MDgtMDkgIFbDrWN0b3IgTWFudWVsIErDoXF1ZXogTGVhbCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR0xdW0dTdHJlYW1lcl0gYWN0aXZhdGUgd3JhcHBlZCBzaGFyZWQgY29udGV4
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCmluZGV4IDRiZDJlMDAzOWMxZDk5M2JmNmY2OGUzOTQxZWUyOTY1YWUxNzliMjYuLjlm
NGExMGI3MTFiZjM2M2YwYThhMjM0YzllMzI3MWY1MmVlNzZmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTM0Myw3
ICszNDMsNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUZpbGVFbnRyeQogICAgICAgICAgICAgaWYgKHZhbGlk
YXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpj
cmVhdGUoZnVsbFBhdGgpKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRmls
ZTo6Y3JlYXRlKGNvbnRleHQtPnNlc3Npb25JRCgpLCBmdWxsUGF0aCkpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApp
bmRleCBlNmM5MDYyNzc4YTk4OWI1NzU0OWE1NDg5ZjZhYmZlNDg3Y2UzODk5Li44ZWNhMTNiMWM4
ZjliZWQ0ZDE1YWRjOTVkN2U4ZDk2MGEwNzEwMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIEV4Y2VwdGlvbk9yPEZldGNo
Qm9keT4gRmV0Y2hCb2R5OjpleHRyYWN0KEluaXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250ZW50VHlw
ZSkKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3Jt
RGF0YShGb3JtRGF0YSYgZm9ybURhdGEpCitPcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6
ZnJvbUZvcm1EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRm9ybURhdGEmIGZvcm1EYXRh
KQogewogICAgIEFTU0VSVCghZm9ybURhdGEuaXNFbXB0eSgpKTsKIApAQCAtODgsNyArODgsNyBA
QCBPcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKEZvcm1EYXRhJiBm
b3JtRGF0YSkKICAgICBhdXRvIHVybCA9IGZvcm1EYXRhLmFzQmxvYlVSTCgpOwogICAgIGlmICgh
dXJsLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQcm9wZXJseSBzZXQgbWltZSB0eXBl
IGFuZCBzaXplIG9mIHRoZSBibG9iLgotICAgICAgICBSZWY8Y29uc3QgQmxvYj4gYmxvYiA9IEJs
b2I6OmRlc2VyaWFsaXplKHVybCwgeyB9LCAwLCB7IH0pOworICAgICAgICBSZWY8Y29uc3QgQmxv
Yj4gYmxvYiA9IEJsb2I6OmRlc2VyaWFsaXplKHNlc3Npb25JRCwgdXJsLCB7IH0sIDAsIHsgfSk7
CiAgICAgICAgIHJldHVybiBGZXRjaEJvZHkgeyBXVEZNb3ZlKGJsb2IpIH07CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBjM2Y5NmZmNGFmZmYy
MGQxMTM2NDQzM2ExZjJhY2Y2YWQxZDlmYjczLi5iMjdlMGE1MTg3YWU4YmY4NGJkNzkxN2M3ZTcx
MDU4ZTExYjk4NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxGZXRjaEJv
ZHk+IGV4dHJhY3QoSW5pdCYmLCBTdHJpbmcmKTsKICAgICBGZXRjaEJvZHkoKSA9IGRlZmF1bHQ7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8RmV0Y2hCb2R5PiBmcm9tRm9y
bURhdGEoRm9ybURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8RmV0
Y2hCb2R5PiBmcm9tRm9ybURhdGEoUEFMOjpTZXNzaW9uSUQsIEZvcm1EYXRhJik7CiAKICAgICB2
b2lkIGxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJik7CiAgICAgdm9pZCBsb2FkaW5nU3Vj
Y2VlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCmluZGV4IDMwMmRmZjYwYWRhZmVmZjc2MzFkZmI4OTY0OGI2MTY4MThjYjlj
YjYuLjdmMDVlN2FjMTlhMDU4ODlkOTY4ZmU2ZTE0OGM1N2Q5ZWZjN2FmYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0z
NSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIFJl
ZjxCbG9iPiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3RhdGljIGlubGluZSBSZWY8Qmxv
Yj4gYmxvYkZyb21EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShsZW5ndGgpOwogICAgIG1lbWNweSh2YWx1ZS5k
YXRhKCksIGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZh
bHVlKSwgY29udGVudFR5cGUpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Vzc2lvbklELCBX
VEZNb3ZlKHZhbHVlKSwgY29udGVudFR5cGUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hv
dWxkUHJlcGVuZEJPTShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAgICAgICAgIGZ1bGZp
bGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIGRhdGEsIGxlbmd0aCk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpCbG9i
OgotICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8
QmxvYj4+KGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKS5nZXQoKSk7Cisg
ICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9i
Pj4oYmxvYkZyb21EYXRhKHByb21pc2UtPnNlc3Npb25JRCgpLCBkYXRhLCBsZW5ndGgsIGNvbnRl
bnRUeXBlKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlOjpKU09OOgogICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhKU09OKFdURk1vdmUo
cHJvbWlzZSksIHRleHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsKQEAgLTEzMCw3ICsxMzAsNyBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qCiAgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5
QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIHRha2VBc0FycmF5QnVmZmVyKCkuZ2V0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBUeXBlOjpCbG9iOgotICAgICAgICBwcm9taXNlLT5yZXNv
bHZlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8QmxvYj4+KHRha2VBc0Jsb2IoKS5nZXQo
KSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFj
ZTxCbG9iPj4odGFrZUFzQmxvYihwcm9taXNlLT5zZXNzaW9uSUQoKSkuZ2V0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBUeXBlOjpKU09OOgogICAgICAgICBmdWxmaWxsUHJvbWlzZVdp
dGhKU09OKFdURk1vdmUocHJvbWlzZSksIHRha2VBc1RleHQoKSk7CkBAIC0xNzcsMTMgKzE3Nywx
MyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLVJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYigpCitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0Jsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGlmICghbV9idWZm
ZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+KCksIG1fY29u
dGVudFR5cGUpOworICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNlc3Npb25JRCwgVmVjdG9y
PHVpbnQ4X3Q+KCksIG1fY29udGVudFR5cGUpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0
cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAg
ICByZXR1cm4gYmxvYkZyb21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsK
KyAgICByZXR1cm4gYmxvYkZyb21EYXRhKHNlc3Npb25JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1f
Y29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CmluZGV4IDFhY2ZlMDA5M2U1MDg1ZjkzNzU5YzUwNTdhN2JmYmRlNWUwZmI5MDcuLmRhYWNmMjY2
Y2VmNzIzODkzMjM1NTcwODBjZjczOWZkNTAzYmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVi
bGljOgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKLSAgICBSZWY8QmxvYj4gdGFr
ZUFzQmxvYigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKICAgICB2b2lkIHNldENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRl
bnRUeXBlOyB9CkBAIC03NSw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFzTG9hZGlu
ZygpIHsgbV9pc0xvYWRpbmcgPSB0cnVlOyB9CiAKIHByaXZhdGU6CisgICAgUmVmPEJsb2I+IHRh
a2VBc0Jsb2IoUEFMOjpTZXNzaW9uSUQpOworCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5n
IG1fY29udGVudFR5cGU7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IDcz
YjUyOTYyOWNlYjUwYzc1ODFmYTI1ZGMyNzFiMGM2ZmJhN2RmYjAuLmFkZGM1NDg5NmI4YTQ0Mzhj
ZmJmZDA2NTgwYWRiYzg2MGE4MWY4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBGZXRjaEJv
ZHlPd25lcjo6YmxvYihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAg
ICAgaWYgKGlzQm9keU51bGxPck9wYXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMSW50ZXJmYWNlPEJsb2I+PihCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxv
Yjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9j
b250ZW50VHlwZSkpKSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJs
b2I+PihCbG9iOjpjcmVhdGUocHJvbWlzZS0+c2Vzc2lvbklEKCksIFZlY3Rvcjx1aW50OF90PiB7
IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fY29udGVudFR5cGUpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChp
c0Rpc3R1cmJlZE9yTG9ja2VkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCBkNWFmZDQ0NTk3MWE4NDUw
YWIzODVhNTAwMjBlYjZlMjE5NjEyOTJmLi4yNDQ3ODI1ZDQ4YmNiYzQyZWJlMjI1MzgzMGU3YzA4
YjgwY2JkYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xNTcsOCArMTU3LDggQEAgUmVmPEJsb2I+IE1l
ZGlhUmVjb3JkZXI6OmNyZWF0ZVJlY29yZGluZ0RhdGFCbG9iKCkKIHsKICAgICBhdXRvIGRhdGEg
PSBtX3ByaXZhdGUtPmZldGNoRGF0YSgpOwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJu
IEJsb2I6OmNyZWF0ZSgpOwotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoKmRhdGEsIG1fcHJpdmF0
ZS0+bWltZVR5cGUoKSk7CisgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCAqZGF0YSwgbV9wcml2YXRlLT5taW1l
VHlwZSgpKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyOjpkaWRBZGRPclJlbW92ZVRyYWNrKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAKaW5kZXggNzU0ZTQ2OGM5MjE1NmU5NzNiY2RmYjQ2MWFjNTNmNmRkNTU1NWQ2Ny4u
YWMzMjE5YTA2NmNlZjY1M2JhMWVkYmQyODI1M2ZiYWZkODYzN2UxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAg
LTIwMiw3ICsyMDIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIAogICAgIHN3aXRjaCAobV9iaW5h
cnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CisgICAg
ICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAgIHNjaGVk
dWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGRhdGFMZW5ndGgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGYxMzc5MWM2MjBhN2E2MDY3ZjRjM2RhYjVmZDQzYjM4
YTc3ZDNmZTIuLmQ3NGU2ZDkxOTAyM2JmYjA5NzQwOGE0ODc2ZTc2NGYzMDU4ZDc0MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC01
ODQsNyArNTg0LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rv
cjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKICAg
ICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2Vp
dmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNr
LiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJpbmFyeURhdGEpLCBlbXB0eVN0cmluZygp
KSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKKyAgICAgICAg
ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgV1RGTW92ZShiaW5hcnlEYXRhKSwgZW1wdHlT
dHJpbmcoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAg
IGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShi
aW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5RGF0YS5zaXplKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggOWVjNGNhZjFjYTE2Y2JmY2VmOTFhMTUyZDE0Y2VmZDI2YmJjZTll
Yy4uOTk0MDczZWFhNWU4YjIzMGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00NjUsNyArNDY1LDcgQEAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZToKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKIAotICAgICAgICBwZWVy
LT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKHVybCwgdHlwZSwgc2l6ZSwgeyB9KSk7CisgICAgICAg
IHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY29udGV4dC5zZXNzaW9uSUQoKSwgdXJsLCB0
eXBlLCBzaXplLCB7IH0pKTsKICAgICB9KTsKIAogICAgIFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZURlZmVycmVkLmgKaW5kZXggYjRhYWI3OGY0N2E2OTAwMzBmZTVkYWI1Yjc4NzY3ODdlNTYyYmI3
MS4uMzY4MTgyMDIxZDc2NzE1YTE4NmI1ZDU5ZDRjNTMzNWJhMjJjZDUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCkBAIC0yOCw4
ICsyOCwxMCBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252
ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VEZWZlcnJlZC5oPgorI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzYsNiAr
MTM4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aGVuU2V0dGxlZChzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVy
biBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKTsg
fQorCiBwcml2YXRlOgogICAgIERlZmVycmVkUHJvbWlzZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCwgTW9kZSBtb2RlKQog
ICAgICAgICA6IERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2VEZWZlcnJlZD4oZ2xvYmFsT2JqZWN0
LCBkZWZlcnJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDk2NWVjZTM5NGI5ODMyNjA0YTM0M2JiMjg2M2IxNGJl
NzRmYjg3YjQuLjc3NTNkOGEyZjMzNDg3YjE5NzI3MzhlZGIyYzcwMTI0Mjc0ZWEwZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjA5NSw3ICsyMDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpbGVQYXRo
ID0gcGF0aC0+c3RyaW5nKCk7CiAKICAgICAgICAgaWYgKG1faXNET01HbG9iYWxPYmplY3QpCi0g
ICAgICAgICAgICBmaWxlID0gRmlsZTo6ZGVzZXJpYWxpemUoZmlsZVBhdGgsIFVSTChVUkwoKSwg
dXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxM
YXN0TW9kaWZpZWQpOworICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXNzaW9uSUQoKSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSks
IHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI4NjEsNyArMjg2MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmICgh
bV9pc0RPTUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6ZShVUkwoVVJMKCks
IHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxv
YlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFs
dWUoQmxvYjo6ZGVzZXJpYWxpemUoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxP
YmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCBVUkwoVVJMKCks
IHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxv
YlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU3Ry
aW5nVGFnOiB7CiAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgY2FjaGVkU3RyaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCA5YWFkYjBmODZkOGY4ZGFhZjdjYTc2YTIz
NWYzNzczZmQ4OWQ2ZTQwLi5jYjc1MjMyODBjN2IzMjVjNjZjZGU2NDZjMTViZjVhOTEzMTc0NWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNjgsOCArNjgsOSBAQCBwcml2
YXRlOgogCiAjZW5kaWYKIAotRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoU3RvcmVNb2RlIG1v
ZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkLCBUeXBlIHR5cGUpCi0g
ICAgOiBtX3N0b3JlTW9kZShtb2RlKQorRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBTdG9yZU1vZGUgbW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IHBhc3RlYm9hcmQsIFR5cGUgdHlwZSkKKyAgICA6IG1fc2Vzc2lvbklEKGRvY3VtZW50
LnNlc3Npb25JRCgpKQorICAgICwgbV9zdG9yZU1vZGUobW9kZSkKICAgICAsIG1fcGFzdGVib2Fy
ZChXVEZNb3ZlKHBhc3RlYm9hcmQpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgLCBt
X3R5cGUodHlwZSkKQEAgLTgzLDkgKzg0LDkgQEAgRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIo
U3RvcmVNb2RlIG1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXIKICNl
bmRpZgogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0b3JlTW9kZSBzdG9yZU1vZGUsIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IFN0b3JlTW9kZSBzdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3Rl
Ym9hcmQpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFu
c2ZlcihzdG9yZU1vZGUsIFdURk1vdmUocGFzdGVib2FyZCkpKTsKKyAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBzdG9yZU1vZGUsIFdU
Rk1vdmUocGFzdGVib2FyZCkpKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmll
ciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJu
IGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTM0OCw3ICszNDksNyBAQCBWZWN0b3I8UmVmPEZpbGU+PiBE
YXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgpIGNvbnN0CiAgICAg
Ym9vbCBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsKICAgICBWZWN0b3I8UmVmPEZp
bGU+PiBmaWxlczsKICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkgJiYgbV9w
YXN0ZWJvYXJkLT5maWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRT
dGF0ZTo6Tm9GaWxlT3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyIHJlYWRlcjsKKyAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRl
ciB7IG1fc2Vzc2lvbklEIH07CiAgICAgICAgIG1fcGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOwog
ICAgICAgICBmaWxlcyA9IFdURk1vdmUocmVhZGVyLmZpbGVzKTsKICAgICAgICAgYWRkZWRGaWxl
c0Zyb21QYXN0ZWJvYXJkID0gIWZpbGVzLmlzRW1wdHkoKTsKQEAgLTQxMywxMiArNDE0LDEyIEBA
IGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIHJldHVybiAhdHlwZS5pc051bGwoKSAmJiB0eXBlcygpLmNvbnRhaW5zKHR5cGUpOwogfQog
Ci1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29u
c3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCitSZWY8RGF0YVRy
YW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4
dCkKIHsKICAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBs
YWluVGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRt
bFRleHQpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6
OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9CiAKIHZv
aWQgRGF0YVRyYW5zZmVyOjpjb21taXRUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgbmF0aXZlUGFz
dGVib2FyZCkKQEAgLTQ2MywyOSArNDY0LDI5IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFn
SW1hZ2UoRWxlbWVudCosIGludCwgaW50KQogCiAjZWxzZQogCi1SZWY8RGF0YVRyYW5zZmVyPiBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkV3JpdGUsIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2Rl
OjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIFR5cGU6OkRy
YWdBbmREcm9wRGF0YSkpOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyYWdTdGFydEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCkKK1JlZjxEYXRhVHJhbnNm
ZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRh
VHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFz
dGVib2FyZD4oKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CisgICAgYXV0byBkYXRhVHJhbnNm
ZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFk
V3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJhZ0Fu
ZERyb3BEYXRhKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5tX29yaWdpbklkZW50aWZpZXIgPSBkb2N1
bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOwogICAgIHJldHVybiBkYXRhVHJh
bnNmZXI7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJv
cChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3Rl
Ym9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMp
CitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJk
LCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewot
ICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRy
YW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2lu
Z0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkp
OworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9j
dW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJv
YXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFn
QW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3Vy
Y2VPcGVyYXRpb24pOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9j
dW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRy
YW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29s
IGRyYWdnaW5nRmlsZXMpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
clVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0
aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9w
dFJlZigqbmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVk
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BG
aWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0g
YWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVN
b2RlOjpQcm90ZWN0ZWQsIFdURk1vdmUocGFzdGVib2FyZCksIGRyYWdnaW5nRmlsZXMgPyBUeXBl
OjpEcmFnQW5kRHJvcEZpbGVzIDogVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiAgICAgZGF0YVRy
YW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oc291cmNlT3BlcmF0aW9uKTsKICAgICBkYXRhVHJh
bnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQ
YXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaAppbmRleCAwMGU5ZWY0NjEyMmYxYWJmODVjNzhkYTBhZmFiMTJmODJhOTdlNDI3Li42
YWVjYWM4ZmY0OTQyNTQ1NWNkZjdiYTM3YmJkMTdlNjgyZjdkZDFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdJbWFnZS5o
IgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsOCArNDcsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG5kLmh0bWwjZHJh
Zy1kYXRhLXN0b3JlLW1vZGUKICAgICBlbnVtIGNsYXNzIFN0b3JlTW9kZSB7IEludmFsaWQsIFJl
YWRXcml0ZSwgUmVhZG9ubHksIFByb3RlY3RlZCB9OwogCi0gICAgc3RhdGljIFJlZjxEYXRhVHJh
bnNmZXI+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShEb2N1bWVudCYsIFN0b3JlTW9kZSwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBj
cmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcm
IGh0bWxUZXh0KTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yQ29weUFu
ZFBhc3RlKGNvbnN0IERvY3VtZW50JiwgU3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvcklucHV0RXZl
bnQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5n
JiBodG1sVGV4dCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+RGF0YVRyYW5zZmVyKCk7CiAKQEAg
LTg2LDEwICs4NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRUb1Bhc3RlYm9hcmQoUGFz
dGVib2FyZCYpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBzdGF0aWMgUmVmPERh
dGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZygpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChEb2N1bWVudCYpOwotICAgIHN0YXRpYyBSZWY8RGF0
YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGlj
IFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChEb2N1bWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdn
aW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKGNv
bnN0IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRy
YWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNm
ZXI+IGNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMg
UmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3Vt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wg
ZHJhZ2dpbmdGaWxlcyk7CiAKICAgICBib29sIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSBj
b25zdCB7IHJldHVybiBtX2Ryb3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiOyB9CiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsg
Q29weUFuZFBhc3RlLCBEcmFnQW5kRHJvcERhdGEsIERyYWdBbmREcm9wRmlsZXMsIElucHV0RXZl
bnQgfTsKLSAgICBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4sIFR5cGUgPSBUeXBlOjpDb3B5QW5kUGFzdGUpOworICAgIERhdGFUcmFuc2Zlcihjb25z
dCBEb2N1bWVudCYsIFN0b3JlTW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBl
ID0gVHlwZTo6Q29weUFuZFBhc3RlKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
Ym9vbCBmb3JEcmFnKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkRyYWdBbmREcm9w
RGF0YSB8fCBtX3R5cGUgPT0gVHlwZTo6RHJhZ0FuZERyb3BGaWxlczsgfQpAQCAtMTI5LDYgKzEz
MCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoQWRkRmlsZXNUeXBlKSBj
b25zdDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxp
c3QoKSBjb25zdDsKIAorICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFN0cmlu
ZyBtX29yaWdpbklkZW50aWZpZXI7CiAgICAgU3RvcmVNb2RlIG1fc3RvcmVNb2RlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBlZDhkOTM0Mjk5MDYyMTRkYWQyOGJmOTY2YzZmZGNiZDQ1MjMzZjg3Li5iZTlk
MmI2MmI5ZTMzYjUxYTc4OTA4NzI0YmMwMjY1Zjc3YTc3MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTU3MzIsNyArNTczMiw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzVGVsZXBob25lTnVt
YmVyUGFyc2luZ0FsbG93ZWQoKSBjb25zdAogCiAjZW5kaWYKIAotU3RyaW5nIERvY3VtZW50Ojpv
cmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpCitTdHJpbmcgRG9jdW1lbnQ6Om9yaWdpbklk
ZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCkgY29uc3QKIHsKICAgICBhdXRvIG9yaWdpbiA9IHNlY3Vy
aXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKICAgICBpZiAob3JpZ2luICE9ICJudWxsIikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggMzQ5MTNjNTdjYmY1YzE4YzIyYTIxZGNkNzYyN2VkY2MwZTc0ZTA1
MC4uZjk3ZGJlNzUxYmQ1MDQzNjI3M2MwNzhmNzBlZWExNWI2NWM3NjJhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluY0RPTVRy
ZWVWZXJzaW9uKCkgeyBtX2RvbVRyZWVWZXJzaW9uID0gKytzX2dsb2JhbFRyZWVWZXJzaW9uOyB9
CiAgICAgdWludDY0X3QgZG9tVHJlZVZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2RvbVRyZWVW
ZXJzaW9uOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllckZv
clBhc3RlYm9hcmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3JpZ2luSWRlbnRpZmll
ckZvclBhc3RlYm9hcmQoKSBjb25zdDsKIAogICAgIC8vIFhQYXRoRXZhbHVhdG9yIG1ldGhvZHMK
ICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8WFBhdGhFeHByZXNzaW9uPj4gY3Jl
YXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxYUGF0aE5TUmVz
b2x2ZXI+JiYpOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBt
X2RvbVRyZWVWZXJzaW9uOwogICAgIHN0YXRpYyB1aW50NjRfdCBzX2dsb2JhbFRyZWVWZXJzaW9u
OwogCi0gICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKKyAgICBtdXRhYmxlIFN0cmluZyBt
X3VuaXF1ZUlkZW50aWZpZXI7CiAKICAgICBIYXNoU2V0PE5vZGVJdGVyYXRvcio+IG1fbm9kZUl0
ZXJhdG9yczsKICAgICBIYXNoU2V0PFJhbmdlKj4gbV9yYW5nZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKaW5kZXgg
MDQxZjlkMTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAwZi4uNTJiNjlhNTcyYTY1Njkw
ODdjOTNhMmExOGNkMzI1MDIyOWY2YWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcApAQCAtODIsNyArODIsNyBA
QCBTdHJpbmcgUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNv
bnN0CiBSZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6Omlu
cHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogewogICAgIGlmICghaXNFZGl0aW5nVGV4dEFy
ZWFPclRleHRJbnB1dCgpKQotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJ
bnB1dEV2ZW50KG1fdGV4dCwgc2VyaWFsaXplRnJhZ21lbnQoKm1fdGV4dEZyYWdtZW50LCBTZXJp
YWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKSk7CisgICAgICAgIHJldHVybiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoZG9jdW1lbnQoKSwgbV90ZXh0LCBzZXJpYWxp
emVGcmFnbWVudCgqbV90ZXh0RnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1
ZGluZ05vZGUpKTsKIAogICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVu
dERhdGFUcmFuc2ZlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBlODBkZWMwNWY1MDQxMGZlYTBlZjVkOTUxZDdi
MDRmMzMzYTIxMjFjLi4wZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1ZjU0Nzk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtMTMyNiw3ICsxMzI2LDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogICAgIGlmIChp
c0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCiAgICAgICAgIHJldHVybiBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpOwogCi0gICAgcmV0dXJuIERhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChtX2RvY3VtZW50RnJhZ21lbnRQbGFpblRleHQs
IG1fZG9jdW1lbnRGcmFnbWVudEhUTUxNYXJrdXApOworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvcklucHV0RXZlbnQoZG9jdW1lbnQoKSwgbV9kb2N1bWVudEZyYWdtZW50UGxhaW5U
ZXh0LCBtX2RvY3VtZW50RnJhZ21lbnRIVE1MTWFya3VwKTsKIH0KIAogYm9vbCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6c2hvdWxkUmVtb3ZlRW5kQlIoTm9kZSogZW5kQlIsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgb3JpZ2luYWxWaXNQb3NCZWZvcmVFbmRCUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDdkYjNm
OWI0NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UuLjM3MThhYTQ5MWVkNjZhYjgzZmI4
MWQ3YjRiZjkzMDdkZGY0NWY1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFZlY3Rv
cjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRS
YW5nZXMoKSBjb25zdAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0VkaXRp
bmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCi0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvcklucHV0RXZlbnQobV9jb3JyZWN0aW9uLCBzZXJpYWxpemVGcmFnbWVudCgqbV9jb3Jy
ZWN0aW9uRnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpKTsK
KyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChkb2N1bWVu
dCgpLCBtX2NvcnJlY3Rpb24sIHNlcmlhbGl6ZUZyYWdtZW50KCptX2NvcnJlY3Rpb25GcmFnbWVu
dCwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSkpOwogCiAgICAgcmV0dXJu
IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAwMWY1M2RiYTAzYmVhYzc5
N2Q3NmFhOGFlNTY2ZDJmZDEyNWM4MjNkLi5mMzU4NzQzMjBiMTkwNTNlMTAwNmRiZTZlZjY2ZTc3
ZmYzMzFhY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAg
LTQyNSw3ICs0MjUsNyBAQCBSZWZQdHI8RGF0YVRyYW5zZmVyPiBUeXBpbmdDb21tYW5kOjppbnB1
dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbFRleHQ7
CiAgICAgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGll
cyhodG1sVGV4dCwgbV9jdXJyZW50VGV4dFRvSW5zZXJ0LCAwLCBtX2N1cnJlbnRUZXh0VG9JbnNl
cnQubGVuZ3RoKCksIEVudGl0eU1hc2tJbkhUTUxQQ0RBVEEpOwotICAgIHJldHVybiBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQobV9jdXJyZW50VGV4dFRvSW5zZXJ0LCBodG1sVGV4
dC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2
ZW50KGRvY3VtZW50KCksIG1fY3VycmVudFRleHRUb0luc2VydCwgaHRtbFRleHQudG9TdHJpbmco
KSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cAppbmRleCBmNjhhMDBlZmFlN2E3YmI0OTU4OWQwZmZlMjczMWJiZTZlODQyYjBjLi42NGRlOTFk
M2U2YTg1NDhhNTM2ZGQ5YTk0MzFiY2U5MmY4NGVkZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zNSwx
MiArMzUsMTIgQEAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjp+V2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7Ci0gICAgZmlsZXMu
YXBwZW5kKEZpbGU6OmNyZWF0ZShmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpj
cmVhdGUoc2Vzc2lvbklELCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGZpbGVzLmFwcGVu
ZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSksIGZpbGVuYW1l
KSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2Vzc2lvbklE
LCBidWZmZXIuZ2V0KCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCBm
ZTQ0NzZiZmYyZmI0NjA1MDZhMzc5Yjk0N2UxNGVlMGE4ZjAxNjVhLi5mYWU5YjA1MWFjNDI0Y2Nl
YTMyY2VkNjljMTlmNWRjZWM4M2Y4OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTMyLDExICszMiwxNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWxlOwogCiBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgeworICAgIGV4cGxpY2l0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisg
ICAgICAgIDogc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICB7CisgICAgfQorCiAgICAgfldlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKKyAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tCmluZGV4IDcxNTljZDkyMzg1MTQyZTEyOTNmNTBmYWQ3ZWJjYTFlYzMz
NDU3MzQuLmExMzEzMDcxNGNkMzMwYTY2OGRkOGUwY2JmZDc2NzYzM2U4ODg4NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UKICAgICAgICAg
ZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5l
bnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1hZ2VBdHRhY2ht
ZW50TmFtZSwgV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0
YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29udGVudFR5cGUpKSB7CiAgICAgICAg
ICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAg
ICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNy
ZWF0ZShidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Np
b25JRCgpLCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAgaW1hZ2Ut
PnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICAgICAg
aWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJp
bmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHN0
YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1l
bnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQo
V1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBh
dHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgp
LCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25J
RCgpLCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5h
bWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMp
OwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAg
ICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgdm9p
ZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERh
dGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4ob3JpZ2lu
YWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJl
cHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYg
aW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkp
OwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9j
dW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKKyAg
ICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50
KCksIEJsb2I6OmNyZWF0ZShmcmFnbWVudC5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBpbmZvLmRh
dGEsIGluZm8uY29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNo
bWVudEVsZW1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+
c2l6ZSgpLCBpbmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM3Myw3ICszNzMs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5l
bnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1v
dmUoaW5mby5maWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoV1RGTW92ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92
ZShpbmZvLmZpbGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0
dHJpYnV0ZXM6Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNy
ZWF0ZShCbG9iOjpjcmVhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgV1RGTW92
ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZp
bGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6
Olllcyk7CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0dGFjaG1l
bnQpLCBXVEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDE1
LDcgKzQxNSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFk
ZFJlc291cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAKICAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIEF0b21TdHJpbmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2
ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMp
IHsKLSAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCks
IHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3Jl
YXRlKGRvY3VtZW50LnNlc3Npb25JRCgpLCBzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJj
ZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVP
YmplY3RVUkwoZG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCksIGJsb2JVUkwpOwogICAgIH0KQEAgLTQ2NCw3ICs0NjQsNyBA
QCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBhdXRvJiBzdWJyZXNvdXJjZVVSTCA9
IHN1YnJlc291cmNlLT51cmwoKTsKICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3Vy
Y2VVUkwoc3VicmVzb3VyY2VVUkwpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1
dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+
bWltZVR5cGUoKSk7CisgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShkZXN0aW5hdGlv
bkRvY3VtZW50LnNlc3Npb25JRCgpLCBzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+
bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0
KHN1YnJlc291cmNlVVJMLnN0cmluZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00OTEsNyArNDkx
LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJs
b2JCdWZmZXI7CiAgICAgICAgIGJsb2JCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHV0ZjgubGVuZ3Ro
KCkpOwogICAgICAgICBibG9iQnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOwotICAgICAgICBhdXRvIGJsb2Ig
PSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CisgICAgICAgIGF1dG8g
YmxvYiA9IEJsb2I6OmNyZWF0ZShkZXN0aW5hdGlvbkRvY3VtZW50LnNlc3Npb25JRCgpLCBXVEZN
b3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJpbmcgc3ViZnJhbWVCbG9iVVJM
ID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7CiAg
ICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmluZygpLCBzdWJmcmFtZUJsb2JV
UkwpOwpAQCAtNjg4LDcgKzY4OCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgaWYg
KHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQogICAgICAgICBhZGRG
cmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChmcmFtZSwgZG9jdW1lbnQs
IFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogICAg
IGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChk
b2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZShi
dWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgICAg
ICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Np
b25JRCgpLCBidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkp
OwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpAQCAtNzA5LDcgKzcwOSw3IEBAIHN0YXRpYyBS
ZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0
IFN0cmluZyYgcGF0aCwKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUuZG9jdW1l
bnQoKSk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CiAgICAgaWYgKCFzdXBwb3J0
c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKLSAgICAgICAgYXR0YWNobWVudC0+
c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRl
RGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6Y3JlYXRlKGRvY3VtZW50LT5zZXNzaW9uSUQoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50OwogICAgIH0KIApAQCAtNzM2LDcgKzczNiw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC0+c2Vzc2lv
bklEKCksIHBhdGgpKSk7CiAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZN
b3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAg
ICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7
CkBAIC03NjUsNyArNzY1LDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZv
ckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KICAgICAgICAgZmls
ZU5hbWUgPSBuYW1lOwogCiAgICAgaWYgKCFzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YShmcmFtZSkpIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxv
Yjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBmaWxlTmFtZSkpOwor
ICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9j
dW1lbnQtPnNlc3Npb25JRCgpLCBidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgZmls
ZU5hbWUpKTsKICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCkBAIC03NzMsNyAr
NzczLDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUm
IGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KIAogICAgIGlmIChjb250ZW50VHlwZUlz
U3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGF0dGFjaG1lbnRUeXBlKSkgewog
ICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
LSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3Jl
YXRlKEJsb2I6OmNyZWF0ZShidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92
ZShmaWxlTmFtZSkpKSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9jdW1lbnQtPnNlc3Npb25JRCgpLCBi
dWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92ZShmaWxlTmFtZSkpKSk7CiAg
ICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsK
ICAgICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRv
bVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKaW5kZXggMjAzY2M0N2FhNmQ2ZjU0MTQ4N2Y1NGE0NjY5ODMyZjNiNWRmNTc1ZS4u
ZmI0MzcxNjMwM2FlMjViODE5MjkyZDI3MWNhMmNhZTY4NGI5YzAyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcApAQCAtOTgzLDkgKzk4Myw5IEBAIHN0YXRpYyB2b2lkIHJlc3RvcmVBdHRh
Y2htZW50RWxlbWVudHNJbkZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KQogICAg
ICAgICBhdXRvIGF0dGFjaG1lbnRQYXRoID0gYXR0YWNobWVudC0+YXR0YWNobWVudFBhdGgoKTsK
ICAgICAgICAgYXV0byBibG9iVVJMID0gYXR0YWNobWVudC0+YmxvYlVSTCgpOwogICAgICAgICBp
ZiAoIWF0dGFjaG1lbnRQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNl
dEZpbGUoRmlsZTo6Y3JlYXRlKGF0dGFjaG1lbnRQYXRoKSk7CisgICAgICAgICAgICBhdHRhY2ht
ZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFnbWVudC5kb2N1bWVudCgpLnNlc3Npb25JRCgp
LCBhdHRhY2htZW50UGF0aCkpOwogICAgICAgICBlbHNlIGlmICghYmxvYlVSTC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmRlc2VyaWFsaXplKHsgfSwg
YmxvYlVSTCwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgYXR0YWNobWVudC0+YXR0YWNo
bWVudFRpdGxlKCkpKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6ZGVz
ZXJpYWxpemUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgeyB9LCBibG9iVVJMLCBh
dHRhY2htZW50LT5hdHRhY2htZW50VHlwZSgpLCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUo
KSkpOwogCiAgICAgICAgIC8vIFJlbW92ZSB0ZW1wb3JhcnkgYXR0cmlidXRlcyB0aGF0IHdlcmUg
cHJldmlvdXNseSBhZGRlZCBpbiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ3VzdG9t
QXR0cmlidXRlcy4KICAgICAgICAgYXR0YWNobWVudC0+cmVtb3ZlQXR0cmlidXRlKHdlYmtpdGF0
dGFjaG1lbnRpZEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggMTRjNTE3MmI3ZTk1
NDIzZGFjYTI4ZDU0ZmY1ZGJkNmYzY2NhZWU5OC4uYThiOWY5NzEzYzU2YWE0MjYxNDk3NjVmNzJm
MDE5OWU5NTU3ZjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03MiwxOSArNzIsMjIg
QEAgVVJMUmVnaXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBp
bnN0YW5jZTsKIH0KIAotQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvcikKK0Jsb2I6
OkJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
KyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKIH0KIAotQmxvYjo6QmxvYigpCi0gICAg
OiBtX3NpemUoMCkKK0Jsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDog
bV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5h
bFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CiB9CiAK
LUJsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBj
b25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQotICAgIDogbV9pbnRlcm5hbFVSTChC
bG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQorQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29u
c3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Np
b25JRCkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkK
ICAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUocHJvcGVydHlCYWcudHlwZSkpCiAg
ICAgLCBtX3NpemUoLTEpCiB7CkBAIC0xMDAsOCArMTAzLDkgQEAgQmxvYjo6QmxvYihWZWN0b3I8
QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJh
ZyYgcHIKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRl
cm5hbFVSTCwgYnVpbGRlci5maW5hbGl6ZSgpLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAg
IDogbV90eXBlKGNvbnRlbnRUeXBlKQorQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV90eXBlKGNvbnRlbnRUeXBl
KQogICAgICwgbV9zaXplKGJ1ZmZlci5zaXplKCkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGE7CkBAIC0xMTMsOCArMTE3LDkgQEAgQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBj
b250ZW50VHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKK0Jsb2I6
OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQor
ICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQogewog
ICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwpAQCAtMTI0LDE1ICsxMjksMTcgQEAgQmxv
Yjo6QmxvYihWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogfQogCiBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNv
bnN0IEJsb2ImIGJsb2IpCi0gICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVy
bmFsVVJMKCkpCisgICAgOiBtX3Nlc3Npb25JRChibG9iLm1fc2Vzc2lvbklEKQorICAgICwgbV9p
bnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogICAgICwgbV90eXBlKGJs
b2IudHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6ZSgpKQogewogICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0KGJs
b2IudXJsKCkpIH0gLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNv
bnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9u
ZyBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQotICAgIDogbV90eXBlKG5vcm1h
bGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKK0Jsb2I6OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1
Y3RvciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0
aCkKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fdHlwZShub3JtYWxpemVk
Q29udGVudFR5cGUodHlwZSkpCiAgICAgLCBtX3NpemUoc2l6ZSkKIHsKICAgICBtX2ludGVybmFs
VVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKQEAgLTE0Miw4ICsxNDksOSBAQCBC
bG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGxvbgogICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChtX2ludGVybmFsVVJMLCBzcmNVUkws
IGZpbGVCYWNrZWRQYXRoLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKGNvbnN0IFVSTCYgc3Jj
VVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgdHlwZSkK
LSAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpCbG9iKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFy
dCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQorICAgIDogbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQorICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKICAg
ICAsIG1fc2l6ZSgtMSkgLy8gc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5kIC0g
c3RhcnQuCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IGNkYzg4OTVmOTZlMDFlMmM1NDBkOTc2MGEzOWM5
MzBjODhhMDIxZWMuLmU2MzZmMmQyZGZjZTdjNDBhMTkzYTMxOTE5NjMyMDMwOGU3MmE2NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC0zMiwxMCArMzIsMTIgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIK
KyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC01NCwzMCArNTYsMzAgQEAgdXNpbmcgQmxvYlBhcnRWYXJpYW50
ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+LCBSZWZQdHI8SlNDOjpBcnJh
eUIKIGNsYXNzIEJsb2IgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgVVJMUmVnaXN0
cmFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0VYUE9SVChCbG9iLCBXRUJDT1JFX0VYUE9SVCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxCbG9iPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2Ip
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKHNlc3Npb25JRCkpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYg
YmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAg
ICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQ
cm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCbG9iKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoY29udGV4dC5zZXNzaW9uSUQoKSwgV1RGTW92
ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmPEJsb2I+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihidWZm
ZXIsIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2Ioc2Vz
c2lvbklELCBidWZmZXIsIGNvbnRlbnRUeXBlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxC
bG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKFdURk1vdmUoZGF0YSksIGNv
bnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2Ioc2Vzc2lvbklE
LCBXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8
QmxvYj4gZGVzZXJpYWxpemUoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwg
bG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCisgICAgc3RhdGlj
IFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBjb25zdCBTdHJp
bmcmIGZpbGVCYWNrZWRQYXRoKQogICAgIHsKICAgICAgICAgQVNTRVJUKEJsb2I6OmlzTm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxv
YihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBzcmNVUkwsIHR5cGUsIHNpemUsIGZpbGVCYWNr
ZWRQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0
aW9uQ29udHJ1Y3Rvciwgc2Vzc2lvbklELCBzcmNVUkwsIHR5cGUsIHNpemUsIGZpbGVCYWNrZWRQ
YXRoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QmxvYigpOwpAQCAtMTAyLDI3ICsxMDQsMjgg
QEAgcHVibGljOgogCiAgICAgUmVmPEJsb2I+IHNsaWNlKGxvbmcgbG9uZyBzdGFydCA9IDAsIGxv
bmcgbG9uZyBlbmQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRl
bnRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IobV9zZXNzaW9uSUQs
IG1faW50ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7CiAgICAgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQmxvYigpOwotICAgIEJsb2IoVmVjdG9yPEJsb2JQ
YXJ0VmFyaWFudD4mJiwgY29uc3QgQmxvYlByb3BlcnR5QmFnJik7Ci0gICAgQmxvYihjb25zdCBT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICBCbG9iKFZlY3Rv
cjx1aW50OF90PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBCbG9iKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBCbG9iKFBBTDo6U2Vzc2lv
bklELCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsK
KyAgICBCbG9iKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKKyAgICBCbG9iKFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8dWludDhf
dD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKICAgICBlbnVtIFJlZmVyZW5jaW5n
RXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgeyByZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVj
dG9yIH07CiAgICAgQmxvYihSZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb25z
dCBCbG9iJik7CiAKICAgICBlbnVtIFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yIHsgdW5pbml0aWFs
aXplZENvbnRydWN0b3IgfTsKLSAgICBCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKTsKKyAg
ICBCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBl
bnVtIERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IgeyBkZXNlcmlhbGl6YXRpb25Db250cnVjdG9y
IH07Ci0gICAgQmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VS
TCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxl
QmFja2VkUGF0aCk7CisgICAgQmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25n
IHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpOwogCiAgICAgLy8gRm9yIHNsaWNp
bmcuCi0gICAgQmxvYihjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBCbG9iKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAorICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJuYWwgVVJMIHJlZmVycmluZyB0byB0aGUgYmxv
YiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4gSXQgc2VydmVzCiAgICAgLy8gYXMg
YW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBUaGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVz
ZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVudAogICAgIC8vIGludG8gYW4gSFRNTCBvciBm
b3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBVUkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2Ug
cHVycG9zZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbAppbmRleCA2OWQwZjE1NWFkNDc5OGQ3ZTY2
YjQwOGQyZGJlYzY4MjBjNmVkZGViLi5hZTU1MmE5NTZmMzUzYzBlNDJjYTJkNTE1N2Y1NTQwNDFl
NTFhNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRl
ZiAoQnVmZmVyU291cmNlIG9yIEJsb2Igb3IgVVNWU3RyaW5nKSBCbG9iUGFydDsKICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBDb25zdHJ1
Y3RvcihvcHRpb25hbCBzZXF1ZW5jZTxCbG9iUGFydD4gYmxvYlBhcnRzLCBvcHRpb25hbCBCbG9i
UHJvcGVydHlCYWcgb3B0aW9ucyksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LAogXSBpbnRlcmZhY2UgQmxvYiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IDE4M2RhN2EwZTA0NmYyYzM5MWVl
YmY2NDQxNWU2YzY2Njk0MTk3OTMuLmViNWI2YTE3Njc4YTM0ZGEzYzBjNmFlYjlmOGM1YmVmNGVk
MGFmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtMzksMTUgKzM5LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEZpbGUpOwogCi1S
ZWY8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQorUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZVdpdGhS
ZWxhdGl2ZVBhdGgoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQogewotICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNy
ZWF0ZShwYXRoKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlOjpjcmVhdGUoc2Vzc2lvbklELCBwYXRo
KTsKICAgICBmaWxlLT5zZXRSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoKTsKICAgICByZXR1cm4g
ZmlsZTsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBCbG9iKHVu
aW5pdGlhbGl6ZWRDb250cnVjdG9yKQorRmlsZTo6RmlsZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0
b3IsIHNlc3Npb25JRCkKICAgICAsIG1fcGF0aChwYXRoKQogewogICAgIG1faW50ZXJuYWxVUkwg
PSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwpAQCAtNTYsOCArNTYsOCBAQCBGaWxlOjpG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckZpbGVCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlwZSk7CiB9CiAKLUZpbGU6
OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKLSAg
ICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IpCitGaWxlOjpGaWxlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVy
cmlkZSkKKyAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIHNlc3Npb25JRCkKICAg
ICAsIG1fcGF0aChwYXRoKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJ
bnRlcm5hbFVSTCgpOwpAQCAtNjYsOCArNjYsOCBAQCBGaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChtX2ludGVybmFsVVJMLCBwYXRoLCBtX3R5cGUpOwog
fQogCi1GaWxlOjpGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKQotICAgIDogQmxvYihk
ZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCB1cmwsIHR5cGUsIC0xLCBwYXRoKQorRmlsZTo6Rmls
ZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKQor
ICAgIDogQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBzZXNzaW9uSUQsIHVybCwgdHlw
ZSwgLTEsIHBhdGgpCiAgICAgLCBtX3BhdGgocGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQogICAg
ICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGUobGFzdE1vZGlmaWVkKQpAQCAtODEsOCArODEs
OCBAQCBzdGF0aWMgQmxvYlByb3BlcnR5QmFnIGNvbnZlcnRQcm9wZXJ0eUJhZyhjb25zdCBGaWxl
OjpQcm9wZXJ0eUJhZyYgaW5pdGlhbEJhZykKICAgICByZXR1cm4gYmFnOwogfQogCi1GaWxlOjpG
aWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQotICAgIDogQmxv
YihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBjb252ZXJ0UHJvcGVydHlCYWcocHJvcGVydHlC
YWcpKQorRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3I8
QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICA6IEJsb2IoY29udGV4dC5z
ZXNzaW9uSUQoKSwgV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgY29udmVydFByb3BlcnR5QmFn
KHByb3BlcnR5QmFnKSkKICAgICAsIG1fbmFtZShmaWxlbmFtZSkKICAgICAsIG1fbGFzdE1vZGlm
aWVkRGF0ZU92ZXJyaWRlKHByb3BlcnR5QmFnLmxhc3RNb2RpZmllZC52YWx1ZU9yKFdhbGxUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmgKaW5kZXggYjI5YjA4YTg4Nzk1OGVkNzQ2MWFhYzE0OWZmMjYzOGJjZDM1MWM0Yy4u
Y2I4YTUwN2JmM2RmNjZkM2I4YjNmNDU4Y2I3NTZiY2Q0MWYzZGQ2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmgKQEAgLTQxLDI4ICs0MSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPGludDY0
X3Q+IGxhc3RNb2RpZmllZDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShwYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZpbGUoc2Vzc2lvbklELCBwYXRoKSk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIGEgRmls
ZSB1c2luZyB0aGUgJ25ldyBGaWxlJyBjb25zdHJ1Y3Rvci4KLSAgICBzdGF0aWMgUmVmPEZpbGU+
IGNyZWF0ZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICBz
dGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBW
ZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgZmls
ZW5hbWUsIHByb3BlcnR5QmFnKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUo
Y29udGV4dCwgV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgZmlsZW5hbWUsIHByb3BlcnR5QmFn
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IFdURjo6
bnVsbG9wdCkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFsaXplKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+
JiBsYXN0TW9kaWZpZWQgPSBXVEY6Om51bGxvcHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHBhdGgsIHNyY1VSTCwg
dHlwZSwgbmFtZSwgbGFzdE1vZGlmaWVkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZpbGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc2Vzc2lvbklELCBwYXRoLCBzcmNVUkws
IHR5cGUsIG5hbWUsIGxhc3RNb2RpZmllZCkpOwogICAgIH0KIAogICAgIC8vIENyZWF0ZSBhIGZp
bGUgd2l0aCBhIG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0aG9yICh2aWEgRmlsZS5uYW1lIGFuZCBh
c3NvY2lhdGVkIERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgb25lIHByb3Zp
ZGVkIGluIHRoZSBwYXRoLgotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aE5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKKyAgICBzdGF0aWMg
UmVmPEZpbGU+IGNyZWF0ZVdpdGhOYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKICAgICB7CiAgICAgICAg
IGlmIChuYW1lT3ZlcnJpZGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRmlsZShwYXRoKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUocGF0
aCwgbmFtZU92ZXJyaWRlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxl
KHNlc3Npb25JRCwgcGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKHNl
c3Npb25JRCwgcGF0aCwgbmFtZU92ZXJyaWRlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxG
aWxlPiBjcmVhdGUoY29uc3QgQmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZmls
ZSwgbmFtZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aFJlbGF0
aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsK
KyAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpOwogCiAg
ICAgYm9vbCBpc0ZpbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTk1
LDEzICs5NSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKTsKLSAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3Zl
cnJpZGUpOwotICAgIEZpbGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlh
bnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cGF0aCk7CisgICAgRmlsZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG5hbWVPdmVycmlkZSk7CisgICAgRmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYpOwogICAgIEZpbGUoY29uc3QgQmxvYiYs
IGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgRmlsZShjb25zdCBGaWxlJiwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKIAotICAgIEZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOworICAg
IEZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBT
dHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVO
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRsCmluZGV4IDRjZjU0N2UxYzM2Yzk0ZmM1NzZhODExZTIw
NzUzYzE1NmQyMDlhZTQuLmJmNzZkY2RmNDAwNDI2NzMzMTAzYzIxYzNlZGY3MDQ1ZmQ1MDRlNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbApAQCAtMjgsNiArMjgsNyBAQCB0eXBlZGVmIChCdWZm
ZXJTb3VyY2Ugb3IgQmxvYiBvciBVU1ZTdHJpbmcpIEJsb2JQYXJ0OwogLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGV4cG9zZWQgb24gV29ya2VycyBhcyB3ZWxsLgogWwogICAgIENvbnN0cnVjdG9y
KHNlcXVlbmNlPEJsb2JQYXJ0PiBmaWxlQml0cywgVVNWU3RyaW5nIGZpbGVOYW1lLCBvcHRpb25h
bCBGaWxlUHJvcGVydHlCYWcgb3B0aW9ucyksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAg
IEV4cG9zZWQ9KFdpbmRvdyksCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBhZmMyNTg4MzkxMjI3MzhkNzZmMDRmNmI5MGFj
Y2E5MTdmMWMzOTJkLi43YTk5MWYxN2IwM2Q4M2U5MDVmN2QzZTA2MDdiZjUyYTk5YjgwZTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBi
b29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1EYXRhJiBmb3JtRGF0YSwg
Ym9vbCBtdWx0aXBhcnQpIGNvbnN0CiAgICAgLy8gSWYgbm8gZmlsZW5hbWUgYXQgYWxsIGlzIGVu
dGVyZWQsIHJldHVybiBzdWNjZXNzZnVsIGJ1dCBlbXB0eS4KICAgICAvLyBOdWxsIHdvdWxkIGJl
IG1vcmUgbG9naWNhbCwgYnV0IE5ldHNjYXBlIHBvc3RzIGFuIGVtcHR5IGZpbGUuIEFyZ2guCiAg
ICAgaWYgKGZpbGVMaXN0LT5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5h
bWUsIEZpbGU6OmNyZWF0ZShlbXB0eVN0cmluZygpKSk7CisgICAgICAgIGZvcm1EYXRhLmFwcGVu
ZChuYW1lLCBGaWxlOjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBl
bXB0eVN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNDE0LDcg
KzQxNCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZp
bGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QKIAogICAgIGF1dG8gc2hvdWxkUmVzb2x2
ZURpcmVjdG9yaWVzID0gYWxsb3dzRGlyZWN0b3JpZXMoKSA/IEZpbGVMaXN0Q3JlYXRvcjo6U2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpZZXMgOiBGaWxlTGlzdENyZWF0b3I6OlNob3VsZFJlc29s
dmVEaXJlY3Rvcmllczo6Tm87CiAgICAgYXV0byBzaG91bGRSZXF1ZXN0SWNvbiA9IGljb24gPyBS
ZXF1ZXN0SWNvbjo6WWVzIDogUmVxdWVzdEljb246Ok5vOwotICAgIG1fZmlsZUxpc3RDcmVhdG9y
ID0gRmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUocGF0aHMsIHNob3VsZFJlc29sdmVEaXJlY3Rvcmll
cywgW3RoaXMsIHNob3VsZFJlcXVlc3RJY29uXShSZWY8RmlsZUxpc3Q+JiYgZmlsZUxpc3QpIHsK
KyAgICBtX2ZpbGVMaXN0Q3JlYXRvciA9IEZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKGVsZW1lbnQo
KS0+ZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgcGF0aHMsIHNob3VsZFJlc29sdmVEaXJlY3Rvcmll
cywgW3RoaXMsIHNob3VsZFJlcXVlc3RJY29uXShSZWY8RmlsZUxpc3Q+JiYgZmlsZUxpc3QpIHsK
ICAgICAgICAgc2V0RmlsZXMoV1RGTW92ZShmaWxlTGlzdCksIHNob3VsZFJlcXVlc3RJY29uKTsK
ICAgICAgICAgbV9maWxlTGlzdENyZWF0b3IgPSBudWxscHRyOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IDE1NTZmYzI5OWNiMjM3M2IwYzU5ODk1
MjBhNzJjMzExNmNlMzllYTUuLmM3NTYwNTY3N2RkYTQ2M2YzYWEwNjkwODQ2NjAyZmZlMmU5YzU3
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgRmlsZUxpc3RDcmVhdG9yOjp+RmlsZUxpc3RDcmVhdG9yKCkKICAgICBBU1NFUlQoIW1f
Y29tcGxldGlvbkhhbmRlcik7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVz
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgVmVj
dG9yPFJlZjxGaWxlPj4mIGZpbGVPYmplY3RzKQorc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5
RmlsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwg
Y29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3RvcjxSZWY8RmlsZT4+JiBmaWxlT2JqZWN0
cykKIHsKICAgICBmb3IgKGF1dG8mIGNoaWxkUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkoZGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVt
OjpmaWxlTWV0YWRhdGEoY2hpbGRQYXRoKTsKQEAgLTUxLDIyICs1MSwyMiBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3Ry
aW5nJiByZWxhdGl2ZQogCiAgICAgICAgIFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0
aXZlUGF0aCArICIvIiArIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpOwog
ICAgICAgICBpZiAobWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6
RGlyZWN0b3J5KQotICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY2hpbGRQYXRoLCBj
aGlsZFJlbGF0aXZlUGF0aCwgZmlsZU9iamVjdHMpOworICAgICAgICAgICAgYXBwZW5kRGlyZWN0
b3J5RmlsZXMoc2Vzc2lvbklELCBjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoLCBmaWxlT2Jq
ZWN0cyk7CiAgICAgICAgIGVsc2UgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0
YWRhdGE6OlR5cGU6OkZpbGUpCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6
Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoKSk7Cisg
ICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0
aChzZXNzaW9uSUQsIGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgpKTsKICAgICB9CiB9CiAK
LUZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3Nl
ckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZl
RGlyZWN0b3JpZXMsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCitGaWxl
TGlzdENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJl
Y3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHNob3VsZFJlc29sdmVEaXJlY3RvcmllcyA9PSBT
aG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Ok5vKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
cmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Ok5vPihwYXRocykpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXM6Ok5vPihzZXNzaW9uSUQsIHBhdGhzKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFJl
c29sdmUgZGlyZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB0byBhdm9pZCBibG9ja2lu
ZyB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIG1fY29tcGxldGlvbkhhbmRlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBtX3dvcmtRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3Jl
YXRlKCJGaWxlTGlzdENyZWF0b3IgV29yayBRdWV1ZSIpOwotICAgICAgICBtX3dvcmtRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGF0aHMgPSBj
cm9zc1RocmVhZENvcHkocGF0aHMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byBmaWxl
TGlzdCA9IGNyZWF0ZUZpbGVMaXN0PFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6WWVzPihwYXRo
cyk7CisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZUxpc3QgPSBjcmVhdGVGaWxlTGlz
dDxTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Olllcz4oc2Vzc2lvbklELCBwYXRocyk7CiAgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZmlsZUxpc3QgPSBXVEZNb3ZlKGZpbGVMaXN0KV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGVyID0gV1RGTW92ZShtX2Nv
bXBsZXRpb25IYW5kZXIpKQogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGVyKFdU
Rk1vdmUoZmlsZUxpc3QpKTsKQEAgLTc2LDE0ICs3NiwxNCBAQCBGaWxlTGlzdENyZWF0b3I6OkZp
bGVMaXN0Q3JlYXRvcihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBT
aG91bAogfQogCiB0ZW1wbGF0ZTxGaWxlTGlzdENyZWF0b3I6OlNob3VsZFJlc29sdmVEaXJlY3Rv
cmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM+Ci1SZWY8RmlsZUxpc3Q+IEZpbGVMaXN0Q3Jl
YXRvcjo6Y3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBw
YXRocykKK1JlZjxGaWxlTGlzdD4gRmlsZUxpc3RDcmVhdG9yOjpjcmVhdGVGaWxlTGlzdChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYg
cGF0aHMpCiB7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZU9iamVjdHM7CiAgICAgZm9yIChh
dXRvJiBpbmZvIDogcGF0aHMpIHsKICAgICAgICAgaWYgKHNob3VsZFJlc29sdmVEaXJlY3Rvcmll
cyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBGaWxlU3lzdGVtOjpmaWxlSXNE
aXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
OjpObykpCi0gICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhpbmZvLnBhdGgsIEZpbGVT
eXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxlT2JqZWN0cyk7CisgICAgICAg
ICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhzZXNzaW9uSUQsIGluZm8ucGF0aCwgRmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhOYW1lKGlu
Zm8ucGF0aCwgaW5mby5kaXNwbGF5TmFtZSkpOworICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBw
ZW5kKEZpbGU6OmNyZWF0ZVdpdGhOYW1lKHNlc3Npb25JRCwgaW5mby5wYXRoLCBpbmZvLmRpc3Bs
YXlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmls
ZU9iamVjdHMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RD
cmVhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5oCmluZGV4IDMx
Yzc0Y2ZmMWRhMjQzNTI1MzQwMzNjODIzNDAxYzY2NmU1ZjdhOGQuLjg2Mzc1NDNhMDc3OTdjMDgy
OTc3N2UzZjk1NDBlMzQyYmY0NjdmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUxpc3RDcmVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0
b3IuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTM4LDEyICszOSwxMiBAQCBjbGFzcyBG
aWxlTGlzdDsKIAogY2xhc3MgRmlsZUxpc3RDcmVhdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEZpbGVMaXN0Q3JlYXRvcj4gewogcHVibGljOgotICAgIHVzaW5nIENvbXBsZXRpb25I
YW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxGaWxlTGlzdD4mJik+OworICAgIHVzaW5n
IENvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+JiYpPjsKIAog
ICAgIGVudW0gY2xhc3MgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHsgTm8sIFllcyB9OwotICAg
IHN0YXRpYyBSZWY8RmlsZUxpc3RDcmVhdG9yPiBjcmVhdGUoY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29s
dmVEaXJlY3RvcmllcywgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICBzdGF0aWMgUmVmPEZpbGVMaXN0Q3JlYXRvcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVz
b2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZpbGVMaXN0Q3JlYXRvcihwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
aWxlTGlzdENyZWF0b3Ioc2Vzc2lvbklELCBwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVz
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIH5GaWxlTGlzdENy
ZWF0b3IoKTsKQEAgLTUxLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWwoKTsK
IAogcHJpdmF0ZToKLSAgICBGaWxlTGlzdENyZWF0b3IoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2Vy
RmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFu
ZGxlciYmKTsKKyAgICBGaWxlTGlzdENyZWF0b3IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3Rvcmllcywg
Q29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB0ZW1wbGF0ZTxTaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzPgotICAgIHN0YXRpYyBSZWY8RmlsZUxpc3Q+
IGNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpOworICAg
IHN0YXRpYyBSZWY8RmlsZUxpc3Q+IGNyZWF0ZUZpbGVMaXN0KFBBTDo6U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mKTsKIAogICAgIFJlZlB0cjxXb3JrUXVldWU+
IG1fd29ya1F1ZXVlOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCBm
Y2ZhNzg0YTA1Y2Q1MDU1YjE4ZTM2ZGI1ODk4YmU3MGFkZjcyNjExLi4yNTBmYjc3NzQ1Mjg1ZDVk
NTc3NDg4MzZkOTZhOTZmZTUxNzcxMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNo
bWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSks
IG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50KCkuc2Vzc2lvbklEKCksIFdURk1vdmUoZGF0
YSksIG1pbWVUeXBlKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDM0YTkzMTA0ODA2OWUwNzMxYTk4
MTBkNGQyYWE1MGRjYjk3YTdjZDguLmE5YmI0ZmI4ZTA2M2U3MDE1ZjFhNjRlN2Q4NmZlYjM1OGZm
YzI3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC03
MzksNyArNzM5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZhc0VsZW1lbnQ6OnRvQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKICAgICAgICAgUmVmUHRyPEJs
b2I+IGJsb2I7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0YSA9IGRhdGEoKmltYWdl
RGF0YSwgZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgICAgIGlmICghYmxvYkRhdGEu
aXNFbXB0eSgpKQotICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JE
YXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CisgICAgICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRl
KGNvbnRleHQuc2Vzc2lvbklEKCksIFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGluZ01JTUVUeXBl
KTsKICAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgV1RGTW92ZShi
bG9iKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtNzUwLDcgKzc1MCw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojp0b0Jsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgUmVmCiAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJsb2JEYXRhID0gYnVmZmVyKCktPnRvRGF0YShlbmNvZGluZ01JTUVUeXBlLCBx
dWFsaXR5KTsKICAgICBpZiAoIWJsb2JEYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgYmxvYiA9IEJs
b2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CisgICAgICAg
IGJsb2IgPSBCbG9iOjpjcmVhdGUoY29udGV4dC5zZXNzaW9uSUQoKSwgV1RGTW92ZShibG9iRGF0
YSksIGVuY29kaW5nTUlNRVR5cGUpOwogICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNv
bnRleHQsIFdURk1vdmUoYmxvYikpOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYjk3YThkNWQ0ZDRlN2NlODY4ZWRiNTNhYzA1NTYwYmQz
ZTI5NjZkZS4uNDhjMDczNDc3MGViMTEwYzFjNWQ4NDUzZGQwODc5OTJlNTY0OWExZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzc3Miw3ICszNzcyLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQsIENoZWNrRHIKICAgICAvLyBUaGlzIGRvZXMgd29yayBvbmx5IGlmIHdlIG1pc3Nl
ZCBhIGRyYWdFbmQuIERvIGl0IGFueXdheSwganVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBkYXRh
VHJhbnNmZXIgZ2V0cyBudW1iZWQuCiAgICAgaW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwogCi0g
ICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFn
KCk7CisgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JEcmFnKCptX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJk
RGF0YSBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25EZWZhdWx0UGFzdGVib2Fy
ZERhdGE6Ok5vOwogICAgIAogICAgIGlmIChkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50
cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDA0NmQxMDUxYjk3MmJj
NzhkY2E3ZTVkMjJmMTc4MWVjYTQ1YzE4N2EuLmQyMWNlZDVlYjRlNzNmMTE3ODdhNWQ2ODg0OGVk
NTE1Zjg5YzFmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQyNTEs
NyArNDI1MSw3IEBAIFJlZlB0cjxGaWxlPiBJbnRlcm5hbHM6OmNyZWF0ZUZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIEZpbGU6OmNyZWF0ZSh1cmwuZmlsZVN5c3RlbVBhdGgoKSk7
CisgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShkb2N1bWVudC0+c2Vzc2lvbklEKCksIHVybC5maWxl
U3lzdGVtUGF0aCgpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKGludCB0
ZXN0TnVtYmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5jcHAKaW5kZXggNTU0NDU2MTVlMGUxZTgxZWNhMTRiODE2YzNlOGU0OTFiNzM3YjNm
NC4uNmUxYmNhM2E0N2ZkZGE2MWZkOWZkYWJmNzE4ZGE0NDJkOGJjNTM2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCkBAIC02OCwx
NCArNjgsMTQgQEAgUmVmPEZldGNoRXZlbnQ+IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0
ZUJlaW5nRGlzcGF0Y2hlZEZldGNoRXZlbnQoU2NyaXB0RXgKIAogUmVmPEZldGNoUmVzcG9uc2U+
IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZU9wYXF1ZVdpdGhCbG9iQm9keVJlc3BvbnNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBibG9iID0gQmxv
Yjo6Y3JlYXRlKCk7CisgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKGNvbnRleHQuc2Vzc2lv
bklEKCkpOwogICAgIGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgZm9y
bURhdGEtPmFwcGVuZEJsb2IoYmxvYi0+dXJsKCkpOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKICAgICByZXNwb25zZS5zZXRUeXBlKFJlc291cmNlUmVzcG9uc2U6OlR5cGU6OkNv
cnMpOwogICAgIHJlc3BvbnNlLnNldFRhaW50aW5nKFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5n
OjpPcGFxdWUpOwotICAgIGF1dG8gZmV0Y2hSZXNwb25zZSA9IEZldGNoUmVzcG9uc2U6OmNyZWF0
ZShjb250ZXh0LCBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShmb3JtRGF0YSksIEZldGNoSGVhZGVy
czo6R3VhcmQ6OlJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAgYXV0byBmZXRjaFJl
c3BvbnNlID0gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIEZldGNoQm9keTo6ZnJvbUZv
cm1EYXRhKGNvbnRleHQuc2Vzc2lvbklEKCksIGZvcm1EYXRhKSwgRmV0Y2hIZWFkZXJzOjpHdWFy
ZDo6UmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2UpKTsKICAgICBmZXRjaFJlc3BvbnNlLT5pbml0
aWFsaXplT3BhcXVlTG9hZElkZW50aWZpZXJGb3JUZXN0aW5nKCk7CiAgICAgcmV0dXJuIGZldGNo
UmVzcG9uc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0NDk2OWFmMDZmNGY4
YzFlNzdhNWMxZWJhOWZkNGIwMjIzYTA2N2EyLi40ODA1MTA3YjFiNTQyOTNmYjI1OWNmMmNmZjky
ZTc3ZTc5YjhmYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTE0OSw3ICsxNDks
OCBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogICAgIGF1dG8qIGZvcm1EYXRhID0gcmVxdWVz
dC5odHRwQm9keSgpOwogICAgIE9wdGlvbmFsPEZldGNoQm9keT4gYm9keTsKICAgICBpZiAoZm9y
bURhdGEgJiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgYm9keSA9IEZldGNoQm9k
eTo6ZnJvbUZvcm1EYXRhKCpmb3JtRGF0YSk7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQgPSBnbG9iYWxTY29wZTsKKyAgICAgICAgYm9keSA9IEZldGNoQm9keTo6ZnJv
bUZvcm1EYXRhKGNvbnRleHQuc2Vzc2lvbklEKCksICpmb3JtRGF0YSk7CiAgICAgICAgIGlmICgh
Ym9keSkgewogICAgICAgICAgICAgY2xpZW50LT5kaWROb3RIYW5kbGUoKTsKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDA0MjgwMzM3
ZjE4MWM2MDQ0MGE5MDU5YmMwYTI1ZDg1Y2UzZjA2ZGMuLmYwMTkzZDhjOTZlMzVjOWZmNzVlNmE2
M2EzNTBjNjU1ZGNhODYwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMjEyLDcgKzIxMiw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VCbG9iKCkKICAgICAgICAgZGF0YS5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmRh
dGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSk7CiAgICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPSBudWxscHRyOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUg
PSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVz
cG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0
LgotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRl
bnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2Vzc2lvbklEKCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9
CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJy
YXlCdWZmZXIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375913</attachid>
            <date>2019-08-09 06:36:36 -0700</date>
            <delta_ts>2019-08-10 14:47:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200572-20190809153634.patch</filename>
            <type>text/plain</type>
            <size>74058</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyNmE1ODU2NjcyNzc2
NGRjNTcxMzY0YjY5YjdhYzQ3NzQ4NGI2Mi4uMjlmM2NjZWJjNDE0ZTk1ZGUzMzRlMGE0NjA0MDZh
MDk4NjAyZDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOS0wOC0wOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBzaG91bGQgc3Rv
cmUgaXRzIHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMDU3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJsb2IgYXQgY3JlYXRpb24gdGltZSBub3cgaW5pdGlhbGl6ZXMgaXRzIHNlc3Np
b24gSUQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBpbiB0aGUgZnV0dXJlIHRvIGNhbGwgYmxv
YiByZWdpc3RyeSByb3V0aW5lcyB3aXRoIGl0LgorICAgICAgICBVcGRhdGUgYWxsIGNhbGwgc2l0
ZXMgdG8gcHJvdmlkZSB0aGUgc2Vzc2lvbiBJRC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNo
YW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldEZpbGUpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVXaXRoVHlwZUFu
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93
bmVyOjpibG9iKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpjcmVhdGVSZWNvcmRpbmdE
YXRhQmxvYik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6
OnNlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnNlc3Npb25JRCBjb25zdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5z
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0
ZW1MaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
SW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRy
YWcpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3ApOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJn
ZXQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9yaWdpbklkZW50aWZpZXJGb3JQ
YXN0ZWJvYXJkIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIgY29u
c3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJh
bnNmZXIgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1
dEV2ZW50RGF0YVRyYW5zZmVyIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFU
cmFuc2ZlciBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
OjpyZWFkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0
dGFjaG1lbnRGb3JGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0
YSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVz
dG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQpOgorICAgICAgICAqIGZpbGVhcGkvQmxv
Yi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBmaWxlYXBp
L0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGljZSBj
b25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0Zp
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUu
aDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaWRsOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6
CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kRGlyZWN0b3J5RmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9y
OjpGaWxlTGlzdENyZWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9yOjpj
cmVhdGVGaWxlTGlzdCk6CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OnRvQmxvYik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNyZWF0ZUZpbGUpOgor
ICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGVPcGFxdWVXaXRoQmxvYkJvZHlS
ZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0
Y2hGZXRjaEV2ZW50KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisKIDIwMTkt
MDgtMDkgIFbDrWN0b3IgTWFudWVsIErDoXF1ZXogTGVhbCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR0xdW0dTdHJlYW1lcl0gYWN0aXZhdGUgd3JhcHBlZCBzaGFyZWQgY29udGV4
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCmluZGV4IDRiZDJlMDAzOWMxZDk5M2JmNmY2OGUzOTQxZWUyOTY1YWUxNzliMjYuLjlm
NGExMGI3MTFiZjM2M2YwYThhMjM0YzllMzI3MWY1MmVlNzZmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTM0Myw3
ICszNDMsNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUZpbGVFbnRyeQogICAgICAgICAgICAgaWYgKHZhbGlk
YXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpj
cmVhdGUoZnVsbFBhdGgpKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRmls
ZTo6Y3JlYXRlKGNvbnRleHQtPnNlc3Npb25JRCgpLCBmdWxsUGF0aCkpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApp
bmRleCBlNmM5MDYyNzc4YTk4OWI1NzU0OWE1NDg5ZjZhYmZlNDg3Y2UzODk5Li44ZWNhMTNiMWM4
ZjliZWQ0ZDE1YWRjOTVkN2U4ZDk2MGEwNzEwMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIEV4Y2VwdGlvbk9yPEZldGNo
Qm9keT4gRmV0Y2hCb2R5OjpleHRyYWN0KEluaXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250ZW50VHlw
ZSkKICAgICB9KTsKIH0KIAotT3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3Jt
RGF0YShGb3JtRGF0YSYgZm9ybURhdGEpCitPcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6
ZnJvbUZvcm1EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRm9ybURhdGEmIGZvcm1EYXRh
KQogewogICAgIEFTU0VSVCghZm9ybURhdGEuaXNFbXB0eSgpKTsKIApAQCAtODgsNyArODgsNyBA
QCBPcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKEZvcm1EYXRhJiBm
b3JtRGF0YSkKICAgICBhdXRvIHVybCA9IGZvcm1EYXRhLmFzQmxvYlVSTCgpOwogICAgIGlmICgh
dXJsLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQcm9wZXJseSBzZXQgbWltZSB0eXBl
IGFuZCBzaXplIG9mIHRoZSBibG9iLgotICAgICAgICBSZWY8Y29uc3QgQmxvYj4gYmxvYiA9IEJs
b2I6OmRlc2VyaWFsaXplKHVybCwgeyB9LCAwLCB7IH0pOworICAgICAgICBSZWY8Y29uc3QgQmxv
Yj4gYmxvYiA9IEJsb2I6OmRlc2VyaWFsaXplKHNlc3Npb25JRCwgdXJsLCB7IH0sIDAsIHsgfSk7
CiAgICAgICAgIHJldHVybiBGZXRjaEJvZHkgeyBXVEZNb3ZlKGJsb2IpIH07CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBjM2Y5NmZmNGFmZmYy
MGQxMTM2NDQzM2ExZjJhY2Y2YWQxZDlmYjczLi5iMjdlMGE1MTg3YWU4YmY4NGJkNzkxN2M3ZTcx
MDU4ZTExYjk4NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxGZXRjaEJv
ZHk+IGV4dHJhY3QoSW5pdCYmLCBTdHJpbmcmKTsKICAgICBGZXRjaEJvZHkoKSA9IGRlZmF1bHQ7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8RmV0Y2hCb2R5PiBmcm9tRm9y
bURhdGEoRm9ybURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8RmV0
Y2hCb2R5PiBmcm9tRm9ybURhdGEoUEFMOjpTZXNzaW9uSUQsIEZvcm1EYXRhJik7CiAKICAgICB2
b2lkIGxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJik7CiAgICAgdm9pZCBsb2FkaW5nU3Vj
Y2VlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCmluZGV4IDMwMmRmZjYwYWRhZmVmZjc2MzFkZmI4OTY0OGI2MTY4MThjYjlj
YjYuLjdmMDVlN2FjMTlhMDU4ODlkOTY4ZmU2ZTE0OGM1N2Q5ZWZjN2FmYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0z
NSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIFJl
ZjxCbG9iPiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3RhdGljIGlubGluZSBSZWY8Qmxv
Yj4gYmxvYkZyb21EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShsZW5ndGgpOwogICAgIG1lbWNweSh2YWx1ZS5k
YXRhKCksIGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZh
bHVlKSwgY29udGVudFR5cGUpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Vzc2lvbklELCBX
VEZNb3ZlKHZhbHVlKSwgY29udGVudFR5cGUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hv
dWxkUHJlcGVuZEJPTShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAgICAgICAgIGZ1bGZp
bGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIGRhdGEsIGxlbmd0aCk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpCbG9i
OgotICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8
QmxvYj4+KGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKS5nZXQoKSk7Cisg
ICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9i
Pj4oYmxvYkZyb21EYXRhKHByb21pc2UtPnNlc3Npb25JRCgpLCBkYXRhLCBsZW5ndGgsIGNvbnRl
bnRUeXBlKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlOjpKU09OOgogICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhKU09OKFdURk1vdmUo
cHJvbWlzZSksIHRleHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsKQEAgLTEzMCw3ICsxMzAsNyBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qCiAgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5
QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIHRha2VBc0FycmF5QnVmZmVyKCkuZ2V0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBUeXBlOjpCbG9iOgotICAgICAgICBwcm9taXNlLT5yZXNv
bHZlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8QmxvYj4+KHRha2VBc0Jsb2IoKS5nZXQo
KSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFj
ZTxCbG9iPj4odGFrZUFzQmxvYihwcm9taXNlLT5zZXNzaW9uSUQoKSkuZ2V0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBUeXBlOjpKU09OOgogICAgICAgICBmdWxmaWxsUHJvbWlzZVdp
dGhKU09OKFdURk1vdmUocHJvbWlzZSksIHRha2VBc1RleHQoKSk7CkBAIC0xNzcsMTMgKzE3Nywx
MyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLVJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYigpCitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0Jsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGlmICghbV9idWZm
ZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+KCksIG1fY29u
dGVudFR5cGUpOworICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNlc3Npb25JRCwgVmVjdG9y
PHVpbnQ4X3Q+KCksIG1fY29udGVudFR5cGUpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0
cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAg
ICByZXR1cm4gYmxvYkZyb21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsK
KyAgICByZXR1cm4gYmxvYkZyb21EYXRhKHNlc3Npb25JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1f
Y29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CmluZGV4IDFhY2ZlMDA5M2U1MDg1ZjkzNzU5YzUwNTdhN2JmYmRlNWUwZmI5MDcuLmRhYWNmMjY2
Y2VmNzIzODkzMjM1NTcwODBjZjczOWZkNTAzYmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVi
bGljOgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKLSAgICBSZWY8QmxvYj4gdGFr
ZUFzQmxvYigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKICAgICB2b2lkIHNldENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRl
bnRUeXBlOyB9CkBAIC03NSw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFzTG9hZGlu
ZygpIHsgbV9pc0xvYWRpbmcgPSB0cnVlOyB9CiAKIHByaXZhdGU6CisgICAgUmVmPEJsb2I+IHRh
a2VBc0Jsb2IoUEFMOjpTZXNzaW9uSUQpOworCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5n
IG1fY29udGVudFR5cGU7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IDcz
YjUyOTYyOWNlYjUwYzc1ODFmYTI1ZGMyNzFiMGM2ZmJhN2RmYjAuLmFkZGM1NDg5NmI4YTQ0Mzhj
ZmJmZDA2NTgwYWRiYzg2MGE4MWY4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBGZXRjaEJv
ZHlPd25lcjo6YmxvYihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAg
ICAgaWYgKGlzQm9keU51bGxPck9wYXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMSW50ZXJmYWNlPEJsb2I+PihCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxv
Yjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9j
b250ZW50VHlwZSkpKSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJs
b2I+PihCbG9iOjpjcmVhdGUocHJvbWlzZS0+c2Vzc2lvbklEKCksIFZlY3Rvcjx1aW50OF90PiB7
IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fY29udGVudFR5cGUpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChp
c0Rpc3R1cmJlZE9yTG9ja2VkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCBkNWFmZDQ0NTk3MWE4NDUw
YWIzODVhNTAwMjBlYjZlMjE5NjEyOTJmLi4yNDQ3ODI1ZDQ4YmNiYzQyZWJlMjI1MzgzMGU3YzA4
YjgwY2JkYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xNTcsOCArMTU3LDggQEAgUmVmPEJsb2I+IE1l
ZGlhUmVjb3JkZXI6OmNyZWF0ZVJlY29yZGluZ0RhdGFCbG9iKCkKIHsKICAgICBhdXRvIGRhdGEg
PSBtX3ByaXZhdGUtPmZldGNoRGF0YSgpOwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJu
IEJsb2I6OmNyZWF0ZSgpOwotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoKmRhdGEsIG1fcHJpdmF0
ZS0+bWltZVR5cGUoKSk7CisgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCAqZGF0YSwgbV9wcml2YXRlLT5taW1l
VHlwZSgpKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyOjpkaWRBZGRPclJlbW92ZVRyYWNrKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAKaW5kZXggNzU0ZTQ2OGM5MjE1NmU5NzNiY2RmYjQ2MWFjNTNmNmRkNTU1NWQ2Ny4u
YWMzMjE5YTA2NmNlZjY1M2JhMWVkYmQyODI1M2ZiYWZkODYzN2UxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAg
LTIwMiw3ICsyMDIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIAogICAgIHN3aXRjaCAobV9iaW5h
cnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CisgICAg
ICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAgIHNjaGVk
dWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGRhdGFMZW5ndGgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGYxMzc5MWM2MjBhN2E2MDY3ZjRjM2RhYjVmZDQzYjM4
YTc3ZDNmZTIuLmQ3NGU2ZDkxOTAyM2JmYjA5NzQwOGE0ODc2ZTc2NGYzMDU4ZDc0MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC01
ODQsNyArNTg0LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rv
cjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKICAg
ICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2Vp
dmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNr
LiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJpbmFyeURhdGEpLCBlbXB0eVN0cmluZygp
KSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKKyAgICAgICAg
ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgV1RGTW92ZShiaW5hcnlEYXRhKSwgZW1wdHlT
dHJpbmcoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAg
IGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShi
aW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5RGF0YS5zaXplKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggOWVjNGNhZjFjYTE2Y2JmY2VmOTFhMTUyZDE0Y2VmZDI2YmJjZTll
Yy4uOTk0MDczZWFhNWU4YjIzMGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00NjUsNyArNDY1LDcgQEAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZToKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKIAotICAgICAgICBwZWVy
LT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKHVybCwgdHlwZSwgc2l6ZSwgeyB9KSk7CisgICAgICAg
IHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY29udGV4dC5zZXNzaW9uSUQoKSwgdXJsLCB0
eXBlLCBzaXplLCB7IH0pKTsKICAgICB9KTsKIAogICAgIFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZURlZmVycmVkLmgKaW5kZXggYjRhYWI3OGY0N2E2OTAwMzBmZTVkYWI1Yjc4NzY3ODdlNTYyYmI3
MS4uMzY4MTgyMDIxZDc2NzE1YTE4NmI1ZDU5ZDRjNTMzNWJhMjJjZDUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCkBAIC0yOCw4
ICsyOCwxMCBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252
ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VEZWZlcnJlZC5oPgorI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzYsNiAr
MTM4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aGVuU2V0dGxlZChzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVy
biBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKTsg
fQorCiBwcml2YXRlOgogICAgIERlZmVycmVkUHJvbWlzZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJiBkZWZlcnJlZCwgTW9kZSBtb2RlKQog
ICAgICAgICA6IERPTUd1YXJkZWQ8SlNDOjpKU1Byb21pc2VEZWZlcnJlZD4oZ2xvYmFsT2JqZWN0
LCBkZWZlcnJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDk2NWVjZTM5NGI5ODMyNjA0YTM0M2JiMjg2M2IxNGJl
NzRmYjg3YjQuLjc3NTNkOGEyZjMzNDg3YjE5NzI3MzhlZGIyYzcwMTI0Mjc0ZWEwZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjA5NSw3ICsyMDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpbGVQYXRo
ID0gcGF0aC0+c3RyaW5nKCk7CiAKICAgICAgICAgaWYgKG1faXNET01HbG9iYWxPYmplY3QpCi0g
ICAgICAgICAgICBmaWxlID0gRmlsZTo6ZGVzZXJpYWxpemUoZmlsZVBhdGgsIFVSTChVUkwoKSwg
dXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxM
YXN0TW9kaWZpZWQpOworICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXNzaW9uSUQoKSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSks
IHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI4NjEsNyArMjg2MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmICgh
bV9pc0RPTUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6ZShVUkwoVVJMKCks
IHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxv
YlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFs
dWUoQmxvYjo6ZGVzZXJpYWxpemUoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxP
YmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCBVUkwoVVJMKCks
IHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxv
YlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU3Ry
aW5nVGFnOiB7CiAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgY2FjaGVkU3RyaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCA5YWFkYjBmODZkOGY4ZGFhZjdjYTc2YTIz
NWYzNzczZmQ4OWQ2ZTQwLi5jYjc1MjMyODBjN2IzMjVjNjZjZGU2NDZjMTViZjVhOTEzMTc0NWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNjgsOCArNjgsOSBAQCBwcml2
YXRlOgogCiAjZW5kaWYKIAotRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoU3RvcmVNb2RlIG1v
ZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkLCBUeXBlIHR5cGUpCi0g
ICAgOiBtX3N0b3JlTW9kZShtb2RlKQorRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBTdG9yZU1vZGUgbW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IHBhc3RlYm9hcmQsIFR5cGUgdHlwZSkKKyAgICA6IG1fc2Vzc2lvbklEKGRvY3VtZW50
LnNlc3Npb25JRCgpKQorICAgICwgbV9zdG9yZU1vZGUobW9kZSkKICAgICAsIG1fcGFzdGVib2Fy
ZChXVEZNb3ZlKHBhc3RlYm9hcmQpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgLCBt
X3R5cGUodHlwZSkKQEAgLTgzLDkgKzg0LDkgQEAgRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIo
U3RvcmVNb2RlIG1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXIKICNl
bmRpZgogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0b3JlTW9kZSBzdG9yZU1vZGUsIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IFN0b3JlTW9kZSBzdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3Rl
Ym9hcmQpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFu
c2ZlcihzdG9yZU1vZGUsIFdURk1vdmUocGFzdGVib2FyZCkpKTsKKyAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBzdG9yZU1vZGUsIFdU
Rk1vdmUocGFzdGVib2FyZCkpKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmll
ciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJu
IGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTM0OCw3ICszNDksNyBAQCBWZWN0b3I8UmVmPEZpbGU+PiBE
YXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgpIGNvbnN0CiAgICAg
Ym9vbCBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsKICAgICBWZWN0b3I8UmVmPEZp
bGU+PiBmaWxlczsKICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURyYWcoKSkgJiYgbV9w
YXN0ZWJvYXJkLT5maWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRT
dGF0ZTo6Tm9GaWxlT3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyIHJlYWRlcjsKKyAgICAgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRl
ciB7IG1fc2Vzc2lvbklEIH07CiAgICAgICAgIG1fcGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOwog
ICAgICAgICBmaWxlcyA9IFdURk1vdmUocmVhZGVyLmZpbGVzKTsKICAgICAgICAgYWRkZWRGaWxl
c0Zyb21QYXN0ZWJvYXJkID0gIWZpbGVzLmlzRW1wdHkoKTsKQEAgLTQxMywxMiArNDE0LDEyIEBA
IGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIHJldHVybiAhdHlwZS5pc051bGwoKSAmJiB0eXBlcygpLmNvbnRhaW5zKHR5cGUpOwogfQog
Ci1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29u
c3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCitSZWY8RGF0YVRy
YW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4
dCkKIHsKICAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBs
YWluVGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRt
bFRleHQpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6
OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9CiAKIHZv
aWQgRGF0YVRyYW5zZmVyOjpjb21taXRUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgbmF0aXZlUGFz
dGVib2FyZCkKQEAgLTQ2MywyOSArNDY0LDI5IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFn
SW1hZ2UoRWxlbWVudCosIGludCwgaW50KQogCiAjZWxzZQogCi1SZWY8RGF0YVRyYW5zZmVyPiBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkV3JpdGUsIFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2Rl
OjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIFR5cGU6OkRy
YWdBbmREcm9wRGF0YSkpOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyYWdTdGFydEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCkKK1JlZjxEYXRhVHJhbnNm
ZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRh
VHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFz
dGVib2FyZD4oKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CisgICAgYXV0byBkYXRhVHJhbnNm
ZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFk
V3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJhZ0Fu
ZERyb3BEYXRhKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5tX29yaWdpbklkZW50aWZpZXIgPSBkb2N1
bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOwogICAgIHJldHVybiBkYXRhVHJh
bnNmZXI7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJv
cChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3Rl
Ym9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMp
CitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJk
LCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewot
ICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRy
YW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2lu
Z0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkp
OworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9j
dW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJv
YXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFn
QW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3Vy
Y2VPcGVyYXRpb24pOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9j
dW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRy
YW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29s
IGRyYWdnaW5nRmlsZXMpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
clVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0
aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9w
dFJlZigqbmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVk
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BG
aWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0g
YWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVN
b2RlOjpQcm90ZWN0ZWQsIFdURk1vdmUocGFzdGVib2FyZCksIGRyYWdnaW5nRmlsZXMgPyBUeXBl
OjpEcmFnQW5kRHJvcEZpbGVzIDogVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiAgICAgZGF0YVRy
YW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oc291cmNlT3BlcmF0aW9uKTsKICAgICBkYXRhVHJh
bnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQ
YXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaAppbmRleCAwMGU5ZWY0NjEyMmYxYWJmODVjNzhkYTBhZmFiMTJmODJhOTdlNDI3Li42
YWVjYWM4ZmY0OTQyNTQ1NWNkZjdiYTM3YmJkMTdlNjgyZjdkZDFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdJbWFnZS5o
IgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsOCArNDcsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG5kLmh0bWwjZHJh
Zy1kYXRhLXN0b3JlLW1vZGUKICAgICBlbnVtIGNsYXNzIFN0b3JlTW9kZSB7IEludmFsaWQsIFJl
YWRXcml0ZSwgUmVhZG9ubHksIFByb3RlY3RlZCB9OwogCi0gICAgc3RhdGljIFJlZjxEYXRhVHJh
bnNmZXI+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShEb2N1bWVudCYsIFN0b3JlTW9kZSwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBj
cmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcm
IGh0bWxUZXh0KTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yQ29weUFu
ZFBhc3RlKGNvbnN0IERvY3VtZW50JiwgU3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvcklucHV0RXZl
bnQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5n
JiBodG1sVGV4dCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+RGF0YVRyYW5zZmVyKCk7CiAKQEAg
LTg2LDEwICs4NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRUb1Bhc3RlYm9hcmQoUGFz
dGVib2FyZCYpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBzdGF0aWMgUmVmPERh
dGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZygpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChEb2N1bWVudCYpOwotICAgIHN0YXRpYyBSZWY8RGF0
YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGlj
IFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChEb2N1bWVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdn
aW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKGNv
bnN0IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRy
YWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNm
ZXI+IGNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMg
UmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3Vt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wg
ZHJhZ2dpbmdGaWxlcyk7CiAKICAgICBib29sIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSBj
b25zdCB7IHJldHVybiBtX2Ryb3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiOyB9CiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsg
Q29weUFuZFBhc3RlLCBEcmFnQW5kRHJvcERhdGEsIERyYWdBbmREcm9wRmlsZXMsIElucHV0RXZl
bnQgfTsKLSAgICBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4sIFR5cGUgPSBUeXBlOjpDb3B5QW5kUGFzdGUpOworICAgIERhdGFUcmFuc2Zlcihjb25z
dCBEb2N1bWVudCYsIFN0b3JlTW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBl
ID0gVHlwZTo6Q29weUFuZFBhc3RlKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
Ym9vbCBmb3JEcmFnKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkRyYWdBbmREcm9w
RGF0YSB8fCBtX3R5cGUgPT0gVHlwZTo6RHJhZ0FuZERyb3BGaWxlczsgfQpAQCAtMTI5LDYgKzEz
MCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoQWRkRmlsZXNUeXBlKSBj
b25zdDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxp
c3QoKSBjb25zdDsKIAorICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFN0cmlu
ZyBtX29yaWdpbklkZW50aWZpZXI7CiAgICAgU3RvcmVNb2RlIG1fc3RvcmVNb2RlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBlZDhkOTM0Mjk5MDYyMTRkYWQyOGJmOTY2YzZmZGNiZDQ1MjMzZjg3Li5iZTlk
MmI2MmI5ZTMzYjUxYTc4OTA4NzI0YmMwMjY1Zjc3YTc3MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTU3MzIsNyArNTczMiw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzVGVsZXBob25lTnVt
YmVyUGFyc2luZ0FsbG93ZWQoKSBjb25zdAogCiAjZW5kaWYKIAotU3RyaW5nIERvY3VtZW50Ojpv
cmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpCitTdHJpbmcgRG9jdW1lbnQ6Om9yaWdpbklk
ZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCkgY29uc3QKIHsKICAgICBhdXRvIG9yaWdpbiA9IHNlY3Vy
aXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKICAgICBpZiAob3JpZ2luICE9ICJudWxsIikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggMzQ5MTNjNTdjYmY1YzE4YzIyYTIxZGNkNzYyN2VkY2MwZTc0ZTA1
MC4uZjk3ZGJlNzUxYmQ1MDQzNjI3M2MwNzhmNzBlZWExNWI2NWM3NjJhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluY0RPTVRy
ZWVWZXJzaW9uKCkgeyBtX2RvbVRyZWVWZXJzaW9uID0gKytzX2dsb2JhbFRyZWVWZXJzaW9uOyB9
CiAgICAgdWludDY0X3QgZG9tVHJlZVZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2RvbVRyZWVW
ZXJzaW9uOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllckZv
clBhc3RlYm9hcmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3JpZ2luSWRlbnRpZmll
ckZvclBhc3RlYm9hcmQoKSBjb25zdDsKIAogICAgIC8vIFhQYXRoRXZhbHVhdG9yIG1ldGhvZHMK
ICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8WFBhdGhFeHByZXNzaW9uPj4gY3Jl
YXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxYUGF0aE5TUmVz
b2x2ZXI+JiYpOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBt
X2RvbVRyZWVWZXJzaW9uOwogICAgIHN0YXRpYyB1aW50NjRfdCBzX2dsb2JhbFRyZWVWZXJzaW9u
OwogCi0gICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKKyAgICBtdXRhYmxlIFN0cmluZyBt
X3VuaXF1ZUlkZW50aWZpZXI7CiAKICAgICBIYXNoU2V0PE5vZGVJdGVyYXRvcio+IG1fbm9kZUl0
ZXJhdG9yczsKICAgICBIYXNoU2V0PFJhbmdlKj4gbV9yYW5nZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKaW5kZXgg
MDQxZjlkMTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAwZi4uNTJiNjlhNTcyYTY1Njkw
ODdjOTNhMmExOGNkMzI1MDIyOWY2YWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcApAQCAtODIsNyArODIsNyBA
QCBTdHJpbmcgUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNv
bnN0CiBSZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6Omlu
cHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogewogICAgIGlmICghaXNFZGl0aW5nVGV4dEFy
ZWFPclRleHRJbnB1dCgpKQotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJ
bnB1dEV2ZW50KG1fdGV4dCwgc2VyaWFsaXplRnJhZ21lbnQoKm1fdGV4dEZyYWdtZW50LCBTZXJp
YWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKSk7CisgICAgICAgIHJldHVybiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoZG9jdW1lbnQoKSwgbV90ZXh0LCBzZXJpYWxp
emVGcmFnbWVudCgqbV90ZXh0RnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1
ZGluZ05vZGUpKTsKIAogICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVu
dERhdGFUcmFuc2ZlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBlODBkZWMwNWY1MDQxMGZlYTBlZjVkOTUxZDdi
MDRmMzMzYTIxMjFjLi4wZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1ZjU0Nzk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtMTMyNiw3ICsxMzI2LDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogICAgIGlmIChp
c0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCiAgICAgICAgIHJldHVybiBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpOwogCi0gICAgcmV0dXJuIERhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChtX2RvY3VtZW50RnJhZ21lbnRQbGFpblRleHQs
IG1fZG9jdW1lbnRGcmFnbWVudEhUTUxNYXJrdXApOworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvcklucHV0RXZlbnQoZG9jdW1lbnQoKSwgbV9kb2N1bWVudEZyYWdtZW50UGxhaW5U
ZXh0LCBtX2RvY3VtZW50RnJhZ21lbnRIVE1MTWFya3VwKTsKIH0KIAogYm9vbCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6c2hvdWxkUmVtb3ZlRW5kQlIoTm9kZSogZW5kQlIsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgb3JpZ2luYWxWaXNQb3NCZWZvcmVFbmRCUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDdkYjNm
OWI0NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UuLjM3MThhYTQ5MWVkNjZhYjgzZmI4
MWQ3YjRiZjkzMDdkZGY0NWY1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFZlY3Rv
cjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRS
YW5nZXMoKSBjb25zdAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0VkaXRp
bmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCi0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvcklucHV0RXZlbnQobV9jb3JyZWN0aW9uLCBzZXJpYWxpemVGcmFnbWVudCgqbV9jb3Jy
ZWN0aW9uRnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpKTsK
KyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChkb2N1bWVu
dCgpLCBtX2NvcnJlY3Rpb24sIHNlcmlhbGl6ZUZyYWdtZW50KCptX2NvcnJlY3Rpb25GcmFnbWVu
dCwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSkpOwogCiAgICAgcmV0dXJu
IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAwMWY1M2RiYTAzYmVhYzc5
N2Q3NmFhOGFlNTY2ZDJmZDEyNWM4MjNkLi5mMzU4NzQzMjBiMTkwNTNlMTAwNmRiZTZlZjY2ZTc3
ZmYzMzFhY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAg
LTQyNSw3ICs0MjUsNyBAQCBSZWZQdHI8RGF0YVRyYW5zZmVyPiBUeXBpbmdDb21tYW5kOjppbnB1
dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbFRleHQ7
CiAgICAgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGll
cyhodG1sVGV4dCwgbV9jdXJyZW50VGV4dFRvSW5zZXJ0LCAwLCBtX2N1cnJlbnRUZXh0VG9JbnNl
cnQubGVuZ3RoKCksIEVudGl0eU1hc2tJbkhUTUxQQ0RBVEEpOwotICAgIHJldHVybiBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQobV9jdXJyZW50VGV4dFRvSW5zZXJ0LCBodG1sVGV4
dC50b1N0cmluZygpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2
ZW50KGRvY3VtZW50KCksIG1fY3VycmVudFRleHRUb0luc2VydCwgaHRtbFRleHQudG9TdHJpbmco
KSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cAppbmRleCBmNjhhMDBlZmFlN2E3YmI0OTU4OWQwZmZlMjczMWJiZTZlODQyYjBjLi42NGRlOTFk
M2U2YTg1NDhhNTM2ZGQ5YTk0MzFiY2U5MmY4NGVkZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zNSwx
MiArMzUsMTIgQEAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjp+V2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7Ci0gICAgZmlsZXMu
YXBwZW5kKEZpbGU6OmNyZWF0ZShmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpj
cmVhdGUoc2Vzc2lvbklELCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGZpbGVzLmFwcGVu
ZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSksIGZpbGVuYW1l
KSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2Vzc2lvbklE
LCBidWZmZXIuZ2V0KCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCBm
ZTQ0NzZiZmYyZmI0NjA1MDZhMzc5Yjk0N2UxNGVlMGE4ZjAxNjVhLi5mYWU5YjA1MWFjNDI0Y2Nl
YTMyY2VkNjljMTlmNWRjZWM4M2Y4OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTMyLDExICszMiwxNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWxlOwogCiBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgeworICAgIGV4cGxpY2l0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisg
ICAgICAgIDogc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICB7CisgICAgfQorCiAgICAgfldlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKKyAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tCmluZGV4IDcxNTljZDkyMzg1MTQyZTEyOTNmNTBmYWQ3ZWJjYTFlYzMz
NDU3MzQuLmExMzEzMDcxNGNkMzMwYTY2OGRkOGUwY2JmZDc2NzYzM2U4ODg4NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UKICAgICAgICAg
ZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5l
bnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1hZ2VBdHRhY2ht
ZW50TmFtZSwgV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0
YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29udGVudFR5cGUpKSB7CiAgICAgICAg
ICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAg
ICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNy
ZWF0ZShidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Np
b25JRCgpLCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAgaW1hZ2Ut
PnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICAgICAg
aWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJp
bmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHN0
YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1l
bnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQo
V1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBh
dHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgp
LCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25J
RCgpLCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5h
bWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMp
OwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAg
ICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgdm9p
ZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERh
dGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4ob3JpZ2lu
YWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJl
cHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYg
aW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkp
OwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9j
dW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKKyAg
ICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50
KCksIEJsb2I6OmNyZWF0ZShmcmFnbWVudC5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBpbmZvLmRh
dGEsIGluZm8uY29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNo
bWVudEVsZW1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+
c2l6ZSgpLCBpbmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM3Myw3ICszNzMs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5l
bnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1v
dmUoaW5mby5maWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoV1RGTW92ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92
ZShpbmZvLmZpbGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0
dHJpYnV0ZXM6Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNy
ZWF0ZShCbG9iOjpjcmVhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgV1RGTW92
ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZp
bGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6
Olllcyk7CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0dGFjaG1l
bnQpLCBXVEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDE1
LDcgKzQxNSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFk
ZFJlc291cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAKICAgICBIYXNoTWFwPEF0b21T
dHJpbmcsIEF0b21TdHJpbmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2
ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMp
IHsKLSAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCks
IHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3Jl
YXRlKGRvY3VtZW50LnNlc3Npb25JRCgpLCBzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJj
ZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVP
YmplY3RVUkwoZG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCksIGJsb2JVUkwpOwogICAgIH0KQEAgLTQ2NCw3ICs0NjQsNyBA
QCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBhdXRvJiBzdWJyZXNvdXJjZVVSTCA9
IHN1YnJlc291cmNlLT51cmwoKTsKICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3Vy
Y2VVUkwoc3VicmVzb3VyY2VVUkwpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1
dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+
bWltZVR5cGUoKSk7CisgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShkZXN0aW5hdGlv
bkRvY3VtZW50LnNlc3Npb25JRCgpLCBzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+
bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0
KHN1YnJlc291cmNlVVJMLnN0cmluZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00OTEsNyArNDkx
LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJs
b2JCdWZmZXI7CiAgICAgICAgIGJsb2JCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHV0ZjgubGVuZ3Ro
KCkpOwogICAgICAgICBibG9iQnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOwotICAgICAgICBhdXRvIGJsb2Ig
PSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CisgICAgICAgIGF1dG8g
YmxvYiA9IEJsb2I6OmNyZWF0ZShkZXN0aW5hdGlvbkRvY3VtZW50LnNlc3Npb25JRCgpLCBXVEZN
b3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJpbmcgc3ViZnJhbWVCbG9iVVJM
ID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7CiAg
ICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmluZygpLCBzdWJmcmFtZUJsb2JV
UkwpOwpAQCAtNjg4LDcgKzY4OCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgaWYg
KHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQogICAgICAgICBhZGRG
cmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChmcmFtZSwgZG9jdW1lbnQs
IFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogICAg
IGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChk
b2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZShi
dWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgICAg
ICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Np
b25JRCgpLCBidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkp
OwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpAQCAtNzA5LDcgKzcwOSw3IEBAIHN0YXRpYyBS
ZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0
IFN0cmluZyYgcGF0aCwKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUuZG9jdW1l
bnQoKSk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CiAgICAgaWYgKCFzdXBwb3J0
c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKLSAgICAgICAgYXR0YWNobWVudC0+
c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRl
RGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6Y3JlYXRlKGRvY3VtZW50LT5zZXNzaW9uSUQoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50OwogICAgIH0KIApAQCAtNzM2LDcgKzczNiw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC0+c2Vzc2lv
bklEKCksIHBhdGgpKSk7CiAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZN
b3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAg
ICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7
CkBAIC03NjUsNyArNzY1LDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZv
ckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KICAgICAgICAgZmls
ZU5hbWUgPSBuYW1lOwogCiAgICAgaWYgKCFzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YShmcmFtZSkpIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxv
Yjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBmaWxlTmFtZSkpOwor
ICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9j
dW1lbnQtPnNlc3Npb25JRCgpLCBidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgZmls
ZU5hbWUpKTsKICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCkBAIC03NzMsNyAr
NzczLDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUm
IGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KIAogICAgIGlmIChjb250ZW50VHlwZUlz
U3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGF0dGFjaG1lbnRUeXBlKSkgewog
ICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
LSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3Jl
YXRlKEJsb2I6OmNyZWF0ZShidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92
ZShmaWxlTmFtZSkpKSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9jdW1lbnQtPnNlc3Npb25JRCgpLCBi
dWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92ZShmaWxlTmFtZSkpKSk7CiAg
ICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsK
ICAgICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRv
bVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvRWRpdG9yR3RrLmNwcAppbmRleCA3MDZlODI2NzNmMDgxMzMzNzM1ZTU4NzEyNzhj
OGQ0NTBkMGI2OWJjLi43YWZmMTdiNWMxOWUxYzllMTRmYjg3OTExZDg3Y2Y1NTgzZWM3YTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0
ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgICAgIHJldHVybiBDQUlST19TVEFU
VVNfU1VDQ0VTUzsKICAgICAgICAgfSwgJmJ1ZmZlcik7CiAgICAgICAgIGlmIChzdGF0dXMgPT0g
Q0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlciksICJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgIGF1dG8gYmxv
YiA9IEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLT5zZXNzaW9uSUQoKSwgV1RGTW92ZShi
dWZmZXIpLCAiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIGJsb2IpLCB7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwCmluZGV4IDIwM2NjNDdhYTZkNmY1NDE0ODdmNTRhNDY2OTgzMmYzYjVkZjU3
NWUuLmZiNDM3MTYzMDNhZTI1YjgxOTI5MmQyNzFjYTJjYWU2ODRiOWMwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKQEAgLTk4Myw5ICs5ODMsOSBAQCBzdGF0aWMgdm9pZCByZXN0b3Jl
QXR0YWNobWVudEVsZW1lbnRzSW5GcmFnbWVudChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCkK
ICAgICAgICAgYXV0byBhdHRhY2htZW50UGF0aCA9IGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRQYXRo
KCk7CiAgICAgICAgIGF1dG8gYmxvYlVSTCA9IGF0dGFjaG1lbnQtPmJsb2JVUkwoKTsKICAgICAg
ICAgaWYgKCFhdHRhY2htZW50UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhdHRhY2htZW50
LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShhdHRhY2htZW50UGF0aCkpOworICAgICAgICAgICAgYXR0
YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNzaW9u
SUQoKSwgYXR0YWNobWVudFBhdGgpKTsKICAgICAgICAgZWxzZSBpZiAoIWJsb2JVUkwuaXNFbXB0
eSgpKQotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpkZXNlcmlhbGl6ZSh7
IH0sIGJsb2JVUkwsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1lbnQtPmF0
dGFjaG1lbnRUaXRsZSgpKSk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6
OmRlc2VyaWFsaXplKGZyYWdtZW50LmRvY3VtZW50KCkuc2Vzc2lvbklEKCksIHsgfSwgYmxvYlVS
TCwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgYXR0YWNobWVudC0+YXR0YWNobWVudFRp
dGxlKCkpKTsKIAogICAgICAgICAvLyBSZW1vdmUgdGVtcG9yYXJ5IGF0dHJpYnV0ZXMgdGhhdCB3
ZXJlIHByZXZpb3VzbHkgYWRkZWQgaW4gU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEN1
c3RvbUF0dHJpYnV0ZXMuCiAgICAgICAgIGF0dGFjaG1lbnQtPnJlbW92ZUF0dHJpYnV0ZSh3ZWJr
aXRhdHRhY2htZW50aWRBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDE0YzUxNzJi
N2U5NTQyM2RhY2EyOGQ1NGZmNWRiZDZmM2NjYWVlOTguLmE4YjlmOTcxM2M1NmFhNDI2MTQ5NzY1
ZjcyZjAxOTllOTU1N2Y4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNzIsMTkgKzcy
LDIyIEBAIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1
cm4gaW5zdGFuY2U7CiB9CiAKLUJsb2I6OkJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IpCitC
bG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiB9CiAKLUJsb2I6OkJsb2IoKQot
ICAgIDogbV9zaXplKDApCitCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAg
ICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fc2l6ZSgwKQogewogICAgIG1faW50
ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOwog
fQogCi1CbG9iOjpCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50
cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAgICA6IG1faW50ZXJuYWxV
UkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMs
IGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAgOiBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCkpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHByb3BlcnR5QmFnLnR5cGUp
KQogICAgICwgbV9zaXplKC0xKQogewpAQCAtMTAwLDggKzEwMyw5IEBAIEJsb2I6OkJsb2IoVmVj
dG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVy
dHlCYWcmIHByCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwgbV90eXBlKTsKIH0KIAotQmxvYjo6Qmxv
Yihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
LSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKK0Jsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fdHlwZShjb250ZW50
VHlwZSkKICAgICAsIG1fc2l6ZShidWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwpAQCAtMTEzLDggKzExNyw5IEBAIEJsb2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRz
KSwgY29udGVudFR5cGUpOwogfQogCi1CbG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5cGUoY29udGVudFR5cGUpCitC
bG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25J
RCkKKyAgICAsIG1fdHlwZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShkYXRhLnNpemUoKSkK
IHsKICAgICBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0czsKQEAgLTEyNCwxNSArMTI5LDE3IEBA
IEJsb2I6OkJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKIH0KIAogQmxvYjo6QmxvYihSZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9y
LCBjb25zdCBCbG9iJiBibG9iKQotICAgIDogbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJ
bnRlcm5hbFVSTCgpKQorICAgIDogbV9zZXNzaW9uSUQoYmxvYi5tX3Nlc3Npb25JRCkKKyAgICAs
IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKICAgICAsIG1fdHlw
ZShibG9iLnR5cGUoKSkKICAgICAsIG1fc2l6ZShibG9iLnNpemUoKSkKIHsKICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFy
dChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRp
b25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25n
IGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKLSAgICA6IG1fdHlwZShu
b3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNv
bnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tl
ZFBhdGgpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX3R5cGUobm9ybWFs
aXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNpemUpCiB7CiAgICAgbV9pbnRl
cm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CkBAIC0xNDIsOCArMTQ5LDkg
QEAgQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VS
TCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb24KICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3Jj
VVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5
cGUpCi0gICAgOiBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQorQmxvYjo6Qmxv
YihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgdHlwZSkKKyAgICA6IG1fc2Vzc2lv
bklEKHNlc3Npb25JRCkKKyAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkp
CiAgICAgLCBtX3NpemUoLTEpIC8vIHNpemUgaXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGVu
ZCAtIHN0YXJ0LgogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5h
bFVSTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCBjZGM4ODk1Zjk2ZTAxZTJjNTQwZDk3NjBh
MzljOTMwYzg4YTAyMWVjLi5lNjM2ZjJkMmRmY2U3YzQwYTE5M2EzMTkxOTYzMjAzMDhlNzJhNjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtMzIsMTAgKzMyLDEyIEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkJsb2JQcm9wZXJ0eUJhZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTQsMzAgKzU2LDMwIEBAIHVzaW5nIEJsb2JQYXJ0VmFy
aWFudCA9IFZhcmlhbnQ8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiwgUmVmUHRyPEpTQzo6
QXJyYXlCCiBjbGFzcyBCbG9iIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFVSTFJl
Z2lzdHJhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxCbG9iPiB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9FWFBPUlQoQmxvYiwgV0VCQ09SRV9FWFBPUlQpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8QmxvYj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
bG9iKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihzZXNzaW9uSUQpKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50
PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcp
CisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBC
bG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQuc2Vzc2lvbklEKCksIFdU
Rk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxCbG9iPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2Io
YnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9i
KHNlc3Npb25JRCwgYnVmZmVyLCBjb250ZW50VHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWY8QmxvYj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihXVEZNb3ZlKGRhdGEp
LCBjb250ZW50VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKHNlc3Np
b25JRCwgV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmPEJsb2I+IGRlc2VyaWFsaXplKGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGxvbmcgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQorICAgIHN0
YXRpYyBSZWY8QmxvYj4gZGVzZXJpYWxpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3Qg
U3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChCbG9iOjppc05v
cm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc3JjVVJMLCB0eXBlLCBzaXplLCBmaWxl
QmFja2VkUGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGRlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IsIHNlc3Npb25JRCwgc3JjVVJMLCB0eXBlLCBzaXplLCBmaWxlQmFj
a2VkUGF0aCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKQEAgLTEwMiwyNyArMTA0
LDI4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxCbG9iPiBzbGljZShsb25nIGxvbmcgc3RhcnQgPSAw
LCBsb25nIGxvbmcgZW5kID0gc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IFN0cmluZygpKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihtX2ludGVybmFsVVJMLCBzdGFydCwgZW5kLCBj
b250ZW50VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKG1fc2Vzc2lv
bklELCBtX2ludGVybmFsVVJMLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkpOwogICAgIH0KIAog
cHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIEJsb2IoKTsKLSAgICBCbG9iKFZlY3RvcjxC
bG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOwotICAgIEJsb2IoY29u
c3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgQmxvYihW
ZWN0b3I8dWludDhfdD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgQmxvYihQQUw6OlNlc3Npb25JRCk7CisgICAgQmxvYihQQUw6OlNl
c3Npb25JRCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiwgY29uc3QgQmxvYlByb3BlcnR5QmFn
Jik7CisgICAgQmxvYihQQUw6OlNlc3Npb25JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihQQUw6OlNlc3Npb25JRCwgVmVjdG9yPHVp
bnQ4X3Q+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAgZW51bSBSZWZlcmVu
Y2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yIHsgcmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25z
dHJ1Y3RvciB9OwogICAgIEJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rvciwg
Y29uc3QgQmxvYiYpOwogCiAgICAgZW51bSBVbmluaXRpYWxpemVkQ29udHJ1Y3RvciB7IHVuaW5p
dGlhbGl6ZWRDb250cnVjdG9yIH07Ci0gICAgQmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3Rvcik7
CisgICAgQmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQpOwogCiAg
ICAgZW51bSBEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIHsgZGVzZXJpYWxpemF0aW9uQ29udHJ1
Y3RvciB9OwotICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBz
cmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYg
ZmlsZUJhY2tlZFBhdGgpOworICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcg
bG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKIAogICAgIC8vIEZvciBz
bGljaW5nLgotICAgIEJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKICAgICAvLyBUaGlzIGlzIGFuIGludGVybmFsIFVSTCByZWZlcnJpbmcgdG8gdGhl
IGJsb2IgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuIEl0IHNlcnZlcwogICAgIC8v
IGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoaXMgYmxvYi4gVGhlIGludGVybmFsIFVSTCBpcyBuZXZl
ciB1c2VkIHRvIHNvdXJjZSB0aGUgYmxvYidzIGNvbnRlbnQKICAgICAvLyBpbnRvIGFuIEhUTUwg
b3IgZm9yIEZpbGVSZWFkJ2luZywgcHVibGljIGJsb2IgVVJMcyBtdXN0IGJlIHVzZWQgZm9yIHRo
b3NlIHB1cnBvc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKaW5kZXggNjlkMGYxNTVhZDQ3OThk
N2U2NmI0MDhkMmRiZWM2ODIwYzZlZGRlYi4uYWU1NTJhOTU2ZjM1M2MwZTQyY2EyZDUxNTdmNTU0
MDQxZTUxYTUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsCkBAIC0zNSw2ICszNSw3IEBAIHR5
cGVkZWYgKEJ1ZmZlclNvdXJjZSBvciBCbG9iIG9yIFVTVlN0cmluZykgQmxvYlBhcnQ7CiAgICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgQ29u
c3RydWN0b3Iob3B0aW9uYWwgc2VxdWVuY2U8QmxvYlBhcnQ+IGJsb2JQYXJ0cywgb3B0aW9uYWwg
QmxvYlByb3BlcnR5QmFnIG9wdGlvbnMpLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwKIF0gaW50ZXJmYWNlIEJsb2IgewogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCAxODNkYTdhMGUwNDZmMmMz
OTFlZWJmNjQ0MTVlNmM2NjY5NDE5NzkzLi5lYjViNmExNzY3OGEzNGRhM2MwYzZhZWI5ZjhjNWJl
ZjRlZDBhZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTM5LDE1ICszOSwxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChGaWxlKTsK
IAotUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGVX
aXRoUmVsYXRpdmVQYXRoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKIHsKLSAgICBhdXRvIGZpbGUgPSBGaWxl
OjpjcmVhdGUocGF0aCk7CisgICAgYXV0byBmaWxlID0gRmlsZTo6Y3JlYXRlKHNlc3Npb25JRCwg
cGF0aCk7CiAgICAgZmlsZS0+c2V0UmVsYXRpdmVQYXRoKHJlbGF0aXZlUGF0aCk7CiAgICAgcmV0
dXJuIGZpbGU7CiB9CiAKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogQmxv
Yih1bmluaXRpYWxpemVkQ29udHJ1Y3RvcikKK0ZpbGU6OkZpbGUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250
cnVjdG9yLCBzZXNzaW9uSUQpCiAgICAgLCBtX3BhdGgocGF0aCkKIHsKICAgICBtX2ludGVybmFs
VVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKQEAgLTU2LDggKzU2LDggQEAgRmls
ZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChtX2ludGVybmFsVVJMLCBwYXRoLCBtX3R5cGUpOwogfQogCi1G
aWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUp
Ci0gICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yKQorRmlsZTo6RmlsZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1l
T3ZlcnJpZGUpCisgICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBzZXNzaW9uSUQp
CiAgICAgLCBtX3BhdGgocGF0aCkKIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3Jl
YXRlSW50ZXJuYWxVUkwoKTsKQEAgLTY2LDggKzY2LDggQEAgRmlsZTo6RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQogICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwobV9pbnRlcm5hbFVSTCwgcGF0aCwgbV90eXBl
KTsKIH0KIAotRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKLSAgICA6IEJs
b2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgdXJsLCB0eXBlLCAtMSwgcGF0aCkKK0ZpbGU6
OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmll
ZCkKKyAgICA6IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc2Vzc2lvbklELCB1cmws
IHR5cGUsIC0xLCBwYXRoKQogICAgICwgbV9wYXRoKHBhdGgpCiAgICAgLCBtX25hbWUobmFtZSkK
ICAgICAsIG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlKGxhc3RNb2RpZmllZCkKQEAgLTgxLDgg
KzgxLDggQEAgc3RhdGljIEJsb2JQcm9wZXJ0eUJhZyBjb252ZXJ0UHJvcGVydHlCYWcoY29uc3Qg
RmlsZTo6UHJvcGVydHlCYWcmIGluaXRpYWxCYWcpCiAgICAgcmV0dXJuIGJhZzsKIH0KIAotRmls
ZTo6RmlsZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAgICA6
IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgY29udmVydFByb3BlcnR5QmFnKHByb3Bl
cnR5QmFnKSkKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVj
dG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAgOiBCbG9iKGNvbnRl
eHQuc2Vzc2lvbklEKCksIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGNvbnZlcnRQcm9wZXJ0
eUJhZyhwcm9wZXJ0eUJhZykpCiAgICAgLCBtX25hbWUoZmlsZW5hbWUpCiAgICAgLCBtX2xhc3RN
b2RpZmllZERhdGVPdmVycmlkZShwcm9wZXJ0eUJhZy5sYXN0TW9kaWZpZWQudmFsdWVPcihXYWxs
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSkpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5oCmluZGV4IGIyOWIwOGE4ODc5NThlZDc0NjFhYWMxNDlmZjI2MzhiY2QzNTFj
NGMuLmNiOGE1MDdiZjNkZjY2ZDNiOGIzZjQ1OGNiNzU2YmNkNDFmM2RkNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5oCkBAIC00MSwyOCArNDEsMjggQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxp
bnQ2NF90PiBsYXN0TW9kaWZpZWQ7CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGaWxlKHNlc3Npb25JRCwgcGF0aCkpOwogICAgIH0KIAogICAgIC8vIENyZWF0ZSBh
IEZpbGUgdXNpbmcgdGhlICduZXcgRmlsZScgY29uc3RydWN0b3IuCi0gICAgc3RhdGljIFJlZjxG
aWxlPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisg
ICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyks
IGZpbGVuYW1lLCBwcm9wZXJ0eUJhZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
aWxlKGNvbnRleHQsIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGZpbGVuYW1lLCBwcm9wZXJ0
eUJhZykpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gZGVzZXJpYWxpemUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQgPSBX
VEY6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2
NF90PiYgbGFzdE1vZGlmaWVkID0gV1RGOjpudWxsb3B0KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRmlsZShkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBwYXRoLCBzcmNV
UkwsIHR5cGUsIG5hbWUsIGxhc3RNb2RpZmllZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGaWxlKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHNlc3Npb25JRCwgcGF0aCwgc3Jj
VVJMLCB0eXBlLCBuYW1lLCBsYXN0TW9kaWZpZWQpKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGUg
YSBmaWxlIHdpdGggYSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBh
bmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBw
cm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZVdpdGhOYW1l
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCisgICAgc3Rh
dGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoTmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCiAgICAgewogICAg
ICAgICBpZiAobmFtZU92ZXJyaWRlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZpbGUocGF0aCkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxl
KHBhdGgsIG5hbWVPdmVycmlkZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsZShzZXNzaW9uSUQsIHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmls
ZShzZXNzaW9uSUQsIHBhdGgsIG5hbWVPdmVycmlkZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZWY8RmlsZT4gY3JlYXRlKGNvbnN0IEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxl
KGZpbGUsIG5hbWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZVdpdGhS
ZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0
aCk7CisgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsK
IAogICAgIGJvb2wgaXNGaWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBA
IC05NSwxMyArOTUsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7Ci0gICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFt
ZU92ZXJyaWRlKTsKLSAgICBGaWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRW
YXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHBhdGgpOworICAgIEZpbGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKICAgICBGaWxlKGNvbnN0IEJs
b2ImLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAKLSAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsK
KyAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7
CiAKICAgICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFt
ZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFD
RU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRsIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbAppbmRleCA0Y2Y1NDdlMWMzNmM5NGZjNTc2YTgx
MWUyMDc1M2MxNTZkMjA5YWU0Li5iZjc2ZGNkZjQwMDQyNjczMzEwM2MyMWMzZWRmNzA0NWZkNTA0
ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKQEAgLTI4LDYgKzI4LDcgQEAgdHlwZWRlZiAo
QnVmZmVyU291cmNlIG9yIEJsb2Igb3IgVVNWU3RyaW5nKSBCbG9iUGFydDsKIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBleHBvc2VkIG9uIFdvcmtlcnMgYXMgd2VsbC4KIFsKICAgICBDb25zdHJ1
Y3RvcihzZXF1ZW5jZTxCbG9iUGFydD4gZmlsZUJpdHMsIFVTVlN0cmluZyBmaWxlTmFtZSwgb3B0
aW9uYWwgRmlsZVByb3BlcnR5QmFnIG9wdGlvbnMpLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwK
ICAgICBFeHBvc2VkPShXaW5kb3cpLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggYWZjMjU4ODM5MTIyNzM4ZDc2ZjA0ZjZi
OTBhY2NhOTE3ZjFjMzkyZC4uN2E5OTFmMTdiMDNkODNlOTA1ZjdkM2UwNjA3YmY1MmE5OWI4MGU0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xNzUsNyArMTc1LDcg
QEAgYm9vbCBGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYgZm9ybURh
dGEsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdAogICAgIC8vIElmIG5vIGZpbGVuYW1lIGF0IGFsbCBp
cyBlbnRlcmVkLCByZXR1cm4gc3VjY2Vzc2Z1bCBidXQgZW1wdHkuCiAgICAgLy8gTnVsbCB3b3Vs
ZCBiZSBtb3JlIGxvZ2ljYWwsIGJ1dCBOZXRzY2FwZSBwb3N0cyBhbiBlbXB0eSBmaWxlLiBBcmdo
LgogICAgIGlmIChmaWxlTGlzdC0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvcm1EYXRhLmFwcGVu
ZChuYW1lLCBGaWxlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSkpOworICAgICAgICBmb3JtRGF0YS5h
cHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5zZXNzaW9uSUQo
KSwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQx
NCw3ICs0MTQsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0CiAKICAgICBhdXRvIHNob3VsZFJl
c29sdmVEaXJlY3RvcmllcyA9IGFsbG93c0RpcmVjdG9yaWVzKCkgPyBGaWxlTGlzdENyZWF0b3I6
OlNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6WWVzIDogRmlsZUxpc3RDcmVhdG9yOjpTaG91bGRS
ZXNvbHZlRGlyZWN0b3JpZXM6Ok5vOwogICAgIGF1dG8gc2hvdWxkUmVxdWVzdEljb24gPSBpY29u
ID8gUmVxdWVzdEljb246OlllcyA6IFJlcXVlc3RJY29uOjpObzsKLSAgICBtX2ZpbGVMaXN0Q3Jl
YXRvciA9IEZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKHBhdGhzLCBzaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXMsIFt0aGlzLCBzaG91bGRSZXF1ZXN0SWNvbl0oUmVmPEZpbGVMaXN0PiYmIGZpbGVMaXN0
KSB7CisgICAgbV9maWxlTGlzdENyZWF0b3IgPSBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShlbGVt
ZW50KCktPmRvY3VtZW50KCkuc2Vzc2lvbklEKCksIHBhdGhzLCBzaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXMsIFt0aGlzLCBzaG91bGRSZXF1ZXN0SWNvbl0oUmVmPEZpbGVMaXN0PiYmIGZpbGVMaXN0
KSB7CiAgICAgICAgIHNldEZpbGVzKFdURk1vdmUoZmlsZUxpc3QpLCBzaG91bGRSZXF1ZXN0SWNv
bik7CiAgICAgICAgIG1fZmlsZUxpc3RDcmVhdG9yID0gbnVsbHB0cjsKICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCAxNTU2ZmMyOTljYjIzNzNiMGM1
OTg5NTIwYTcyYzMxMTZjZTM5ZWE1Li5jNzU2MDU2NzdkZGE0NjNmM2FhMDY5MDg0NjYwMmZmZTJl
OWM1N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC0zOSw3
ICszOSw3IEBAIEZpbGVMaXN0Q3JlYXRvcjo6fkZpbGVMaXN0Q3JlYXRvcigpCiAgICAgQVNTRVJU
KCFtX2NvbXBsZXRpb25IYW5kZXIpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlG
aWxlcyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgs
IFZlY3RvcjxSZWY8RmlsZT4+JiBmaWxlT2JqZWN0cykKK3N0YXRpYyB2b2lkIGFwcGVuZERpcmVj
dG9yeUZpbGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZpbGU+PiYgZmlsZU9i
amVjdHMpCiB7CiAgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgewogICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CkBAIC01MSwyMiArNTEsMjIgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmUKIAogICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSBy
ZWxhdGl2ZVBhdGggKyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRo
KTsKICAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0
aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKKyAgICAgICAgICAgIGFwcGVuZERp
cmVjdG9yeUZpbGVzKHNlc3Npb25JRCwgY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgZmls
ZU9iamVjdHMpOwogICAgICAgICBlbHNlIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmls
ZU1ldGFkYXRhOjpUeXBlOjpGaWxlKQotICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZp
bGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCkp
OworICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2
ZVBhdGgoc2Vzc2lvbklELCBjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoKSk7CiAgICAgfQog
fQogCi1GaWxlTGlzdENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcihjb25zdCBWZWN0b3I8RmlsZUNo
b29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgc2hvdWxkUmVz
b2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZl
RGlyZWN0b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMg
PT0gU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpObykKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY3JlYXRlRmlsZUxpc3Q8U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpObz4ocGF0aHMpKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlRmlsZUxpc3Q8U2hvdWxkUmVzb2x2ZURp
cmVjdG9yaWVzOjpObz4oc2Vzc2lvbklELCBwYXRocykpOwogICAgIGVsc2UgewogICAgICAgICAv
LyBSZXNvbHZlIGRpcmVjdG9yaWVzIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgdG8gYXZvaWQgYmxv
Y2tpbmcgdGhlIG1haW4gdGhyZWFkLgogICAgICAgICBtX2NvbXBsZXRpb25IYW5kZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgbV93b3JrUXVldWUgPSBXb3JrUXVldWU6
OmNyZWF0ZSgiRmlsZUxpc3RDcmVhdG9yIFdvcmsgUXVldWUiKTsKLSAgICAgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdGhz
ID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8g
ZmlsZUxpc3QgPSBjcmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Olllcz4o
cGF0aHMpOworICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBwYXRocyA9IGNyb3NzVGhyZWFkQ29weShw
YXRocyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIGZpbGVMaXN0ID0gY3JlYXRlRmls
ZUxpc3Q8U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpZZXM+KHNlc3Npb25JRCwgcGF0aHMpOwog
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGZpbGVMaXN0ID0gV1RGTW92ZShmaWxlTGlzdCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRlciA9IFdURk1vdmUo
bV9jb21wbGV0aW9uSGFuZGVyKSkKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRl
cihXVEZNb3ZlKGZpbGVMaXN0KSk7CkBAIC03NiwxNCArNzYsMTQgQEAgRmlsZUxpc3RDcmVhdG9y
OjpGaWxlTGlzdENyZWF0b3IoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRo
cywgU2hvdWwKIH0KIAogdGVtcGxhdGU8RmlsZUxpc3RDcmVhdG9yOjpTaG91bGRSZXNvbHZlRGly
ZWN0b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzPgotUmVmPEZpbGVMaXN0PiBGaWxlTGlz
dENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZv
PiYgcGF0aHMpCitSZWY8RmlsZUxpc3Q+IEZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlRmlsZUxpc3Qo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mIHBhdGhzKQogewogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVPYmplY3RzOwogICAgIGZv
ciAoYXV0byYgaW5mbyA6IHBhdGhzKSB7CiAgICAgICAgIGlmIChzaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXMgPT0gU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpZZXMgJiYgRmlsZVN5c3RlbTo6Zmls
ZUlzRGlyZWN0b3J5KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6Tm8pKQotICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmlsZU9iamVjdHMpOworICAg
ICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoc2Vzc2lvbklELCBpbmZvLnBhdGgsIEZpbGVT
eXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxlT2JqZWN0cyk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFt
ZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKKyAgICAgICAgICAgIGZpbGVPYmplY3Rz
LmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZShzZXNzaW9uSUQsIGluZm8ucGF0aCwgaW5mby5k
aXNwbGF5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3Zl
KGZpbGVPYmplY3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVM
aXN0Q3JlYXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuaAppbmRl
eCAzMWM3NGNmZjFkYTI0MzUyNTM0MDMzYzgyMzQwMWM2NjZlNWY3YThkLi44NjM3NTQzYTA3Nzk3
YzA4Mjk3NzdlM2Y5NTQwZTM0MmJmNDY3ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVMaXN0Q3JlYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RD
cmVhdG9yLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0zOCwxMiArMzksMTIgQEAgY2xh
c3MgRmlsZUxpc3Q7CiAKIGNsYXNzIEZpbGVMaXN0Q3JlYXRvciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxGaWxlTGlzdENyZWF0b3I+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBDb21wbGV0
aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+JiYpPjsKKyAgICB1
c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoUmVmPEZpbGVMaXN0PiYmKT47
CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcyB7IE5vLCBZZXMgfTsK
LSAgICBzdGF0aWMgUmVmPEZpbGVMaXN0Q3JlYXRvcj4gY3JlYXRlKGNvbnN0IFZlY3RvcjxGaWxl
Q2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRS
ZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgc3RhdGljIFJlZjxGaWxlTGlzdENyZWF0b3I+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGaWxlTGlzdENyZWF0b3IocGF0aHMsIHNob3VsZFJlc29sdmVEaXJlY3Rvcmllcywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRmlsZUxpc3RDcmVhdG9yKHNlc3Npb25JRCwgcGF0aHMsIHNob3VsZFJlc29sdmVEaXJlY3Rv
cmllcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+RmlsZUxp
c3RDcmVhdG9yKCk7CkBAIC01MSwxMCArNTIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2Vs
KCk7CiAKIHByaXZhdGU6Ci0gICAgRmlsZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hv
b3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlv
bkhhbmRsZXImJik7CisgICAgRmlsZUxpc3RDcmVhdG9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3Jp
ZXMsIENvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdGVtcGxhdGU8U2hvdWxkUmVzb2x2ZURp
cmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3Rvcmllcz4KLSAgICBzdGF0aWMgUmVmPEZpbGVM
aXN0PiBjcmVhdGVGaWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mKTsK
KyAgICBzdGF0aWMgUmVmPEZpbGVMaXN0PiBjcmVhdGVGaWxlTGlzdChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+Jik7CiAKICAgICBSZWZQdHI8V29ya1F1
ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5k
ZXggZmNmYTc4NGEwNWNkNTA1NWIxOGUzNmRiNTg5OGJlNzBhZGY3MjYxMS4uMjUwZmI3Nzc0NTI4
NWQ1ZDU3NzQ4ODM2ZDk2YTk2ZmU1MTc3MTIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgSFRNTEF0
dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5CiAgICAgaWYgKCFtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0
dGFjaG1lbnQobWltZVR5cGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBob3N0RWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpLCBtaW1lVHlwZSkpKTsKKyAgICBob3N0RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJM
KGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShkb2N1bWVudCgpLnNlc3Npb25JRCgpLCBXVEZNb3Zl
KGRhdGEpLCBtaW1lVHlwZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAzNGE5MzEwNDgwNjllMDcz
MWE5ODEwZDRkMmFhNTBkY2I5N2E3Y2Q4Li5hOWJiNGZiOGUwNjNlNzAxNWYxYTY0ZTdkODZmZWIz
NThmZmMyN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApA
QCAtNzM5LDcgKzczOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojp0
b0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmCiAgICAgICAgIFJlZlB0
cjxCbG9iPiBibG9iOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkRhdGEgPSBkYXRhKCpp
bWFnZURhdGEsIGVuY29kaW5nTUlNRVR5cGUsIHF1YWxpdHkpOwogICAgICAgICBpZiAoIWJsb2JE
YXRhLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShi
bG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNy
ZWF0ZShjb250ZXh0LnNlc3Npb25JRCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1F
VHlwZSk7CiAgICAgICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIFdURk1v
dmUoYmxvYikpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTc1MCw3ICs3NTAsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9CbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZgogICAgIFJlZlB0cjxCbG9iPiBibG9iOwogICAgIFZl
Y3Rvcjx1aW50OF90PiBibG9iRGF0YSA9IGJ1ZmZlcigpLT50b0RhdGEoZW5jb2RpbmdNSU1FVHlw
ZSwgcXVhbGl0eSk7CiAgICAgaWYgKCFibG9iRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIGJsb2Ig
PSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAg
ICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKGNvbnRleHQuc2Vzc2lvbklEKCksIFdURk1vdmUoYmxv
YkRhdGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFj
ayhjb250ZXh0LCBXVEZNb3ZlKGJsb2IpKTsKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGI5N2E4ZDVkNGQ0ZTdjZTg2OGVkYjUzYWMwNTU2
MGJkM2UyOTY2ZGUuLjQ4YzA3MzQ3NzBlYjExMGMxYzVkODQ1M2RkMDg3OTkyZTU2NDlhMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM3NzIsNyArMzc3Miw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgLy8gVGhpcyBkb2VzIHdvcmsgb25seSBpZiB3ZSBt
aXNzZWQgYSBkcmFnRW5kLiBEbyBpdCBhbnl3YXksIGp1c3QgdG8gbWFrZSBzdXJlIHRoZSBvbGQg
ZGF0YVRyYW5zZmVyIGdldHMgbnVtYmVkLgogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsK
IAotICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
RHJhZygpOworICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3Jl
YXRlRm9yRHJhZygqbV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBIYXNOb25EZWZhdWx0UGFzdGVi
b2FyZERhdGEgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhID0gSGFzTm9uRGVmYXVsdFBhc3Rl
Ym9hcmREYXRhOjpObzsKICAgICAKICAgICBpZiAoZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hF
dmVudHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwNDZkMTA1MWI5
NzJiYzc4ZGNhN2U1ZDIyZjE3ODFlY2E0NWMxODdhLi5kMjFjZWQ1ZWI0ZTczZjExNzg3YTVkNjg4
NDhlZDUxNWY4OWMxZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00
MjUxLDcgKzQyNTEsNyBAQCBSZWZQdHI8RmlsZT4gSW50ZXJuYWxzOjpjcmVhdGVGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICBpZiAoIXVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBGaWxlOjpjcmVhdGUodXJsLmZpbGVTeXN0ZW1QYXRo
KCkpOworICAgIHJldHVybiBGaWxlOjpjcmVhdGUoZG9jdW1lbnQtPnNlc3Npb25JRCgpLCB1cmwu
ZmlsZVN5c3RlbVBhdGgoKSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3JvVGFzayhp
bnQgdGVzdE51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuY3BwCmluZGV4IDU1NDQ1NjE1ZTBlMWU4MWVjYTE0YjgxNmMzZThlNDkxYjcz
N2IzZjQuLjZlMWJjYTNhNDdmZGRhNjFmZDlmZGFiZjcxOGRhNDQyZDhiYzUzNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAt
NjgsMTQgKzY4LDE0IEBAIFJlZjxGZXRjaEV2ZW50PiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpj
cmVhdGVCZWluZ0Rpc3BhdGNoZWRGZXRjaEV2ZW50KFNjcmlwdEV4CiAKIFJlZjxGZXRjaFJlc3Bv
bnNlPiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGVPcGFxdWVXaXRoQmxvYkJvZHlSZXNw
b25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8gYmxvYiA9
IEJsb2I6OmNyZWF0ZSgpOworICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShjb250ZXh0LnNl
c3Npb25JRCgpKTsKICAgICBhdXRvIGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogICAg
IGZvcm1EYXRhLT5hcHBlbmRCbG9iKGJsb2ItPnVybCgpKTsKIAogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7CiAgICAgcmVzcG9uc2Uuc2V0VHlwZShSZXNvdXJjZVJlc3BvbnNlOjpUeXBl
OjpDb3JzKTsKICAgICByZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWlu
dGluZzo6T3BhcXVlKTsKLSAgICBhdXRvIGZldGNoUmVzcG9uc2UgPSBGZXRjaFJlc3BvbnNlOjpj
cmVhdGUoY29udGV4dCwgRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZm9ybURhdGEpLCBGZXRjaEhl
YWRlcnM6Okd1YXJkOjpSZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZSkpOworICAgIGF1dG8gZmV0
Y2hSZXNwb25zZSA9IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBGZXRjaEJvZHk6OmZy
b21Gb3JtRGF0YShjb250ZXh0LnNlc3Npb25JRCgpLCBmb3JtRGF0YSksIEZldGNoSGVhZGVyczo6
R3VhcmQ6OlJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgZmV0Y2hSZXNwb25zZS0+
aW5pdGlhbGl6ZU9wYXF1ZUxvYWRJZGVudGlmaWVyRm9yVGVzdGluZygpOwogICAgIHJldHVybiBm
ZXRjaFJlc3BvbnNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggNDQ5NjlhZjA2
ZjRmOGMxZTc3YTVjMWViYTlmZDRiMDIyM2EwNjdhMi4uNDgwNTEwN2IxYjU0MjkzZmIyNTljZjJj
ZmY5MmU3N2U3OWI4ZmE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xNDksNyAr
MTQ5LDggQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICBhdXRvKiBmb3JtRGF0YSA9IHJl
cXVlc3QuaHR0cEJvZHkoKTsKICAgICBPcHRpb25hbDxGZXRjaEJvZHk+IGJvZHk7CiAgICAgaWYg
KGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvZHkgPSBGZXRj
aEJvZHk6OmZyb21Gb3JtRGF0YSgqZm9ybURhdGEpOworICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0ID0gZ2xvYmFsU2NvcGU7CisgICAgICAgIGJvZHkgPSBGZXRjaEJvZHk6
OmZyb21Gb3JtRGF0YShjb250ZXh0LnNlc3Npb25JRCgpLCAqZm9ybURhdGEpOwogICAgICAgICBp
ZiAoIWJvZHkpIHsKICAgICAgICAgICAgIGNsaWVudC0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAwNDI4
MDMzN2YxODFjNjA0NDBhOTA1OWJjMGEyNWQ4NWNlM2YwNmRjLi5mMDE5M2Q4Yzk2ZTM1YzlmZjc1
ZTZhNjNhMzUwYzY1NWRjYTg2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJl
c3BvbnNlQmxvYigpCiAgICAgICAgIGRhdGEuYXBwZW5kKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LT5kYXRhKCksIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5zaXplKCkpOwogICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRU
eXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSk7IC8v
IHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29y
cmVjdC4KLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRD
b250ZW50VHlwZSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNlc3Npb25JRCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUp
OwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUFycmF5QnVmZmVyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376016</attachid>
            <date>2019-08-10 14:47:55 -0700</date>
            <delta_ts>2019-08-10 15:50:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200572-20190810234752.patch</filename>
            <type>text/plain</type>
            <size>75254</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc5YTc5ODNkOTkyYTBl
MDNkM2FjZTVmZWE4MWFmMDczZjI3ZTcxMy4uNWU0YjQzNDU0MDVmYmEyOGIxNjQyYTVhMDZlMzgy
MDU2ZTBiMjE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOS0wOC0wOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiBzaG91bGQgc3Rv
cmUgaXRzIHNlc3Npb24gSUQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMDU3MgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIEJsb2IgYXQgY3JlYXRpb24gdGltZSBub3cgaW5pdGlhbGl6ZXMgaXRzIHNlc3Npb24g
SUQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBpbiB0aGUgZnV0dXJlIHRvIGNhbGwgYmxvYiBy
ZWdpc3RyeSByb3V0aW5lcyB3aXRoIGl0LgorICAgICAgICBVcGRhdGUgYWxsIGNhbGwgc2l0ZXMg
dG8gcHJvdmlkZSB0aGUgc2Vzc2lvbiBJRC4KKworICAgICAgICBObyBvYnNlcnZhYmxlIGNoYW5n
ZS4KKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldEZpbGUpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZnJv
bUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVXaXRoVHlwZUFuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVy
OjpibG9iKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyOjpjcmVhdGVSZWNvcmRpbmdEYXRh
QmxvYik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNl
bmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnNlc3Npb25JRCBjb25zdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1M
aXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5w
dXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3ApOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQp
OgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIgY29uc3Qp
OgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNm
ZXIgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2
ZW50RGF0YVRyYW5zZmVyIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFu
c2ZlciBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpy
ZWFkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFj
aG1lbnRGb3JGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzdG9y
ZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBmaWxlYXBpL0Js
b2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGljZSBjb25z
dCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoK
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaWRsOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6Cisg
ICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBw
ZW5kRGlyZWN0b3J5RmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9yOjpG
aWxlTGlzdENyZWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9yOjpjcmVh
dGVGaWxlTGlzdCk6CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGh0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6
OnRvQmxvYik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNyZWF0ZUZpbGUpOgorICAg
ICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGVPcGFxdWVXaXRoQmxvYkJvZHlSZXNw
b25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6ZGlzcGF0Y2hG
ZXRjaEV2ZW50KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisKIDIwMTktMDgt
MDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFBhc3MgYSBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IGFzIGlucHV0IHRvIHJlZ2lzdGVyL3VucmVnaXN0ZXIgVVJM
UmVnaXN0cnkgcm91dGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA0YmQyZTAwMzljMWQ5OTNiZjZmNjhlMzk0MWVl
Mjk2NWFlMTc5YjI2Li45ZjRhMTBiNzExYmYzNjNmMGE4YTIzNGM5ZTMyNzFmNTJlZTc2ZmIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXRGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1GaWxlRW50cnkKICAgICAg
ICAgICAgIGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4
Y2VwdGlvbigpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9u
Q2FsbGJhY2soRmlsZTo6Y3JlYXRlKGZ1bGxQYXRoKSk7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkNhbGxiYWNrKEZpbGU6OmNyZWF0ZShjb250ZXh0LT5zZXNzaW9uSUQoKSwgZnVsbFBhdGgp
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKaW5kZXggZTZjOTA2Mjc3OGE5ODliNTc1NDlhNTQ4OWY2YWJmZTQ4N2Nl
Mzg5OS4uOGVjYTEzYjFjOGY5YmVkNGQxNWFkYzk1ZDdlOGQ5NjBhMDcxMDA4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBF
eGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChJbml0JiYgdmFsdWUsIFN0
cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPEZldGNoQm9keT4gRmV0
Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQorT3B0aW9uYWw8RmV0Y2hC
b2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZv
cm1EYXRhJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIWZvcm1EYXRhLmlzRW1wdHkoKSk7CiAK
QEAgLTg4LDcgKzg4LDcgQEAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3Jt
RGF0YShGb3JtRGF0YSYgZm9ybURhdGEpCiAgICAgYXV0byB1cmwgPSBmb3JtRGF0YS5hc0Jsb2JV
UkwoKTsKICAgICBpZiAoIXVybC5pc051bGwoKSkgewogICAgICAgICAvLyBGSVhNRTogUHJvcGVy
bHkgc2V0IG1pbWUgdHlwZSBhbmQgc2l6ZSBvZiB0aGUgYmxvYi4KLSAgICAgICAgUmVmPGNvbnN0
IEJsb2I+IGJsb2IgPSBCbG9iOjpkZXNlcmlhbGl6ZSh1cmwsIHsgfSwgMCwgeyB9KTsKKyAgICAg
ICAgUmVmPGNvbnN0IEJsb2I+IGJsb2IgPSBCbG9iOjpkZXNlcmlhbGl6ZShzZXNzaW9uSUQsIHVy
bCwgeyB9LCAwLCB7IH0pOwogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5IHsgV1RGTW92ZShibG9i
KSB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5k
ZXggYzNmOTZmZjRhZmZmMjBkMTEzNjQ0MzNhMWYyYWNmNmFkMWQ5ZmI3My4uYjI3ZTBhNTE4N2Fl
OGJmODRiZDc5MTdjN2U3MTA1OGUxMWI5ODU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8RmV0Y2hCb2R5PiBleHRyYWN0KEluaXQmJiwgU3RyaW5nJik7CiAgICAgRmV0Y2hC
b2R5KCkgPSBkZWZhdWx0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPEZl
dGNoQm9keT4gZnJvbUZvcm1EYXRhKEZvcm1EYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIE9wdGlvbmFsPEZldGNoQm9keT4gZnJvbUZvcm1EYXRhKFBBTDo6U2Vzc2lvbklELCBGb3Jt
RGF0YSYpOwogCiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYpOwogICAg
IHZvaWQgbG9hZGluZ1N1Y2NlZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAzMDJkZmY2MGFkYWZlZmY3NjMxZGZi
ODk2NDhiNjE2ODE4Y2I5Y2I2Li43ZjA1ZTdhYzE5YTA1ODg5ZDk2OGZlNmUxNDhjNTdkOWVmYzdh
ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3N0YXRp
YyBpbmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVuZ3RoKTsKICAg
ICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVybiBCbG9iOjpj
cmVhdGUoV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3Jl
YXRlKHNlc3Npb25JRCwgV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIHNob3VsZFByZXBlbmRCT00oY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29u
cwogICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2Up
LCBkYXRhLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25z
dW1lcjo6VHlwZTo6QmxvYjoKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0
ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihibG9iRnJvbURhdGEoZGF0YSwgbGVuZ3RoLCBjb250ZW50
VHlwZSkuZ2V0KCkpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJ
RExJbnRlcmZhY2U8QmxvYj4+KGJsb2JGcm9tRGF0YShwcm9taXNlLT5zZXNzaW9uSUQoKSwgZGF0
YSwgbGVuZ3RoLCBjb250ZW50VHlwZSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoKICAgICAgICAgZnVsZmlsbFByb21pc2VX
aXRoSlNPTihXVEZNb3ZlKHByb21pc2UpLCB0ZXh0RnJvbVVURjgoZGF0YSwgbGVuZ3RoKSk7CkBA
IC0xMzAsNyArMTMwLDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlYWRhYmxlU3RyZWFtKgogICAgICAgICBmdWxmaWxs
UHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCB0YWtlQXNBcnJheUJ1ZmZl
cigpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6QmxvYjoKLSAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+Pih0
YWtlQXNCbG9iKCkuZ2V0KCkpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3Jl
YXRlZDxJRExJbnRlcmZhY2U8QmxvYj4+KHRha2VBc0Jsb2IocHJvbWlzZS0+c2Vzc2lvbklEKCkp
LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6SlNPTjoKICAgICAgICAg
ZnVsZmlsbFByb21pc2VXaXRoSlNPTihXVEZNb3ZlKHByb21pc2UpLCB0YWtlQXNUZXh0KCkpOwpA
QCAtMTc3LDEzICsxNzcsMTMgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgcmV0dXJuIGFycmF5QnVmZmVyOwogfQog
Ci1SZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoKQorUmVmPEJsb2I+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
ICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1
aW50OF90PigpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShz
ZXNzaW9uSUQsIFZlY3Rvcjx1aW50OF90PigpLCBtX2NvbnRlbnRUeXBlKTsKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgdHJ5IHRvIG1vdmUgbV9idWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5n
IGV4dHJhIGNvcHkuCi0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUoKSwg
bV9jb250ZW50VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShzZXNzaW9uSUQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1
ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNUZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAxYWNmZTAwOTNlNTA4NWY5Mzc1OWM1MDU3YTdiZmJkZTVl
MGZiOTA3Li5kYWFjZjI2NmNlZjcyMzg5MzIzNTU3MDgwY2Y3MzlmZDUwM2JkZThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01
NCw3ICs1NCw2IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRh
KCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7Ci0g
ICAgUmVmPEJsb2I+IHRha2VBc0Jsb2IoKTsKICAgICBTdHJpbmcgdGFrZUFzVGV4dCgpOwogCiAg
ICAgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSB7IG1fY29u
dGVudFR5cGUgPSBjb250ZW50VHlwZTsgfQpAQCAtNzUsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRBc0xvYWRpbmcoKSB7IG1faXNMb2FkaW5nID0gdHJ1ZTsgfQogCiBwcml2YXRlOgor
ICAgIFJlZjxCbG9iPiB0YWtlQXNCbG9iKFBBTDo6U2Vzc2lvbklEKTsKKwogICAgIFR5cGUgbV90
eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcAppbmRleCA3M2I1Mjk2MjljZWI1MGM3NTgxZmEyNWRjMjcxYjBjNmZiYTdkZmIwLi5h
ZGRjNTQ4OTZiOGE0NDM4Y2ZiZmQwNjU4MGFkYmM4NjBhODFmODY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAtMTI0LDcgKzEyNCw3
IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogICAgIH0KIAogICAgIGlmIChpc0JvZHlOdWxsT3JPcGFxdWUoKSkgewotICAgICAgICBw
cm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxCbG9iPj4oQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1
aW50OF90PiB7IH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVG
cm9tTWVkaWFUeXBlKG1fY29udGVudFR5cGUpKSkpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEludGVyZmFjZTxCbG9iPj4oQmxvYjo6Y3JlYXRlKHByb21pc2UtPnNlc3Npb25JRCgpLCBW
ZWN0b3I8dWludDhfdD4geyB9LCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShtX2NvbnRlbnRUeXBlKSkpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAoaXNEaXN0dXJiZWRPckxvY2tlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXgg
ZDVhZmQ0NDU5NzFhODQ1MGFiMzg1YTUwMDIwZWI2ZTIxOTYxMjkyZi4uMjQ0NzgyNWQ0OGJjYmM0
MmViZTIyNTM4MzBlN2MwOGI4MGNiZGM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTU3LDggKzE1Nyw4
IEBAIFJlZjxCbG9iPiBNZWRpYVJlY29yZGVyOjpjcmVhdGVSZWNvcmRpbmdEYXRhQmxvYigpCiB7
CiAgICAgYXV0byBkYXRhID0gbV9wcml2YXRlLT5mZXRjaERhdGEoKTsKICAgICBpZiAoIWRhdGEp
Ci0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRl
KCpkYXRhLCBtX3ByaXZhdGUtPm1pbWVUeXBlKCkpOworICAgICAgICByZXR1cm4gQmxvYjo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCkpOworICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgKmRhdGEs
IG1fcHJpdmF0ZS0+bWltZVR5cGUoKSk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlcjo6ZGlkQWRk
T3JSZW1vdmVUcmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDc1NGU0NjhjOTIxNTZlOTczYmNkZmI0NjFh
YzUzZjZkZDU1NTVkNjcuLmFjMzIxOWEwNjZjZWY2NTNiYTFlZGJkMjgyNTNmYmFmZDg2MzdlMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlk
UmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiAKICAg
ICBzd2l0Y2ggKG1fYmluYXJ5VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKLSAg
ICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNy
ZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJpbmco
KSksIHsgfSkpOworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCks
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpLCBlbXB0eVN0cmluZygpKSwg
eyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5QnVmZmVy
OgogICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJy
YXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBmMTM3OTFjNjIwYTdhNjA2
N2Y0YzNkYWI1ZmQ0M2IzOGE3N2QzZmUyLi5kNzRlNmQ5MTkwMjNiZmIwOTc0MDhhNDg3NmU3NjRm
MzA1OGQ3NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcApAQCAtNTg0LDcgKzU4NCw3IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZl
QmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogICAgIHN3aXRjaCAobV9i
aW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpCbG9iOgogICAgICAgICAvLyBGSVhN
RTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJl
IHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KLSAgICAgICAgZGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShiaW5hcnlEYXRh
KSwgZW1wdHlTdHJpbmcoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmlu
ZygpKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCksIFdURk1vdmUoYmlu
YXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+
dG9TdHJpbmcoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkFycmF5
QnVmZmVyOgogICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5
QnVmZmVyOjpjcmVhdGUoYmluYXJ5RGF0YS5kYXRhKCksIGJpbmFyeURhdGEuc2l6ZSgpKSwgU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDllYzRjYWYxY2ExNmNiZmNlZjkxYTE1
MmQxNGNlZmQyNmJiY2U5ZWMuLjk5NDA3M2VhYTVlOGIyMzBkMWM4YjAwYzE2YzU5NjQzZTk3ODQy
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDY1
LDcgKzQ2NSw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7
CiAKLSAgICAgICAgcGVlci0+c2VuZChCbG9iOjpkZXNlcmlhbGl6ZSh1cmwsIHR5cGUsIHNpemUs
IHsgfSkpOworICAgICAgICBwZWVyLT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKGNvbnRleHQuc2Vz
c2lvbklEKCksIHVybCwgdHlwZSwgc2l6ZSwgeyB9KSk7CiAgICAgfSk7CiAKICAgICBSZWY8QnJp
ZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCmluZGV4IGI0YWFiNzhmNDdhNjkwMDMwZmU1ZGFi
NWI3ODc2Nzg3ZTU2MmJiNzEuLjM2ODE4MjAyMWQ3NjcxNWExODZiNWQ1OWQ0YzUzMzViYTIyY2Q1
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURl
ZmVycmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVm
ZXJyZWQuaApAQCAtMjgsOCArMjgsMTAgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9taXNlRGVm
ZXJyZWQuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTM2LDYgKzEzOCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2hlblNldHRsZWQo
c3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2Vzc2lvbklEKCk7IH0KKwogcHJpdmF0ZToKICAgICBEZWZlcnJlZFByb21pc2UoSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJy
ZWQsIE1vZGUgbW9kZSkKICAgICAgICAgOiBET01HdWFyZGVkPEpTQzo6SlNQcm9taXNlRGVmZXJy
ZWQ+KGdsb2JhbE9iamVjdCwgZGVmZXJyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA5NjVlY2UzOTRiOTgzMjYw
NGEzNDNiYjI4NjNiMTRiZTc0ZmI4N2I0Li43NzUzZDhhMmYzMzQ4N2IxOTcyNzM4ZWRiMmM3MDEy
NDI3NGVhMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIwOTUsNyArMjA5NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBmaWxlUGF0aCA9IHBhdGgtPnN0cmluZygpOwogCiAgICAgICAgIGlmIChtX2lzRE9N
R2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQ
YXRoLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3Ry
aW5nKCksIG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKKyAgICAgICAgICAgIGZpbGUgPSBGaWxlOjpk
ZXNlcmlhbGl6ZShqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCksIGZpbGVQYXRoLCBVUkwoVVJMKCks
IHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFs
TGFzdE1vZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yODYxLDcg
KzI4NjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgICAgICAgICBpZiAoIW1faXNET01HbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJp
YWxpemUoVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJs
b2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKKyAgICAgICAgICAg
IHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KG1fZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9u
SUQoKSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJs
b2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNh
Y2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggOWFhZGIwZjg2
ZDhmOGRhYWY3Y2E3NmEyMzVmMzc3M2ZkODlkNmU0MC4uY2I3NTIzMjgwYzdiMzI1YzY2Y2RlNjQ2
YzE1YmY1YTkxMzE3NDViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTY4
LDggKzY4LDkgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKLURhdGFUcmFuc2Zlcjo6RGF0YVRyYW5z
ZmVyKFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFzdGVib2Fy
ZCwgVHlwZSB0eXBlKQotICAgIDogbV9zdG9yZU1vZGUobW9kZSkKK0RhdGFUcmFuc2Zlcjo6RGF0
YVRyYW5zZmVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgU3RvcmVNb2RlIG1vZGUsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkLCBUeXBlIHR5cGUpCisgICAgOiBtX3Nl
c3Npb25JRChkb2N1bWVudC5zZXNzaW9uSUQoKSkKKyAgICAsIG1fc3RvcmVNb2RlKG1vZGUpCiAg
ICAgLCBtX3Bhc3RlYm9hcmQoV1RGTW92ZShwYXN0ZWJvYXJkKSkKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogICAgICwgbV90eXBlKHR5cGUpCkBAIC04Myw5ICs4NCw5IEBAIERhdGFUcmFuc2Zl
cjo6RGF0YVRyYW5zZmVyKFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gcGFzdGVib2FyCiAjZW5kaWYKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdG9yZU1vZGUgc3Rv
cmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkKQorUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50LCBTdG9yZU1vZGUgc3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkKQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRS
ZWYoKm5ldyBEYXRhVHJhbnNmZXIoc3RvcmVNb2RlLCBXVEZNb3ZlKHBhc3RlYm9hcmQpKSk7Cisg
ICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVu
dCwgc3RvcmVNb2RlLCBXVEZNb3ZlKHBhc3RlYm9hcmQpKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5t
X29yaWdpbklkZW50aWZpZXIgPSBkb2N1bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2Fy
ZCgpOwogICAgIHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CkBAIC0zNDgsNyArMzQ5LDcgQEAgVmVj
dG9yPFJlZjxGaWxlPj4gRGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxp
c3QoKSBjb25zdAogICAgIGJvb2wgYWRkZWRGaWxlc0Zyb21QYXN0ZWJvYXJkID0gZmFsc2U7CiAg
ICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7CiAgICAgaWYgKCghZm9yRHJhZygpIHx8IGZvckZp
bGVEcmFnKCkpICYmIG1fcGFzdGVib2FyZC0+ZmlsZUNvbnRlbnRTdGF0ZSgpICE9IFBhc3RlYm9h
cmQ6OkZpbGVDb250ZW50U3RhdGU6Ok5vRmlsZU9ySW1hZ2VEYXRhKSB7Ci0gICAgICAgIFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlciByZWFkZXI7CisgICAgICAgIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlciByZWFkZXIgeyBtX3Nlc3Npb25JRCB9OwogICAgICAgICBtX3Bhc3RlYm9hcmQt
PnJlYWQocmVhZGVyKTsKICAgICAgICAgZmlsZXMgPSBXVEZNb3ZlKHJlYWRlci5maWxlcyk7CiAg
ICAgICAgIGFkZGVkRmlsZXNGcm9tUGFzdGVib2FyZCA9ICFmaWxlcy5pc0VtcHR5KCk7CkBAIC00
MTMsMTIgKzQxNCwxMiBAQCBib29sIERhdGFUcmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gIXR5cGUuaXNOdWxsKCkgJiYgdHlwZXMoKS5jb250
YWlucyh0eXBlKTsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxU
ZXh0KQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0
IFN0cmluZyYgaHRtbFRleHQpCiB7CiAgICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0
ZXh0L3BsYWluIl9zLCBwbGFpblRleHQpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0
ZXh0L2h0bWwiX3MsIGh0bWxUZXh0KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJh
bnNmZXIoU3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5w
dXRFdmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVu
dCwgU3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRF
dmVudCkpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6Y29tbWl0VG9QYXN0ZWJvYXJkKFBhc3Rl
Ym9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQpCkBAIC00NjMsMjkgKzQ2NCwyOSBAQCB2b2lkIERhdGFU
cmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqLCBpbnQsIGludCkKIAogI2Vsc2UKIAotUmVm
PERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKCkKK1JlZjxEYXRhVHJh
bnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZTo6
UmVhZFdyaXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBlOjpEcmFn
QW5kRHJvcERhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9j
dW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCgpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4g
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQp
CitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFk
b3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAg
IGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQs
IFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+
KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5J
ZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAg
ICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyb3AoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9v
bCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JEcm9wKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJh
Z2dpbmdGaWxlcykKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0
YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0
ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpE
cmFnQW5kRHJvcERhdGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcg
RGF0YVRyYW5zZmVyKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHks
IFdURk1vdmUocGFzdGVib2FyZCksIGRyYWdnaW5nRmlsZXMgPyBUeXBlOjpEcmFnQW5kRHJvcEZp
bGVzIDogVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3Vy
Y2VPcGVyYXRpb24oc291cmNlT3BlcmF0aW9uKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2lu
SWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAg
ICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJj
ZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0
aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewotICAgIGF1dG8gZGF0
YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9y
ZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5
cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICBhdXRv
IGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFn
Z2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0
YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uKHNvdXJjZU9wZXJhdGlv
bik7CiAgICAgZGF0YVRyYW5zZmVyLT5tX29yaWdpbklkZW50aWZpZXIgPSBkb2N1bWVudC5vcmln
aW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOwogICAgIHJldHVybiBkYXRhVHJhbnNmZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggMDBlOWVmNDYxMjJmMWFiZjg1Yzc4ZGEwYWZh
YjEyZjgyYTk3ZTQyNy4uNmFlY2FjOGZmNDk0MjU0NTVjZGY3YmEzN2JiZDE3ZTY4MmY3ZGQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNs
dWRlICJEcmFnSW1hZ2UuaCIKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDggKzQ3
LDggQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2RuZC5odG1sI2RyYWctZGF0YS1zdG9yZS1tb2RlCiAgICAgZW51bSBjbGFzcyBTdG9yZU1v
ZGUgeyBJbnZhbGlkLCBSZWFkV3JpdGUsIFJlYWRvbmx5LCBQcm90ZWN0ZWQgfTsKIAotICAgIHN0
YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JDb3B5QW5kUGFzdGUoRG9jdW1lbnQmLCBT
dG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmKTsKLSAgICBzdGF0aWMgUmVm
PERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHBsYWluVGV4
dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCk7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+
IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShjb25zdCBEb2N1bWVudCYsIFN0b3JlTW9kZSwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBj
cmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBwbGFpblRl
eHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkRhdGFU
cmFuc2ZlcigpOwogCkBAIC04NiwxMCArODcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY29tbWl0
VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0g
ICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoKTsKLSAgICBzdGF0aWMg
UmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoRG9jdW1lbnQmKTsKLSAg
ICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChEb2N1bWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmls
ZXMpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BU
YXJnZXQoRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJh
dGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4g
Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5z
ZmVyPiBjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYpOworICAgIHN0YXRp
YyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxl
cyk7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRh
cmdldChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFn
T3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwogCiAgICAgYm9vbCBkcm9wRWZmZWN0SXNV
bmluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9kcm9wRWZmZWN0ID09ICJ1bmluaXRpYWxp
emVkIjsgfQogCkBAIC0xMTIsNyArMTEzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGVu
dW0gY2xhc3MgVHlwZSB7IENvcHlBbmRQYXN0ZSwgRHJhZ0FuZERyb3BEYXRhLCBEcmFnQW5kRHJv
cEZpbGVzLCBJbnB1dEV2ZW50IH07Ci0gICAgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZSwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0gVHlwZTo6Q29weUFuZFBhc3RlKTsKKyAgICBE
YXRhVHJhbnNmZXIoY29uc3QgRG9jdW1lbnQmLCBTdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiwgVHlwZSA9IFR5cGU6OkNvcHlBbmRQYXN0ZSk7CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogICAgIGJvb2wgZm9yRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBU
eXBlOjpEcmFnQW5kRHJvcERhdGEgfHwgbV90eXBlID09IFR5cGU6OkRyYWdBbmREcm9wRmlsZXM7
IH0KQEAgLTEyOSw2ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVz
KEFkZEZpbGVzVHlwZSkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXNGcm9tUGFz
dGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3Q7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Np
b25JRDsKICAgICBTdHJpbmcgbV9vcmlnaW5JZGVudGlmaWVyOwogICAgIFN0b3JlTW9kZSBtX3N0
b3JlTW9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYTdkMDEyNjgwZTI5Yzk2YTIxOTJiODQwMWY2OWU3
Y2RjYTQxZTc1OC4uZDE3ZmYyY2ZlYzE4NzhlNjdjNTgxMDc5MjgwYjQ5MWI4ODU5M2U1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NzI4LDcgKzU3MjgsNyBAQCBib29sIERvY3VtZW50
Ojppc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKCkgY29uc3QKIAogI2VuZGlmCiAKLVN0
cmluZyBEb2N1bWVudDo6b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKQorU3RyaW5nIERv
Y3VtZW50OjpvcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpIGNvbnN0CiB7CiAgICAgYXV0
byBvcmlnaW4gPSBzZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7CiAgICAgaWYgKG9yaWdpbiAh
PSAibnVsbCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDM0OTEzYzU3Y2JmNWMxOGMyMmEyMWRj
ZDc2MjdlZGNjMGU3NGUwNTAuLmY5N2RiZTc1MWJkNTA0MzYyNzNjMDc4ZjcwZWVhMTViNjVjNzYy
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbmNET01UcmVlVmVyc2lvbigpIHsgbV9kb21UcmVlVmVyc2lvbiA9ICsrc19nbG9i
YWxUcmVlVmVyc2lvbjsgfQogICAgIHVpbnQ2NF90IGRvbVRyZWVWZXJzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb21UcmVlVmVyc2lvbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IG9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCkgY29uc3Q7CiAKICAgICAvLyBYUGF0aEV2
YWx1YXRvciBtZXRob2RzCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFhQYXRo
RXhwcmVzc2lvbj4+IGNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBS
ZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiYmKTsKQEAgLTE2ODgsNyArMTY4OCw3IEBAIHByaXZhdGU6
CiAgICAgdWludDY0X3QgbV9kb21UcmVlVmVyc2lvbjsKICAgICBzdGF0aWMgdWludDY0X3Qgc19n
bG9iYWxUcmVlVmVyc2lvbjsKIAotICAgIFN0cmluZyBtX3VuaXF1ZUlkZW50aWZpZXI7CisgICAg
bXV0YWJsZSBTdHJpbmcgbV91bmlxdWVJZGVudGlmaWVyOwogCiAgICAgSGFzaFNldDxOb2RlSXRl
cmF0b3IqPiBtX25vZGVJdGVyYXRvcnM7CiAgICAgSGFzaFNldDxSYW5nZSo+IG1fcmFuZ2VzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENv
bW1hbmQuY3BwCmluZGV4IDA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIxNGQzM2RjZThkODgwMGYu
LjUyYjY5YTU3MmE2NTY5MDg3YzkzYTJhMThjZDMyNTAyMjlmNmFmMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAK
QEAgLTgyLDcgKzgyLDcgQEAgU3RyaW5nIFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6aW5w
dXRFdmVudERhdGEoKSBjb25zdAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0
aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKIHsKICAgICBpZiAo
IWlzRWRpdGluZ1RleHRBcmVhT3JUZXh0SW5wdXQoKSkKLSAgICAgICAgcmV0dXJuIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChtX3RleHQsIHNlcmlhbGl6ZUZyYWdtZW50KCptX3Rl
eHRGcmFnbWVudCwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSkpOworICAg
ICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGRvY3VtZW50KCks
IG1fdGV4dCwgc2VyaWFsaXplRnJhZ21lbnQoKm1fdGV4dEZyYWdtZW50LCBTZXJpYWxpemVkTm9k
ZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKSk7CiAKICAgICByZXR1cm4gQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggZTgwZGVjMDVmNTA0
MTBmZWEwZWY1ZDk1MWQ3YjA0ZjMzM2EyMTIxYy4uMGRkYzE1YmRjMGQzMDRmNDU0M2EwNTk2MmJj
NmNjNzY0NWY1NDc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTEzMjYsNyArMTMyNiw3IEBAIFJlZlB0cjxEYXRhVHJh
bnNmZXI+IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkg
Y29uc3QKICAgICBpZiAoaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQogICAgICAgICBy
ZXR1cm4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKTsKIAot
ICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQobV9kb2N1bWVudEZy
YWdtZW50UGxhaW5UZXh0LCBtX2RvY3VtZW50RnJhZ21lbnRIVE1MTWFya3VwKTsKKyAgICByZXR1
cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGRvY3VtZW50KCksIG1fZG9jdW1l
bnRGcmFnbWVudFBsYWluVGV4dCwgbV9kb2N1bWVudEZyYWdtZW50SFRNTE1hcmt1cCk7CiB9CiAK
IGJvb2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZFJlbW92ZUVuZEJSKE5vZGUqIGVu
ZEJSLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsVmlzUG9zQmVmb3JlRW5kQlIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA3ZGIzZjliNDVkOGIzZjc2NzZlMzBmOTdlMDc2YTVlYTk4MzgyMzdlLi4zNzE4
YWE0OTFlZDY2YWI4M2ZiODFkN2I0YmY5MzA3ZGRmNDVmNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTEzMCw3
ICsxMzAsNyBAQCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogewog
ICAgIGlmICghaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQotICAgICAgICByZXR1cm4g
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KG1fY29ycmVjdGlvbiwgc2VyaWFsaXpl
RnJhZ21lbnQoKm1fY29ycmVjdGlvbkZyYWdtZW50LCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJ
bmNsdWRpbmdOb2RlKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklu
cHV0RXZlbnQoZG9jdW1lbnQoKSwgbV9jb3JyZWN0aW9uLCBzZXJpYWxpemVGcmFnbWVudCgqbV9j
b3JyZWN0aW9uRnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUp
KTsKIAogICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFu
c2ZlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXgg
MDFmNTNkYmEwM2JlYWM3OTdkNzZhYThhZTU2NmQyZmQxMjVjODIzZC4uZjM1ODc0MzIwYjE5MDUz
ZTEwMDZkYmU2ZWY2NmU3N2ZmMzMxYWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCkBAIC00MjUsNyArNDI1LDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gVHlw
aW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CiAKICAgICBTdHJpbmdC
dWlsZGVyIGh0bWxUZXh0OwogICAgIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDaGFyYWN0ZXJz
UmVwbGFjaW5nRW50aXRpZXMoaHRtbFRleHQsIG1fY3VycmVudFRleHRUb0luc2VydCwgMCwgbV9j
dXJyZW50VGV4dFRvSW5zZXJ0Lmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5IVE1MUENEQVRBKTsKLSAg
ICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KG1fY3VycmVudFRleHRU
b0luc2VydCwgaHRtbFRleHQudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9ySW5wdXRFdmVudChkb2N1bWVudCgpLCBtX2N1cnJlbnRUZXh0VG9JbnNlcnQsIGh0
bWxUZXh0LnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRpZEFwcGx5Q29t
bWFuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5jcHAKaW5kZXggZjY4YTAwZWZhZTdhN2JiNDk1ODlkMGZmZTI3MzFiYmU2
ZTg0MmIwYy4uNjRkZTkxZDNlNmE4NTQ4YTUzNmRkOWE5NDMxYmNlOTJmODRlZGU2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6
fldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsKIAogdm9pZCBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogewotICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoZmlsZW5hbWUpKTsKKyAgICBmaWxl
cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNlc3Npb25JRCwgZmlsZW5hbWUpKTsKIH0KIAogdm9pZCBX
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCks
IHR5cGUpLCBmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6
Y3JlYXRlKHNlc3Npb25JRCwgYnVmZmVyLmdldCgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyLmgKaW5kZXggZmU0NDc2YmZmMmZiNDYwNTA2YTM3OWI5NDdlMTRlZTBhOGYwMTY1YS4u
ZmFlOWIwNTFhYzQyNGNjZWEzMmNlZDY5YzE5ZjVkY2VjODNmODk3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC0z
MiwxMSArMzIsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmlsZTsKIAogc3RydWN0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVy
IHsKKyAgICBleHBsaWNpdCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQorICAgICAgICA6IHNlc3Npb25JRChzZXNzaW9uSUQpCisgICAgeworICAg
IH0KKwogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVh
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOwogCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgIFZlY3RvcjxS
ZWY8RmlsZT4+IGZpbGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA3MTU5Y2Q5MjM4NTE0MmUxMjkz
ZjUwZmFkN2ViY2ExZWMzMzQ1NzM0Li5hMTMxMzA3MTRjZDMzMGE2NjhkZDhlMGNiZmQ3Njc2MzNl
ODg4ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBSZWY8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1l
LCBEb2N1CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCBjb250ZW50VHlwZSwgZGVm
YXVsdEltYWdlQXR0YWNobWVudE5hbWUsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGlmIChj
b250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGNvbnRlbnRU
eXBlKSkgewogICAgICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRv
Y3VtZW50LCBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSkpKTsKKyAgICAg
ICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0
ZShkb2N1bWVudC5zZXNzaW9uSUQoKSwgYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSkpKTsKICAg
ICAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQp
KTsKICAgICAgICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgICAg
IGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lk
dGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTI3
MSw3ICsyNzEsNyBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICAgICAgZnJhZ21l
bnQtPmFwcGVuZENoaWxkKFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxvYjo6Y3Jl
YXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFt
ZSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7
CisgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShk
b2N1bWVudC5zZXNzaW9uSUQoKSwgYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSksIGRlZmF1bHRJ
bWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5
QXR0cmlidXRlczo6WWVzKTsKICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUo
YXR0YWNobWVudCkpOwogICAgIH0KICAgICByZXR1cm4gZnJhZ21lbnQ7CkBAIC0zNjUsNyArMzY1
LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHN1cHBvcnRzQ2xpZW50
U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgewogICAgICAgICAgICAgaWYgKGlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KG9yaWdpbmFsRWxlbWVudC5nZXQoKSkgJiYgY29udGVudFR5cGVJc1N1aXRhYmxl
Rm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihpbmZvLmNvbnRlbnRUeXBlKSkgewogICAgICAg
ICAgICAgICAgIGF1dG8mIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4ob3JpZ2lu
YWxFbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShpbmZvLmRhdGEsIGluZm8uY29u
dGVudFR5cGUpKSk7CisgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJM
KCpmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNz
aW9uSUQoKSwgaW5mby5kYXRhLCBpbmZvLmNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAgICAg
IGltYWdlLnNldEF0dGFjaG1lbnRFbGVtZW50KGF0dGFjaG1lbnQuY29weVJlZigpKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmli
dXRlcyhpbmZvLmRhdGEtPnNpemUoKSwgaW5mby5jb250ZW50VHlwZSwgaW5mby5maWxlTmFtZSk7
CkBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGluZm8uY29u
dGVudFR5cGUpLCBXVEZNb3ZlKGluZm8uZmlsZU5hbWUpLCBXVEZNb3ZlKGluZm8uZGF0YSkpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpj
cmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoaW5mby5kYXRhKSwgV1RGTW92ZShpbmZvLmNvbnRl
bnRUeXBlKSksIFdURk1vdmUoaW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICAgICAgYXR0YWNobWVudC0+
c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGZyYWdtZW50LmRvY3VtZW50KCkuc2Vz
c2lvbklEKCksIFdURk1vdmUoaW5mby5kYXRhKSwgV1RGTW92ZShpbmZvLmNvbnRlbnRUeXBlKSks
IFdURk1vdmUoaW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURp
c3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwogICAgICAgICAgICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQo
V1RGTW92ZShhdHRhY2htZW50KSwgV1RGTW92ZShvcmlnaW5hbEVsZW1lbnQpKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTQxNSw3ICs0MTUsNyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0ZQogCiAg
ICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBibG9iVVJMTWFwOwogICAgIGZvciAo
Y29uc3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNv
dXJjZXMucmVzb3VyY2VzKSB7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShzdWJy
ZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CisgICAgICAgIGF1dG8g
YmxvYiA9IEJsb2I6OmNyZWF0ZShkb2N1bWVudC5zZXNzaW9uSUQoKSwgc3VicmVzb3VyY2UtPmRh
dGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcgYmxvYlVSTCA9
IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVS
TE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmluZygpLCBibG9iVVJMKTsKICAgICB9CkBA
IC00NjQsNyArNDY0LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgYXV0byYg
c3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIGlmICghc2hvdWxk
UmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVzb3VyY2UtPmRhdGEo
KSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoZGVzdGluYXRpb25Eb2N1bWVudC5zZXNzaW9uSUQoKSwgc3VicmVzb3VyY2UtPmRhdGEo
KSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0aW9uRG9jdW1lbnQsIGJsb2IpOwogICAgICAg
ICBibG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZVVSTC5zdHJpbmcoKSwgYmxvYlVSTCk7CiAgICAg
fQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBibG9iQnVmZmVyOwogICAgICAgICBibG9iQnVmZmVyLnJlc2VydmVDYXBh
Y2l0eSh1dGY4Lmxlbmd0aCgpKTsKICAgICAgICAgYmxvYkJ1ZmZlci5hcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKLSAg
ICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkJ1ZmZlciksIHR5cGUp
OworICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoZGVzdGluYXRpb25Eb2N1bWVudC5z
ZXNzaW9uSUQoKSwgV1RGTW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CiAKICAgICAgICAgU3RyaW5n
IHN1YmZyYW1lQmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0aW9uRG9j
dW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJmcmFtZVVSTC5zdHJpbmco
KSwgc3ViZnJhbWVCbG9iVVJMKTsKQEAgLTY4OCw3ICs2ODgsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiB0eXBlLAogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMo
KSkKICAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQo
ZnJhbWUsIGRvY3VtZW50LCBXVEZNb3ZlKGJ1ZmZlciksIHR5cGUsIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpKTsKICAgICBlbHNlCi0gICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50
Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50
LCBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpKTsKKyAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVS
TChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0
ZShkb2N1bWVudC5zZXNzaW9uSUQoKSwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KQEAgLTcwOSw3ICs3
MDksNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJh
bWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VS
ZWYoKmZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwog
ICAgIGlmICghc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAg
ICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2ht
ZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShkb2N1bWVudC0+c2Vzc2lvbklEKCksIHBhdGgpLCBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwogICAg
ICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTczNiw3ICs3MzYsNyBAQCBzdGF0
aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1lLCBj
b25zdCBTdHJpbmcmIHBhdGgsCiAKICAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5s
aW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50VHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFn
ZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGltYWdlLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9N
VVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShwYXRoKSkpOworICAg
ICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUo
ZG9jdW1lbnQtPnNlc3Npb25JRCgpLCBwYXRoKSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNo
bWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlmIChwcmVmZXJyZWRT
aXplLndpZHRoKQogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcigqcHJlZmVy
cmVkU2l6ZS53aWR0aCkpOwpAQCAtNzY1LDcgKzc2NSw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvCiAgICAgICAgIGZpbGVOYW1lID0gbmFtZTsKIAogICAgIGlmICghc3VwcG9ydHNDbGllbnRT
aWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUo
RmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUp
KSwgZmlsZU5hbWUpKTsKKyAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUo
QmxvYjo6Y3JlYXRlKGRvY3VtZW50LT5zZXNzaW9uSUQoKSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFj
aG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CiAgICAgICAgIHJldHVybiBhdHRhY2htZW50OwogICAg
IH0KIApAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1l
bnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAKICAgICBp
ZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihhdHRh
Y2htZW50VHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1l
bnRUeXBlKSksIFdURk1vdmUoZmlsZU5hbWUpKSkpOworICAgICAgICBpbWFnZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3Jl
YXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGRvY3VtZW50
LT5zZXNzaW9uSUQoKSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIFdURk1vdmUo
ZmlsZU5hbWUpKSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92
ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQogICAgICAg
ICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVz
Ojp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKaW5kZXggNzA2ZTgyNjczZjA4
MTMzMzczNWU1ODcxMjc4YzhkNDUwZDBiNjliYy4uN2FmZjE3YjVjMTllMWM5ZTE0ZmI4NzkxMWQ4
N2NmNTU4M2VjN2EwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRp
dG9yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoUGFzdGVib2FyZCYgcGFzCiAgICAgICAgICAgICBy
ZXR1cm4gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7CiAgICAgICAgIH0sICZidWZmZXIpOwogICAgICAg
ICBpZiAoc3RhdHVzID09IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7Ci0gICAgICAgICAgICBhdXRv
IGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKS0+c2Vzc2lv
bklEKCksIFdURk1vdmUoYnVmZmVyKSwgImltYWdlL3BuZyIpOwogICAgICAgICAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoKmZyYW1lLmRvY3VtZW50
KCksIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKCpmcmFtZS5kb2N1bWVudCgpLCBibG9iKSwgeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAyMDNjYzQ3YWE2ZDZmNTQxNDg3ZjU0
YTQ2Njk4MzJmM2I1ZGY1NzVlLi5mYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2EyY2FlNjg0Yjlj
MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05ODMsOSArOTgzLDkgQEAgc3Rh
dGljIHZvaWQgcmVzdG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoRG9jdW1lbnRGcmFn
bWVudCYgZnJhZ21lbnQpCiAgICAgICAgIGF1dG8gYXR0YWNobWVudFBhdGggPSBhdHRhY2htZW50
LT5hdHRhY2htZW50UGF0aCgpOwogICAgICAgICBhdXRvIGJsb2JVUkwgPSBhdHRhY2htZW50LT5i
bG9iVVJMKCk7CiAgICAgICAgIGlmICghYXR0YWNobWVudFBhdGguaXNFbXB0eSgpKQotICAgICAg
ICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoYXR0YWNobWVudFBhdGgpKTsK
KyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGZyYWdtZW50LmRv
Y3VtZW50KCkuc2Vzc2lvbklEKCksIGF0dGFjaG1lbnRQYXRoKSk7CiAgICAgICAgIGVsc2UgaWYg
KCFibG9iVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6ZGVzZXJpYWxpemUoeyB9LCBibG9iVVJMLCBhdHRhY2htZW50LT5hdHRhY2htZW50VHlwZSgp
LCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUoKSkpOworICAgICAgICAgICAgYXR0YWNobWVu
dC0+c2V0RmlsZShGaWxlOjpkZXNlcmlhbGl6ZShmcmFnbWVudC5kb2N1bWVudCgpLnNlc3Npb25J
RCgpLCB7IH0sIGJsb2JVUkwsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1l
bnQtPmF0dGFjaG1lbnRUaXRsZSgpKSk7CiAKICAgICAgICAgLy8gUmVtb3ZlIHRlbXBvcmFyeSBh
dHRyaWJ1dGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGFkZGVkIGluIFN0eWxlZE1hcmt1cEFjY3Vt
dWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVzLgogICAgICAgICBhdHRhY2htZW50LT5yZW1v
dmVBdHRyaWJ1dGUod2Via2l0YXR0YWNobWVudGlkQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNw
cAppbmRleCA0N2I0MzljODVjOGY5MTgwZTEwNTFhOTVhZDE1NDUxNTIxMWM4MzZmLi40NjRjMTM3
MmIwZjM3Nzc3NTFjYWQzMzliYTJlZDdhYTU0NmQ4NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKQEAgLTcyLDE5ICs3MiwyMiBAQCBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdp
c3RyeSgpCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1CbG9iOjpCbG9iKFVuaW5pdGlhbGl6
ZWRDb250cnVjdG9yKQorQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogfQog
Ci1CbG9iOjpCbG9iKCkKLSAgICA6IG1fc2l6ZSgwKQorQmxvYjo6QmxvYihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX3NpemUo
MCkKIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsK
ICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVS
TCwgeyB9LCAgeyB9KTsKIH0KIAotQmxvYjo6QmxvYihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYm
IGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCi0g
ICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCitCbG9iOjpC
bG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBi
bG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAg
IDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpj
cmVhdGVJbnRlcm5hbFVSTCgpKQogICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZShw
cm9wZXJ0eUJhZy50eXBlKSkKICAgICAsIG1fc2l6ZSgtMSkKIHsKQEAgLTEwMCw4ICsxMDMsOSBA
QCBCbG9iOjpCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywg
Y29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcgogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7
CiB9CiAKLUJsb2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5cGUoY29udGVudFR5cGUpCitCbG9iOjpCbG9iKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAg
LCBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoYnVmZmVyLnNpemUoKSkKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKQEAgLTExMyw4ICsxMTcsOSBAQCBCbG9iOjpCbG9iKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBX
VEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAotQmxvYjo6QmxvYihWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAgIDogbV90eXBl
KGNvbnRlbnRUeXBlKQorQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgOiBtX3Nl
c3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3Np
emUoZGF0YS5zaXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CkBAIC0x
MjQsMTUgKzEyOSwxNyBAQCBCbG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCiB9CiAKIEJsb2I6OkJsb2IoUmVmZXJlbmNpbmdFeGlzdGlu
Z0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYgYmxvYikKLSAgICA6IG1faW50ZXJuYWxVUkwo
QmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKKyAgICA6IG1fc2Vzc2lvbklEKGJsb2IubV9z
ZXNzaW9uSUQpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCkpCiAgICAgLCBtX3R5cGUoYmxvYi50eXBlKCkpCiAgICAgLCBtX3NpemUoYmxvYi5zaXplKCkp
CiB7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIHsgQmxvYlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJs
b2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgp
Ci0gICAgOiBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQorQmxvYjo6QmxvYihE
ZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoKQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAg
ICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXpl
KQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwpA
QCAtMTQyLDggKzE0OSw5IEBAIEJsb2I6OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwg
Y29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uCiAgICAgICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1f
aW50ZXJuYWxVUkwsIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1fdHlwZSk7CiB9CiAKLUJsb2I6
OkJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwg
Y29uc3QgU3RyaW5nJiB0eXBlKQotICAgIDogbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0
eXBlKSkKK0Jsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUp
CisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX3R5cGUobm9ybWFsaXplZENv
bnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKC0xKSAvLyBzaXplIGlzIG5vdCBuZWNlc3Nh
cmlseSBlcXVhbCB0byBlbmQgLSBzdGFydC4KIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVS
TDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggY2RjODg5NWY5
NmUwMWUyYzU0MGQ5NzYwYTM5YzkzMGM4OGEwMjFlYy4uZTYzNmYyZDJkZmNlN2M0MGExOTNhMzE5
MTk2MzIwMzA4ZTcyYTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTMyLDEwICszMiwxMiBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCbG9iUHJvcGVydHlCYWcuaCIKKyNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJVUkxSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU0LDMwICs1NiwzMCBAQCB1
c2luZyBCbG9iUGFydFZhcmlhbnQgPSBWYXJpYW50PFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmll
dz4sIFJlZlB0cjxKU0M6OkFycmF5QgogY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4gewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKEJsb2IsIFdFQkNPUkVfRVhQT1JUKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxCbG9i
PiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQmxvYik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2Io
c2Vzc2lvbklEKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9y
PEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlC
YWcmIHByb3BlcnR5QmFnKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRW
YXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwg
cHJvcGVydHlCYWcpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihjb250ZXh0
LnNlc3Npb25JRCgpLCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIHN0YXRpYyBSZWY8QmxvYj4g
Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCbG9iKGJ1ZmZlciwgY29udGVudFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQmxvYihzZXNzaW9uSUQsIGJ1ZmZlciwgY29udGVudFR5cGUpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJs
b2IoV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmxvYihzZXNzaW9uSUQsIFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFj
a2VkUGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGRlc2VyaWFsaXplKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBs
b25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCiAgICAgewogICAgICAgICBB
U1NFUlQoQmxvYjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpOwotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHNyY1VSTCwg
dHlwZSwgc2l6ZSwgZmlsZUJhY2tlZFBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBzZXNzaW9uSUQsIHNyY1VSTCwgdHlw
ZSwgc2l6ZSwgZmlsZUJhY2tlZFBhdGgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5CbG9iKCk7
CkBAIC0xMDIsMjcgKzEwNCwyOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8QmxvYj4gc2xpY2UobG9u
ZyBsb25nIHN0YXJ0ID0gMCwgbG9uZyBsb25nIGVuZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8bG9u
ZyBsb25nPjo6bWF4KCksIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBTdHJpbmcoKSkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IobV9pbnRlcm5hbFVS
TCwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmxvYihtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5
cGUpKTsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBCbG9iKCk7Ci0g
ICAgQmxvYihWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcm
KTsKLSAgICBCbG9iKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwotICAgIEJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2IoUEFMOjpTZXNzaW9uSUQpOwor
ICAgIEJsb2IoUEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0
IEJsb2JQcm9wZXJ0eUJhZyYpOworICAgIEJsb2IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIEJsb2IoUEFMOjpTZXNz
aW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAog
ICAgIGVudW0gUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5n
RXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgfTsKICAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdC
bG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0aWFsaXplZENv
bnRydWN0b3IgeyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2IoVW5pbml0aWFs
aXplZENvbnRydWN0b3IpOworICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFBBTDo6
U2Vzc2lvbklEKTsKIAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB7IGRlc2Vy
aWFsaXphdGlvbkNvbnRydWN0b3IgfTsKLSAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0
b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKKyAgICBCbG9iKERlc2VyaWFsaXphdGlv
bkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7
CiAKICAgICAvLyBGb3Igc2xpY2luZy4KLSAgICBCbG9iKGNvbnN0IFVSTCYgc3JjVVJMLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwor
ICAgIEJsb2IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCisgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgLy8gVGhpcyBpcyBhbiBpbnRlcm5hbCBVUkwg
cmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LiBJ
dCBzZXJ2ZXMKICAgICAvLyBhcyBhbiBpZGVudGlmaWVyIGZvciB0aGlzIGJsb2IuIFRoZSBpbnRl
cm5hbCBVUkwgaXMgbmV2ZXIgdXNlZCB0byBzb3VyY2UgdGhlIGJsb2IncyBjb250ZW50CiAgICAg
Ly8gaW50byBhbiBIVE1MIG9yIGZvciBGaWxlUmVhZCdpbmcsIHB1YmxpYyBibG9iIFVSTHMgbXVz
dCBiZSB1c2VkIGZvciB0aG9zZSBwdXJwb3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsCmluZGV4
IDY5ZDBmMTU1YWQ0Nzk4ZDdlNjZiNDA4ZDJkYmVjNjgyMGM2ZWRkZWIuLmFlNTUyYTk1NmYzNTNj
MGU0MmNhMmQ1MTU3ZjU1NDA0MWU1MWE1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbApAQCAt
MzUsNiArMzUsNyBAQCB0eXBlZGVmIChCdWZmZXJTb3VyY2Ugb3IgQmxvYiBvciBVU1ZTdHJpbmcp
IEJsb2JQYXJ0OwogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbCwKICAgICBDdXN0b21Ub0pT
T2JqZWN0LAogICAgIENvbnN0cnVjdG9yKG9wdGlvbmFsIHNlcXVlbmNlPEJsb2JQYXJ0PiBibG9i
UGFydHMsIG9wdGlvbmFsIEJsb2JQcm9wZXJ0eUJhZyBvcHRpb25zKSwKKyAgICBDb25zdHJ1Y3Rv
ckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiBdIGludGVyZmFjZSBCbG9iIHsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXgg
MTgzZGE3YTBlMDQ2ZjJjMzkxZWViZjY0NDE1ZTZjNjY2OTQxOTc5My4uZWI1YjZhMTc2NzhhMzRk
YTNjMGM2YWViOWY4YzViZWY0ZWQwYWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0z
OSwxNSArMzksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoRmlsZSk7CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCitSZWY8Rmls
ZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCiB7Ci0gICAg
YXV0byBmaWxlID0gRmlsZTo6Y3JlYXRlKHBhdGgpOworICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNy
ZWF0ZShzZXNzaW9uSUQsIHBhdGgpOwogICAgIGZpbGUtPnNldFJlbGF0aXZlUGF0aChyZWxhdGl2
ZVBhdGgpOwogICAgIHJldHVybiBmaWxlOwogfQogCi1GaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKLSAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IpCitGaWxlOjpGaWxlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIDogQmxvYih1
bmluaXRpYWxpemVkQ29udHJ1Y3Rvciwgc2Vzc2lvbklEKQogICAgICwgbV9wYXRoKHBhdGgpCiB7
CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CkBAIC01
Niw4ICs1Niw4IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwobV9pbnRlcm5hbFVSTCwgcGF0aCwg
bV90eXBlKTsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZU92ZXJyaWRlKQotICAgIDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1Y3RvcikKK0Zp
bGU6OkZpbGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQorICAgIDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1
Y3Rvciwgc2Vzc2lvbklEKQogICAgICwgbV9wYXRoKHBhdGgpCiB7CiAgICAgbV9pbnRlcm5hbFVS
TCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CkBAIC02Niw4ICs2Niw4IEBAIEZpbGU6
OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKICAg
ICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKG1faW50ZXJuYWxV
UkwsIHBhdGgsIG1fdHlwZSk7CiB9CiAKLUZpbGU6OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1
Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9k
aWZpZWQpCi0gICAgOiBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHVybCwgdHlwZSwg
LTEsIHBhdGgpCitGaWxlOjpGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0
X3Q+JiBsYXN0TW9kaWZpZWQpCisgICAgOiBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3Is
IHNlc3Npb25JRCwgdXJsLCB0eXBlLCAtMSwgcGF0aCkKICAgICAsIG1fcGF0aChwYXRoKQogICAg
ICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2xhc3RNb2RpZmllZERhdGVPdmVycmlkZShsYXN0TW9k
aWZpZWQpCkBAIC04MSw4ICs4MSw4IEBAIHN0YXRpYyBCbG9iUHJvcGVydHlCYWcgY29udmVydFBy
b3BlcnR5QmFnKGNvbnN0IEZpbGU6OlByb3BlcnR5QmFnJiBpbml0aWFsQmFnKQogICAgIHJldHVy
biBiYWc7CiB9CiAKLUZpbGU6OkZpbGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFy
dFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJv
cGVydHlCYWcpCi0gICAgOiBCbG9iKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGNvbnZlcnRQ
cm9wZXJ0eUJhZyhwcm9wZXJ0eUJhZykpCitGaWxlOjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQor
ICAgIDogQmxvYihjb250ZXh0LnNlc3Npb25JRCgpLCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMp
LCBjb252ZXJ0UHJvcGVydHlCYWcocHJvcGVydHlCYWcpKQogICAgICwgbV9uYW1lKGZpbGVuYW1l
KQogICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlm
aWVkLnZhbHVlT3IoV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNv
bmRzKCkpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBiMjliMDhhODg3OTU4ZWQ3NDYxYWFj
MTQ5ZmYyNjM4YmNkMzUxYzRjLi5jYjhhNTA3YmYzZGY2NmQzYjhiM2Y0NThjYjc1NmJjZDQxZjNk
ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDEsMjggKzQxLDI4IEBAIHB1YmxpYzoKICAg
ICAgICAgT3B0aW9uYWw8aW50NjRfdD4gbGFzdE1vZGlmaWVkOwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgc3RhdGljIFJlZjxG
aWxlPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKHBhdGgpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShzZXNzaW9uSUQsIHBhdGgpKTsKICAgICB9CiAK
ICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZpbGUnIGNvbnN0cnVjdG9yLgot
ICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxv
YlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcm
IHByb3BlcnR5QmFnKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJp
YW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5
QmFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGJs
b2JQYXJ0VmFyaWFudHMpLCBmaWxlbmFtZSwgcHJvcGVydHlCYWcpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRmlsZShjb250ZXh0LCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBm
aWxlbmFtZSwgcHJvcGVydHlCYWcpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEZpbGU+IGRl
c2VyaWFsaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYg
bGFzdE1vZGlmaWVkID0gV1RGOjpudWxsb3B0KQorICAgIHN0YXRpYyBSZWY8RmlsZT4gZGVzZXJp
YWxpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IFdURjo6bnVsbG9wdCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1
Y3RvciwgcGF0aCwgc3JjVVJMLCB0eXBlLCBuYW1lLCBsYXN0TW9kaWZpZWQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBzZXNz
aW9uSUQsIHBhdGgsIHNyY1VSTCwgdHlwZSwgbmFtZSwgbGFzdE1vZGlmaWVkKSk7CiAgICAgfQog
CiAgICAgLy8gQ3JlYXRlIGEgZmlsZSB3aXRoIGEgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3Ig
KHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVy
cyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhlIHBhdGguCi0gICAgc3RhdGljIFJlZjxGaWxl
PiBjcmVhdGVXaXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92
ZXJyaWRlKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aE5hbWUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJy
aWRlKQogICAgIHsKICAgICAgICAgaWYgKG5hbWVPdmVycmlkZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKHBhdGgpKTsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUpKTsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZpbGUoc2Vzc2lvbklELCBwYXRoKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZpbGUoc2Vzc2lvbklELCBwYXRoLCBuYW1lT3ZlcnJpZGUpKTsKICAgICB9
CiAKICAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBCbG9iJiBibG9iLCBjb25zdCBT
dHJpbmcmIG5hbWUpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmlsZShmaWxlLCBuYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxG
aWxlPiBjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiByZWxhdGl2ZVBhdGgpOworICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aFJlbGF0
aXZlUGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IHJlbGF0aXZlUGF0aCk7CiAKICAgICBib29sIGlzRmlsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIApAQCAtOTUsMTMgKzk1LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzRGly
ZWN0b3J5KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwotICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSk7Ci0gICAgRmlsZShWZWN0b3I8QmxvYlBhcnRWYXJp
YW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFBy
b3BlcnR5QmFnJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRmlsZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBGaWxlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKTsKKyAgICBGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0
VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJik7CiAg
ICAgRmlsZShjb25zdCBCbG9iJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBGaWxlKGNvbnN0
IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgRmlsZShEZXNlcmlhbGl6YXRpb25D
b250cnVjdG9yLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4m
IGxhc3RNb2RpZmllZCk7CisgICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+
JiBsYXN0TW9kaWZpZWQpOwogCiAgICAgc3RhdGljIHZvaWQgY29tcHV0ZU5hbWVBbmRDb250ZW50
VHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJp
bmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29udGVudFR5cGUpOwogI2lmIEVO
QUJMRShGSUxFX1JFUExBQ0VNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKaW5kZXggNGNmNTQ3
ZTFjMzZjOTRmYzU3NmE4MTFlMjA3NTNjMTU2ZDIwOWFlNC4uYmY3NmRjZGY0MDA0MjY3MzMxMDNj
MjFjM2VkZjcwNDVmZDUwNGU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRsCkBAIC0yOCw2ICsy
OCw3IEBAIHR5cGVkZWYgKEJ1ZmZlclNvdXJjZSBvciBCbG9iIG9yIFVTVlN0cmluZykgQmxvYlBh
cnQ7CiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZXhwb3NlZCBvbiBXb3JrZXJzIGFzIHdlbGwu
CiBbCiAgICAgQ29uc3RydWN0b3Ioc2VxdWVuY2U8QmxvYlBhcnQ+IGZpbGVCaXRzLCBVU1ZTdHJp
bmcgZmlsZU5hbWUsIG9wdGlvbmFsIEZpbGVQcm9wZXJ0eUJhZyBvcHRpb25zKSwKKyAgICBDb25z
dHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3NlZD0oV2luZG93KSwKICAgICBKU0dlbmVyYXRlVG9K
U09iamVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGFmYzI1ODgz
OTEyMjczOGQ3NmYwNGY2YjkwYWNjYTkxN2YxYzM5MmQuLjdhOTkxZjE3YjAzZDgzZTkwNWY3ZDNl
MDYwN2JmNTJhOTliODBlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApA
QCAtMTc1LDcgKzE3NSw3IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRE9N
Rm9ybURhdGEmIGZvcm1EYXRhLCBib29sIG11bHRpcGFydCkgY29uc3QKICAgICAvLyBJZiBubyBm
aWxlbmFtZSBhdCBhbGwgaXMgZW50ZXJlZCwgcmV0dXJuIHN1Y2Nlc3NmdWwgYnV0IGVtcHR5Lgog
ICAgIC8vIE51bGwgd291bGQgYmUgbW9yZSBsb2dpY2FsLCBidXQgTmV0c2NhcGUgcG9zdHMgYW4g
ZW1wdHkgZmlsZS4gQXJnaC4KICAgICBpZiAoZmlsZUxpc3QtPmlzRW1wdHkoKSkgewotICAgICAg
ICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpKTsKKyAg
ICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0ZShlbGVtZW50KCktPmRvY3Vt
ZW50KCkuc2Vzc2lvbklEKCksIGVtcHR5U3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0No
b3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogCiAg
ICAgYXV0byBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgPSBhbGxvd3NEaXJlY3RvcmllcygpID8g
RmlsZUxpc3RDcmVhdG9yOjpTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyA6IEZpbGVMaXN0
Q3JlYXRvcjo6U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpObzsKICAgICBhdXRvIHNob3VsZFJl
cXVlc3RJY29uID0gaWNvbiA/IFJlcXVlc3RJY29uOjpZZXMgOiBSZXF1ZXN0SWNvbjo6Tm87Ci0g
ICAgbV9maWxlTGlzdENyZWF0b3IgPSBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShwYXRocywgc2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBbdGhpcywgc2hvdWxkUmVxdWVzdEljb25dKFJlZjxGaWxl
TGlzdD4mJiBmaWxlTGlzdCkgeworICAgIG1fZmlsZUxpc3RDcmVhdG9yID0gRmlsZUxpc3RDcmVh
dG9yOjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBwYXRocywgc2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBbdGhpcywgc2hvdWxkUmVxdWVzdEljb25dKFJlZjxGaWxl
TGlzdD4mJiBmaWxlTGlzdCkgewogICAgICAgICBzZXRGaWxlcyhXVEZNb3ZlKGZpbGVMaXN0KSwg
c2hvdWxkUmVxdWVzdEljb24pOwogICAgICAgICBtX2ZpbGVMaXN0Q3JlYXRvciA9IG51bGxwdHI7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggMTU1
NmZjMjk5Y2IyMzczYjBjNTk4OTUyMGE3MmMzMTE2Y2UzOWVhNS4uYzc1NjA1Njc3ZGRhNDYzZjNh
YTA2OTA4NDY2MDJmZmUyZTljNTdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVh
dG9yLmNwcApAQCAtMzksNyArMzksNyBAQCBGaWxlTGlzdENyZWF0b3I6On5GaWxlTGlzdENyZWF0
b3IoKQogICAgIEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGVyKTsKIH0KIAotc3RhdGljIHZvaWQg
YXBwZW5kRGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCitzdGF0aWMg
dm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgVmVjdG9yPFJl
ZjxGaWxlPj4mIGZpbGVPYmplY3RzKQogewogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDogRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShkaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShjaGlsZFBhdGgpOwpAQCAtNTEsMjIg
KzUxLDIyIEBAIHN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlCiAKICAgICAgICAgU3RyaW5nIGNoaWxk
UmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoICsgIi8iICsgRmlsZVN5c3RlbTo6cGF0aEdldEZp
bGVOYW1lKGNoaWxkUGF0aCk7CiAgICAgICAgIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0g
RmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpCi0gICAgICAgICAgICBhcHBlbmREaXJlY3Rv
cnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoLCBmaWxlT2JqZWN0cyk7CisgICAg
ICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhzZXNzaW9uSUQsIGNoaWxkUGF0aCwgY2hpbGRS
ZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0YWRhdGEudmFs
dWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKLSAgICAgICAgICAgIGZpbGVP
YmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNoaWxkUGF0aCwgY2hp
bGRSZWxhdGl2ZVBhdGgpKTsKKyAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpj
cmVhdGVXaXRoUmVsYXRpdmVQYXRoKHNlc3Npb25JRCwgY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZl
UGF0aCkpOwogICAgIH0KIH0KIAotRmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IoY29u
c3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVj
dG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKK0ZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRo
cywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoc2hvdWxkUmVz
b2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6Tm8pCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZUZpbGVMaXN0PFNob3VsZFJlc29sdmVEaXJlY3Rvcmll
czo6Tm8+KHBhdGhzKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZUZpbGVMaXN0
PFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6Tm8+KHNlc3Npb25JRCwgcGF0aHMpKTsKICAgICBl
bHNlIHsKICAgICAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBvbiBhIGJhY2tncm91bmQgdGhy
ZWFkIHRvIGF2b2lkIGJsb2NraW5nIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgbV9jb21wbGV0
aW9uSGFuZGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIG1fd29ya1F1
ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIkZpbGVMaXN0Q3JlYXRvciBXb3JrIFF1ZXVlIik7Ci0g
ICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBwYXRocyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBhdXRvIGZpbGVMaXN0ID0gY3JlYXRlRmlsZUxpc3Q8U2hvdWxkUmVzb2x2ZURp
cmVjdG9yaWVzOjpZZXM+KHBhdGhzKTsKKyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgcGF0aHMgPSBj
cm9zc1RocmVhZENvcHkocGF0aHMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBmaWxl
TGlzdCA9IGNyZWF0ZUZpbGVMaXN0PFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6WWVzPihzZXNz
aW9uSUQsIHBhdGhzKTsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmaWxlTGlzdCA9IFdURk1vdmUoZmls
ZUxpc3QpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRlcikpCiAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kZXIoV1RGTW92ZShmaWxlTGlzdCkpOwpAQCAtNzYsMTQgKzc2LDE0IEBA
IEZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3Nl
ckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsCiB9CiAKIHRlbXBsYXRlPEZpbGVMaXN0Q3JlYXRvcjo6
U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3Rvcmllcz4KLVJlZjxG
aWxlTGlzdD4gRmlsZUxpc3RDcmVhdG9yOjpjcmVhdGVGaWxlTGlzdChjb25zdCBWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQorUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6
OmNyZWF0ZUZpbGVMaXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPEZp
bGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocykKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxl
T2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewogICAgICAgICBpZiAoc2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6WWVzICYm
IEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OlNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZp
bGVzKGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZp
bGVPYmplY3RzKTsKKyAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKHNlc3Npb25JRCwg
aW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmlsZU9i
amVjdHMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmls
ZTo6Y3JlYXRlV2l0aE5hbWUoaW5mby5wYXRoLCBpbmZvLmRpc3BsYXlOYW1lKSk7CisgICAgICAg
ICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aE5hbWUoc2Vzc2lvbklELCBp
bmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEZpbGVMaXN0
OjpjcmVhdGUoV1RGTW92ZShmaWxlT2JqZWN0cykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxp
c3RDcmVhdG9yLmgKaW5kZXggMzFjNzRjZmYxZGEyNDM1MjUzNDAzM2M4MjM0MDFjNjY2ZTVmN2E4
ZC4uODYzNzU0M2EwNzc5N2MwODI5Nzc3ZTNmOTU0MGUzNDJiZjQ2N2ZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtMzgs
MTIgKzM5LDEyIEBAIGNsYXNzIEZpbGVMaXN0OwogCiBjbGFzcyBGaWxlTGlzdENyZWF0b3IgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RmlsZUxpc3RDcmVhdG9yPiB7CiBwdWJsaWM6Ci0g
ICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPEZpbGVM
aXN0PiYmKT47CisgICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKFJl
ZjxGaWxlTGlzdD4mJik+OwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXNvbHZlRGlyZWN0b3Jp
ZXMgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZjxGaWxlTGlzdENyZWF0b3I+IGNyZWF0ZShj
b25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGly
ZWN0b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHN0YXRpYyBSZWY8RmlsZUxpc3RDcmVhdG9yPiBjcmVhdGUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9y
aWVzLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZUxpc3RDcmVhdG9yKHBhdGhzLCBzaG91bGRSZXNv
bHZlRGlyZWN0b3JpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZpbGVMaXN0Q3JlYXRvcihzZXNzaW9uSUQsIHBhdGhzLCBzaG91
bGRSZXNvbHZlRGlyZWN0b3JpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAg
fQogCiAgICAgfkZpbGVMaXN0Q3JlYXRvcigpOwpAQCAtNTEsMTAgKzUyLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNhbmNlbCgpOwogCiBwcml2YXRlOgotICAgIEZpbGVMaXN0Q3JlYXRvcihjb25z
dCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXMsIENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIEZpbGVMaXN0Q3JlYXRvcihQQUw6OlNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxk
UmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHRlbXBsYXRl
PFNob3VsZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM+Ci0gICAg
c3RhdGljIFJlZjxGaWxlTGlzdD4gY3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+Jik7CisgICAgc3RhdGljIFJlZjxGaWxlTGlzdD4gY3JlYXRlRmlsZUxpc3Qo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpOwogCiAg
ICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgQ29tcGxldGlvbkhhbmRsZXIg
bV9jb21wbGV0aW9uSGFuZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwCmluZGV4IGZjZmE3ODRhMDVjZDUwNTViMThlMzZkYjU4OThiZTcwYWRmNzI2
MTEuLjI1MGZiNzc3NDUyODVkNWQ1Nzc0ODgzNmQ5NmE5NmZlNTE3NzEyMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI0Niw3ICsyNDYs
NyBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRo
RGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeQogICAgIGlmICghbWltZVR5cGVJc1N1aXRhYmxl
Rm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaG9zdEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSwgbWltZVR5cGUpKSk7CisgICAgaG9zdEVsZW1lbnQtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQoKS5zZXNz
aW9uSUQoKSwgV1RGTW92ZShkYXRhKSwgbWltZVR5cGUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXgg
MzRhOTMxMDQ4MDY5ZTA3MzFhOTgxMGQ0ZDJhYTUwZGNiOTdhN2NkOC4uYTliYjRmYjhlMDYzZTcw
MTVmMWE2NGU3ZDg2ZmViMzU4ZmZjMjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKQEAgLTczOSw3ICs3MzksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1M
Q2FudmFzRWxlbWVudDo6dG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJl
ZgogICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYjsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJs
b2JEYXRhID0gZGF0YSgqaW1hZ2VEYXRhLCBlbmNvZGluZ01JTUVUeXBlLCBxdWFsaXR5KTsKICAg
ICAgICAgaWYgKCFibG9iRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBibG9iID0gQmxvYjo6
Y3JlYXRlKFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKKyAgICAgICAgICAg
IGJsb2IgPSBCbG9iOjpjcmVhdGUoY29udGV4dC5zZXNzaW9uSUQoKSwgV1RGTW92ZShibG9iRGF0
YSksIGVuY29kaW5nTUlNRVR5cGUpOwogICAgICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFj
ayhjb250ZXh0LCBXVEZNb3ZlKGJsb2IpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBA
IC03NTAsNyArNzUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZhc0VsZW1lbnQ6OnRv
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKICAgICBSZWZQdHI8Qmxv
Yj4gYmxvYjsKICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkRhdGEgPSBidWZmZXIoKS0+dG9EYXRh
KGVuY29kaW5nTUlNRVR5cGUsIHF1YWxpdHkpOwogICAgIGlmICghYmxvYkRhdGEuaXNFbXB0eSgp
KQotICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGlu
Z01JTUVUeXBlKTsKKyAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZShjb250ZXh0LnNlc3Npb25J
RCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgY2FsbGJhY2st
PnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgV1RGTW92ZShibG9iKSk7CiAgICAgcmV0dXJuIHsg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBiOTdhOGQ1ZDRkNGU3
Y2U4NjhlZGI1M2FjMDU1NjBiZDNlMjk2NmRlLi40OGMwNzM0NzcwZWIxMTBjMWM1ZDg0NTNkZDA4
Nzk5MmU1NjQ5YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNzcy
LDcgKzM3NzIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogICAgIC8vIFRoaXMgZG9lcyB3
b3JrIG9ubHkgaWYgd2UgbWlzc2VkIGEgZHJhZ0VuZC4gRG8gaXQgYW55d2F5LCBqdXN0IHRvIG1h
a2Ugc3VyZSB0aGUgb2xkIGRhdGFUcmFuc2ZlciBnZXRzIG51bWJlZC4KICAgICBpbnZhbGlkYXRl
RGF0YVRyYW5zZmVyKCk7CiAKLSAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckRyYWcoKTsKKyAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIgPSBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKm1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgSGFz
Tm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA9IEhh
c05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6Tm87CiAgICAgCiAgICAgaWYgKGRyYWdTdGF0ZSgp
LnNob3VsZERpc3BhdGNoRXZlbnRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggMDQ2ZDEwNTFiOTcyYmM3OGRjYTdlNWQyMmYxNzgxZWNhNDVjMTg3YS4uZDIxY2VkNWVi
NGU3M2YxMTc4N2E1ZDY4ODQ4ZWQ1MTVmODljMWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtNDI1MSw3ICs0MjUxLDcgQEAgUmVmUHRyPEZpbGU+IEludGVybmFsczo6
Y3JlYXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgaWYgKCF1cmwuaXNMb2NhbEZpbGUo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKHVy
bC5maWxlU3lzdGVtUGF0aCgpKTsKKyAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGRvY3VtZW50LT5z
ZXNzaW9uSUQoKSwgdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogfQogCiB2b2lkIEludGVybmFsczo6
cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCA1NTQ0NTYxNWUwZTFlODFlY2Ex
NGI4MTZjM2U4ZTQ5MWI3MzdiM2Y0Li42ZTFiY2EzYTQ3ZmRkYTYxZmQ5ZmRhYmY3MThkYTQ0MmQ4
YmM1MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCBSZWY8RmV0Y2hFdmVudD4gU2VydmljZVdv
cmtlckludGVybmFsczo6Y3JlYXRlQmVpbmdEaXNwYXRjaGVkRmV0Y2hFdmVudChTY3JpcHRFeAog
CiBSZWY8RmV0Y2hSZXNwb25zZT4gU2VydmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlT3BhcXVl
V2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsK
LSAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoKTsKKyAgICBhdXRvIGJsb2IgPSBCbG9iOjpj
cmVhdGUoY29udGV4dC5zZXNzaW9uSUQoKSk7CiAgICAgYXV0byBmb3JtRGF0YSA9IEZvcm1EYXRh
OjpjcmVhdGUoKTsKICAgICBmb3JtRGF0YS0+YXBwZW5kQmxvYihibG9iLT51cmwoKSk7CiAKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIHJlc3BvbnNlLnNldFR5cGUoUmVzb3Vy
Y2VSZXNwb25zZTo6VHlwZTo6Q29ycyk7CiAgICAgcmVzcG9uc2Uuc2V0VGFpbnRpbmcoUmVzb3Vy
Y2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZSk7Ci0gICAgYXV0byBmZXRjaFJlc3BvbnNlID0g
RmV0Y2hSZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKGZv
cm1EYXRhKSwgRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2Up
KTsKKyAgICBhdXRvIGZldGNoUmVzcG9uc2UgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4
dCwgRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoY29udGV4dC5zZXNzaW9uSUQoKSwgZm9ybURhdGEp
LCBGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZSkpOwogICAg
IGZldGNoUmVzcG9uc2UtPmluaXRpYWxpemVPcGFxdWVMb2FkSWRlbnRpZmllckZvclRlc3Rpbmco
KTsKICAgICByZXR1cm4gZmV0Y2hSZXNwb25zZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBiMGVjOGRkZDg1NDRiYWZkMDU0ZjYzOWJiZGMxZjFi
ODhmOTdjNGQ5Li45Yjc3ZTJjNjEzYWFiMTlhOWVhNTdmNzE1Yzg1YzE0Y2JiYzhkNTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0xMjYsNiArMTI2
LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZGVudGlmaWVy
KCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyKys7IH0KIAorICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGJvb2wgaXNPbmxpbmUsIFdvcmtlclRocmVhZCYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Kiwg
U29ja2V0UHJvdmlkZXIqLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTE0OSw3ICsxNTEsNiBAQCBw
cml2YXRlOgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUq
Pih0aGlzKTsgfQogICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKLSAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Nlc3Npb25JRDsgfQogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgZmlu
YWw7CiAgICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggNDQ5NjlhZjA2ZjRmOGMx
ZTc3YTVjMWViYTlmZDRiMDIyM2EwNjdhMi4uMjBhMmFkYWYzNTYyZjk0YzZkY2IzN2I0MDg5ZTI0
ZjZkYjdkZmJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xNDksNyArMTQ5LDcg
QEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICBhdXRvKiBmb3JtRGF0YSA9IHJlcXVlc3Qu
aHR0cEJvZHkoKTsKICAgICBPcHRpb25hbDxGZXRjaEJvZHk+IGJvZHk7CiAgICAgaWYgKGZvcm1E
YXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvZHkgPSBGZXRjaEJvZHk6
OmZyb21Gb3JtRGF0YSgqZm9ybURhdGEpOworICAgICAgICBib2R5ID0gRmV0Y2hCb2R5Ojpmcm9t
Rm9ybURhdGEoZ2xvYmFsU2NvcGUuc2Vzc2lvbklEKCksICpmb3JtRGF0YSk7CiAgICAgICAgIGlm
ICghYm9keSkgewogICAgICAgICAgICAgY2xpZW50LT5kaWROb3RIYW5kbGUoKTsKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDA0Mjgw
MzM3ZjE4MWM2MDQ0MGE5MDU5YmMwYTI1ZDg1Y2UzZjA2ZGMuLmYwMTkzZDhjOTZlMzVjOWZmNzVl
NmE2M2EzNTBjNjU1ZGNhODYwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cApAQCAtMjEyLDcgKzIxMiw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVz
cG9uc2VCbG9iKCkKICAgICAgICAgZGF0YS5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PmRhdGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSk7CiAgICAgbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5
cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8g
cmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3Jy
ZWN0LgotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENv
bnRlbnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2Vzc2lvbklEKCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7
CiB9CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QXJyYXlCdWZmZXIoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>